diff --git a/civicrm.php b/civicrm.php index fd9c8d3dae0e73aa49a11d2dd8481b574fd73cca..62bb020b46cb3b4923f807377c7c49ca4a88fa23 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,7 +2,7 @@ /* Plugin Name: CiviCRM Description: CiviCRM - Growing and Sustaining Relationships -Version: 5.28.4 +Version: 5.29.0 Requires at least: 4.9 Requires PHP: 7.1 Author: CiviCRM LLC @@ -56,7 +56,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Set version here: when it changes, will force JS to reload -define( 'CIVICRM_PLUGIN_VERSION', '5.28.4' ); +define( 'CIVICRM_PLUGIN_VERSION', '5.29.0' ); // Store reference to this file if (!defined('CIVICRM_PLUGIN_FILE')) { @@ -387,6 +387,9 @@ class CiviCRM_For_WordPress { // Register all hooks on init add_action( 'init', array( $this, 'register_hooks' ) ); + // Filter Heartbeat on CiviCRM admin pages as late as is practical. + add_filter( 'heartbeat_settings', array( $this, 'heartbeat' ), 1000, 1 ); + /** * Broadcast that this plugin is now loaded. * @@ -444,6 +447,56 @@ class CiviCRM_For_WordPress { } + /** + * Slow down the frequency of WordPress heartbeat calls. + * + * Heartbeat is important to WordPress for a number of tasks - e.g. checking + * continued authentication whilst on a page - but it does consume server + * resources. Reducing the frequency of calls minimises the impact on servers + * and can make CiviCRM more responsive. + * + * @since 5.29 + * + * @param array $settings The existing heartbeat settings. + * @return array $settings The modified heartbeat settings. + */ + public function heartbeat( $settings ) { + + // Access script identifier. + global $pagenow; + + // Bail if not admin. + if (!is_admin()) { + return $settings; + } + + // Process the requested URL. + $requested_url = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL); + if ( $requested_url ) { + $current_url = wp_unslash($requested_url); + } else { + $current_url = admin_url(); + } + $current_screen = wp_parse_url($current_url); + + // Bail if this is not CiviCRM admin. + if ($pagenow != 'admin.php' || false === strpos($current_screen['query'], 'page=CiviCRM')) { + return $settings; + } + + // Defer to any previously set value, but only if it's greater than ours. + if (!empty($settings['interval']) && intval($settings['interval']) > 120) { + return $settings; + } + + // Slow down heartbeat. + $settings['interval'] = 120; + + return $settings; + + } + + /** * Set broad CiviCRM context. * diff --git a/civicrm/CRM/ACL/API.php b/civicrm/CRM/ACL/API.php index ba4991dc2de8d29fb8452427f29347a00458c064..17982fb7baa92c3cc9ded987094c8b501dc071e1 100644 --- a/civicrm/CRM/ACL/API.php +++ b/civicrm/CRM/ACL/API.php @@ -189,7 +189,7 @@ class CRM_ACL_API { } if (!$contactID) { - $contactID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $contactID = CRM_Core_Session::getLoggedInContactID(); } $key = "{$tableName}_{$type}_{$contactID}"; diff --git a/civicrm/CRM/ACL/BAO/ACL.php b/civicrm/CRM/ACL/BAO/ACL.php index 6b523272a351c283ecfe7023a588ce34d1d0957d..988340c94d42070611ab35d15ffbb2ff31057021 100644 --- a/civicrm/CRM/ACL/BAO/ACL.php +++ b/civicrm/CRM/ACL/BAO/ACL.php @@ -28,39 +28,6 @@ class CRM_ACL_BAO_ACL extends CRM_ACL_DAO_ACL { public static $_fieldKeys = NULL; - /** - * Get ACL entity table. - * @deprecated - * @return array|null - */ - public static function entityTable() { - CRM_Core_Error::deprecatedFunctionWarning('unused function to be removed'); - if (!self::$_entityTable) { - self::$_entityTable = [ - 'civicrm_contact' => ts('Contact'), - 'civicrm_acl_role' => ts('ACL Role'), - ]; - } - return self::$_entityTable; - } - - /** - * @return array|null - * @deprecated - */ - public static function objectTable() { - CRM_Core_Error::deprecatedFunctionWarning('unused function to be removed'); - if (!self::$_objectTable) { - self::$_objectTable = [ - 'civicrm_contact' => ts('Contact'), - 'civicrm_group' => ts('Group'), - 'civicrm_saved_search' => ts('Contact Group'), - 'civicrm_admin' => ts('Import'), - ]; - } - return self::$_objectTable; - } - /** * Available operations for pseudoconstant. * @@ -80,44 +47,6 @@ class CRM_ACL_BAO_ACL extends CRM_ACL_DAO_ACL { return self::$_operation; } - /** - * Given a table and id pair, return the filter clause - * - * @param string $table - * The table owning the object. - * @param int $id - * The ID of the object. - * @param array $tables - * Tables that will be needed in the FROM. - * @deprecated - * - * @return string|null - * WHERE-style clause to filter results, - * or null if $table or $id is null - * - * @throws \CRM_Core_Exception - */ - public static function getClause($table, $id, &$tables) { - CRM_Core_Error::deprecatedFunctionWarning('unused function to be removed'); - $table = CRM_Utils_Type::escape($table, 'String'); - $id = CRM_Utils_Type::escape($id, 'Integer'); - $whereTables = []; - - $ssTable = CRM_Contact_BAO_SavedSearch::getTableName(); - - if (empty($table)) { - return NULL; - } - elseif ($table == $ssTable) { - return CRM_Contact_BAO_SavedSearch::whereClause($id, $tables, $whereTables); - } - elseif (!empty($id)) { - $tables[$table] = TRUE; - return "$table.id = $id"; - } - return NULL; - } - /** * Construct an associative array of an ACL rule's properties * diff --git a/civicrm/CRM/ACL/Form/WordPress/Permissions.php b/civicrm/CRM/ACL/Form/WordPress/Permissions.php index de224f26a4b6f1005de758ec72b45d7365d8e44f..a59131ffebe6f321718413b16db1cc581d62d980 100644 --- a/civicrm/CRM/ACL/Form/WordPress/Permissions.php +++ b/civicrm/CRM/ACL/Form/WordPress/Permissions.php @@ -135,7 +135,7 @@ class CRM_ACL_Form_WordPress_Permissions extends CRM_Core_Form { } //Add the selected wordpress capabilities for the role - $rolePermissions = $params[$role]; + $rolePermissions = $params[$role] ?? []; if (!empty($rolePermissions)) { foreach ($rolePermissions as $key => $capability) { $roleObj->add_cap($key); diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php index cea9b5335563ab4345c81826129bf032bf8e8f11..3c8a0eb1551f2ee1c10baf75e16ccdfbd2b2d205 100644 --- a/civicrm/CRM/Activity/BAO/Activity.php +++ b/civicrm/CRM/Activity/BAO/Activity.php @@ -1783,16 +1783,14 @@ WHERE activity.id IN ($activityIds)"; * particular component object. * * @return string + * @throws \CRM_Core_Exception */ public static function getActivitySubject($entityObj) { + // @todo determine the subject on the appropriate entity rather than from the activity. switch ($entityObj->__table) { case 'civicrm_membership': - $membershipType = CRM_Member_PseudoConstant::membershipType($entityObj->membership_type_id); - $subject = $membershipType ? $membershipType : ts('Membership'); - - if (is_array($subject)) { - $subject = implode(", ", $subject); - } + $membershipType = CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'membership_type_id', $entityObj->membership_type_id); + $subject = $membershipType ?: ts('Membership'); if (!CRM_Utils_System::isNull($entityObj->source)) { $subject .= " - {$entityObj->source}"; @@ -1803,7 +1801,7 @@ WHERE activity.id IN ($activityIds)"; $subject .= sprintf(' (by %s)', $displayName); } - $subject .= " - Status: " . CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $entityObj->status_id, 'label'); + $subject .= ' - Status: ' . CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'status_id', $entityObj->status_id); return $subject; case 'civicrm_participant': @@ -2132,91 +2130,75 @@ AND cl.modified_id = c.id self::$_exportableFields[$name] = []; // TODO: ideally we should retrieve all fields from xml, in this case since activity processing is done - // my case hence we have defined fields as case_* - if ($name === 'Activity') { - $exportableFields = CRM_Activity_DAO_Activity::export(); - $exportableFields['source_contact_id'] = [ - 'title' => ts('Source Contact ID'), - 'type' => CRM_Utils_Type::T_INT, - ]; - $exportableFields['source_contact'] = [ - 'title' => ts('Source Contact'), + $exportableFields = CRM_Activity_DAO_Activity::export(); + $exportableFields['source_contact_id'] = [ + 'title' => ts('Source Contact ID'), + 'type' => CRM_Utils_Type::T_INT, + ]; + $exportableFields['source_contact'] = [ + 'title' => ts('Source Contact'), + 'type' => CRM_Utils_Type::T_STRING, + ]; + + // @todo - remove these - they are added by CRM_Core_DAO::appendPseudoConstantsToFields + // below. That search label stuff is referenced in search builder but is likely just + // a hack that duplicates, maybe differently, other functionality. + $activityFields = [ + 'activity_type' => [ + 'title' => ts('Activity Type'), + 'name' => 'activity_type', 'type' => CRM_Utils_Type::T_STRING, - ]; + 'searchByLabel' => TRUE, + ], + 'activity_status' => [ + 'title' => ts('Activity Status'), + 'name' => 'activity_status', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ], + 'activity_priority' => [ + 'title' => ts('Activity Priority'), + 'name' => 'activity_priority', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ], + ]; + $fields = array_merge($activityFields, $exportableFields); + $fields['activity_type_id']['title'] = ts('Activity Type ID'); + $fields['activity_priority_id'] = $fields['priority_id']; - // @todo - remove these - they are added by CRM_Core_DAO::appendPseudoConstantsToFields - // below. That search label stuff is referenced in search builder but is likely just - // a hack that duplicates, maybe differently, other functionality. - $Activityfields = [ - 'activity_type' => [ - 'title' => ts('Activity Type'), - 'name' => 'activity_type', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ], - 'activity_status' => [ - 'title' => ts('Activity Status'), - 'name' => 'activity_status', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ], - 'activity_priority' => [ - 'title' => ts('Activity Priority'), - 'name' => 'activity_priority', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ], - ]; - $fields = array_merge($Activityfields, $exportableFields); - $fields['activity_type_id']['title'] = ts('Activity Type ID'); - } - else { + if ($name === 'Case') { + // Now add "case_activity" fields // Set title to activity fields. - $fields = [ - 'case_activity_subject' => [ - 'title' => ts('Activity Subject'), - 'type' => CRM_Utils_Type::T_STRING, - ], + $caseActivityFields = [ 'case_source_contact_id' => [ 'title' => ts('Activity Reporter'), 'type' => CRM_Utils_Type::T_STRING, ], - 'case_recent_activity_date' => [ - 'title' => ts('Activity Actual Date'), + 'case_activity_date_time' => [ + 'title' => ts('Activity Date'), 'type' => CRM_Utils_Type::T_DATE, ], - 'case_scheduled_activity_date' => [ - 'title' => ts('Activity Scheduled Date'), - 'type' => CRM_Utils_Type::T_DATE, - ], - 'case_recent_activity_type' => [ + 'case_activity_type' => [ 'title' => ts('Activity Type'), 'type' => CRM_Utils_Type::T_STRING, ], - 'case_activity_status' => [ - 'title' => ts('Activity Status'), - 'type' => CRM_Utils_Type::T_STRING, - ], - 'case_activity_duration' => [ - 'title' => ts('Activity Duration'), - 'type' => CRM_Utils_Type::T_INT, - ], 'case_activity_medium_id' => [ 'title' => ts('Activity Medium'), 'type' => CRM_Utils_Type::T_INT, ], - 'case_activity_details' => [ - 'title' => ts('Activity Details'), - 'type' => CRM_Utils_Type::T_TEXT, - ], 'case_activity_is_auto' => [ 'title' => ts('Activity Auto-generated?'), 'type' => CRM_Utils_Type::T_BOOLEAN, ], ]; + $caseStandardFields = ['activity_subject', 'activity_status', 'activity_duration', 'activity_details']; + foreach ($caseStandardFields as $key) { + $caseActivityFields['case_' . $key] = $fields[$key]; + } + $fields = $caseActivityFields; } - - // add custom data for case activities + // Add custom data $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Activity')); CRM_Core_DAO::appendPseudoConstantsToFields($fields); self::$_exportableFields[$name] = $fields; @@ -2455,6 +2437,7 @@ INNER JOIN civicrm_option_group grp ON (grp.id = option_group_id AND grp.name = foreach ($types as $type) { $permittedActivityTypes[$type['activity_type_id']] = (int) $type['activity_type_id']; } + asort($permittedActivityTypes); Civi::$statics[__CLASS__]['permitted_activity_types'][$userID] = $permittedActivityTypes; } return Civi::$statics[__CLASS__]['permitted_activity_types'][$userID]; diff --git a/civicrm/CRM/Activity/BAO/Query.php b/civicrm/CRM/Activity/BAO/Query.php index c36e6829a7d16d5c3f93251a71e5e557b07783e3..20dd823853c06cb64948ad0acfe03f51c391d9be 100644 --- a/civicrm/CRM/Activity/BAO/Query.php +++ b/civicrm/CRM/Activity/BAO/Query.php @@ -272,7 +272,7 @@ class CRM_Activity_BAO_Query { $val = explode(',', $val); foreach ($val as $tId) { if (is_numeric($tId)) { - $value[$tId] = 1; + $value[] = $tId; } } } diff --git a/civicrm/CRM/Activity/Form/Search.php b/civicrm/CRM/Activity/Form/Search.php index 56035b42a19f34ec18ab749701177b4699ec73f5..bbda19840d875cfee59de38ebd655e02d4e6d7fa 100644 --- a/civicrm/CRM/Activity/Form/Search.php +++ b/civicrm/CRM/Activity/Form/Search.php @@ -182,8 +182,6 @@ class CRM_Activity_Form_Search extends CRM_Core_Form_Search { $this->_formValues["activity_test"] = 0; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Activity/Import/Form/DataSource.php b/civicrm/CRM/Activity/Import/Form/DataSource.php index 598951badc97fa7daee139ddc1094343e797ac04..c67c553230eb48308d3a643e25ad57eceadc34e1 100644 --- a/civicrm/CRM/Activity/Import/Form/DataSource.php +++ b/civicrm/CRM/Activity/Import/Form/DataSource.php @@ -31,20 +31,11 @@ class CRM_Activity_Import_Form_DataSource extends CRM_Import_Form_DataSource { parent::buildQuickForm(); // FIXME: This 'onDuplicate' form element is never used -- copy/paste error? - $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Skip'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Fill'), CRM_Import_Parser::DUPLICATE_FILL - ); - - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('On duplicate entries') - ); + $this->addRadio('onDuplicate', ts('On duplicate entries'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Skip'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update'), + CRM_Import_Parser::DUPLICATE_FILL => ts('Fill'), + ]); } /** diff --git a/civicrm/CRM/Activity/Page/AJAX.php b/civicrm/CRM/Activity/Page/AJAX.php index 1b07ef68a337d2b2a3ce04fe26976af24c76b431..65262d50f96fda6c3b6b53871aed2d2c86a6a2e9 100644 --- a/civicrm/CRM/Activity/Page/AJAX.php +++ b/civicrm/CRM/Activity/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -379,7 +378,7 @@ class CRM_Activity_Page_AJAX { /** * Get activities for the contact. * - * @return array + * @throws \CRM_Core_Exception */ public static function getContactActivity() { $requiredParameters = [ @@ -420,10 +419,10 @@ class CRM_Activity_Page_AJAX { unset($optionalParameters['context']); foreach ($optionalParameters as $searchField => $dataType) { $formSearchField = $searchField; - if ($searchField == 'activity_type_id') { + if ($searchField === 'activity_type_id') { $formSearchField = 'activity_type_filter_id'; } - elseif ($searchField == 'activity_type_exclude_id') { + elseif ($searchField === 'activity_type_exclude_id') { $formSearchField = 'activity_type_exclude_filter_id'; } if (!empty($params[$searchField])) { @@ -431,7 +430,7 @@ class CRM_Activity_Page_AJAX { if (in_array($searchField, ['activity_date_time_low', 'activity_date_time_high'])) { $activityFilter['activity_date_time_relative'] = 0; } - elseif ($searchField == 'activity_status_id') { + elseif ($searchField === 'activity_status_id') { $activityFilter['status_id'] = explode(',', $activityFilter[$searchField]); } } @@ -439,9 +438,6 @@ class CRM_Activity_Page_AJAX { Civi::contactSettings()->set('activity_tab_filter', $activityFilter); } - if (!empty($_GET['is_unit_test'])) { - return [$activities, $activityFilter]; - } CRM_Utils_JSON::output($activities); } diff --git a/civicrm/CRM/Admin/Form/Job.php b/civicrm/CRM/Admin/Form/Job.php index e304420e0cd232db2afe9a60e596163dda643b95..0f69059f7b3ec90eefc86173ac50b318b416f661 100644 --- a/civicrm/CRM/Admin/Form/Job.php +++ b/civicrm/CRM/Admin/Form/Job.php @@ -56,7 +56,7 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { } if ($this->_action & CRM_Core_Action::VIEW) { - $this->assign('jobName', self::getJobName($this->_id)); + $this->assign('jobName', self::getJobName($this->_id)); $this->addButtons([ [ 'type' => 'submit', @@ -70,7 +70,6 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { ]); return; } - $attributes = CRM_Core_DAO::getAttribute('CRM_Core_DAO_Job'); @@ -242,8 +241,7 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { // CRM-11143 - Give warning message if update_greetings is Enabled (is_active) since it generally should not be run automatically via execute action or runjobs url. if ($values['api_action'] == 'update_greeting' && CRM_Utils_Array::value('is_active', $values) == 1) { - // pass "wiki" as 6th param to docURL2 if you are linking to a page in wiki.civicrm.org - $docLink = CRM_Utils_System::docURL2("Managing Scheduled Jobs", NULL, NULL, NULL, NULL, "wiki"); + $docLink = CRM_Utils_System::docURL2("user/initial-set-up/scheduled-jobs/#job_update_greeting"); $msg = ts('The update greeting job can be very resource intensive and is typically not necessary to run on a regular basis. If you do choose to enable the job, we recommend you do not run it with the force=1 option, which would rebuild greetings on all records. Leaving that option absent, or setting it to force=0, will only rebuild greetings for contacts that do not currently have a value stored. %1', [1 => $docLink]); CRM_Core_Session::setStatus($msg, ts('Warning: Update Greeting job enabled'), 'alert'); } diff --git a/civicrm/CRM/Admin/Form/PaymentProcessor.php b/civicrm/CRM/Admin/Form/PaymentProcessor.php index 5b5e66958054665f343fc2b1ba897afef083a511..f72e2a91acedd19091c18ce9a55ed2eea4bce964 100644 --- a/civicrm/CRM/Admin/Form/PaymentProcessor.php +++ b/civicrm/CRM/Admin/Form/PaymentProcessor.php @@ -21,6 +21,16 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form { use CRM_Core_Form_EntityFormTrait; + /** + * @var int + * Test Payment Processor ID + */ + protected $_testID; + + /** + * @var \CRM_Core_DAO_PaymentProcessor + * Payment Processor DAO Object + */ protected $_paymentProcessorDAO; /** diff --git a/civicrm/CRM/Admin/Form/Setting/Localization.php b/civicrm/CRM/Admin/Form/Setting/Localization.php index 55bb965cf45d990934807d83a7c441e9aee92ae0..d33ebb369df1096f9e78358b8119c1438f0b516b 100644 --- a/civicrm/CRM/Admin/Form/Setting/Localization.php +++ b/civicrm/CRM/Admin/Form/Setting/Localization.php @@ -181,9 +181,8 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { // add a new db locale if the requested language is not yet supported by the db if (empty($values['makeSinglelingual']) && !empty($values['addLanguage'])) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if (!substr_count($domain->locales, $values['addLanguage'])) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!in_array($values['addLanguage'], $locales)) { CRM_Core_I18n_Schema::addLocale($values['addLanguage'], $values['lcMessages']); } $values['languageLimit'][$values['addLanguage']] = 1; @@ -276,22 +275,15 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { * @return array */ public static function getDefaultLocaleOptions() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $locales = CRM_Core_I18n::languages(); - if ($domain->locales) { + $locales = CRM_Core_I18n::getMultilingual(); + $languages = CRM_Core_I18n::languages(); + if ($locales) { // for multi-lingual sites, populate default language drop-down with available languages - $defaultLocaleOptions = []; - foreach ($locales as $loc => $lang) { - if (substr_count($domain->locales, $loc)) { - $defaultLocaleOptions[$loc] = $lang; - } - } + return array_intersect_key($languages, array_flip($locales)); } else { - $defaultLocaleOptions = $locales; + return $languages; } - return $defaultLocaleOptions; } /** @@ -333,8 +325,6 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { $ufm = new CRM_Core_DAO_UFMatch(); $ufm->contact_id = $session->get('userID'); if ($newLocale && $ufm->find(TRUE)) { - $ufm->language = $newLocale; - $ufm->save(); $session->set('lcMessages', $newLocale); } } diff --git a/civicrm/CRM/Admin/Form/Setting/Mail.php b/civicrm/CRM/Admin/Form/Setting/Mail.php index 2d16958f04df2ee8ac5aca413357d766e84199dc..eb99863fc4c1492025bae68ff32f837ee7dd608b 100644 --- a/civicrm/CRM/Admin/Form/Setting/Mail.php +++ b/civicrm/CRM/Admin/Form/Setting/Mail.php @@ -26,6 +26,8 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { 'mailerJobSize' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mailerJobsMax' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'verpSeparator' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, + // dev/core#1768 Make this interval configurable. + 'civimail_sync_interval' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'replyTo' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, ]; @@ -35,7 +37,6 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { public function buildQuickForm() { CRM_Utils_System::setTitle(ts('Settings - CiviMail')); $this->addFormRule(['CRM_Admin_Form_Setting_Mail', 'formRule']); - parent::buildQuickForm(); } @@ -46,7 +47,6 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { */ public static function formRule($fields) { $errors = []; - if (CRM_Utils_Array::value('mailerJobSize', $fields) > 0) { if (CRM_Utils_Array::value('mailerJobSize', $fields) < 1000) { $errors['mailerJobSize'] = ts('The job size must be at least 1000 or set to 0 (unlimited).'); @@ -57,7 +57,10 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { $errors['mailerJobSize'] = ts('A job size smaller than the batch limit will negate the effect of the batch limit.'); } } - + // dev/core#1768 Check the civimail_sync_interval setting. + if (CRM_Utils_Array::value('civimail_sync_interval', $fields) < 1) { + $errors['civimail_sync_interval'] = ts('Error - the synchronization interval must be at least 1'); + } return empty($errors) ? TRUE : $errors; } diff --git a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php index bfc248663a5880c93c2cde6edad2b04f5ee69f28..94fce1edafdff58da5ca2cb6993643475da581ea 100644 --- a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php +++ b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php @@ -75,6 +75,8 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting { CRM_Utils_System::setTitle(ts('Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)')); $this->assign('validTriggerPermission', CRM_Core_DAO::checkTriggerViewPermission(FALSE)); + // dev/core#1812 Assign multilingual status. + $this->assign('isMultilingual', CRM_Core_I18n::isMultilingual()); $this->addFormRule(['CRM_Admin_Form_Setting_Miscellaneous', 'formRule'], $this); diff --git a/civicrm/CRM/Admin/Page/Job.php b/civicrm/CRM/Admin/Page/Job.php index e8ba06d9d549feddc6523d1bfb01834c7c1a3b4c..2164d2b7cefa57fd7c6531b9b6243d2933abf7cd 100644 --- a/civicrm/CRM/Admin/Page/Job.php +++ b/civicrm/CRM/Admin/Page/Job.php @@ -142,6 +142,17 @@ class CRM_Admin_Page_Job extends CRM_Core_Page_Basic { if (CRM_Core_Config::environment() != 'Production') { CRM_Core_Session::setStatus(ts('Execution of scheduled jobs has been turned off by default since this is a non-production environment. You can override this for particular jobs by adding runInNonProductionEnvironment=TRUE as a parameter.'), ts("Non-production Environment"), "warning", array('expires' => 0)); } + else { + $cronError = Civi\Api4\System::check(FALSE) + ->addWhere('name', '=', 'checkLastCron') + ->addWhere('severity_id', '>', 1) + ->setIncludeDisabled(TRUE) + ->execute() + ->first(); + if ($cronError) { + CRM_Core_Session::setStatus($cronError['message'], $cronError['title'], 'alert', ['expires' => 0]); + } + } $sj = new CRM_Core_JobManager(); $rows = $temp = []; diff --git a/civicrm/CRM/Badge/BAO/Badge.php b/civicrm/CRM/Badge/BAO/Badge.php index 5dc49c849d62045ae03163bc2ae8942b1ce9f501..fc98961f7a57b213d0e76d9ab81633bb99618648 100644 --- a/civicrm/CRM/Badge/BAO/Badge.php +++ b/civicrm/CRM/Badge/BAO/Badge.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Badge/Page/AJAX.php b/civicrm/CRM/Badge/Page/AJAX.php index 77049368e1f0ef97286397ef682cb7485411a613..d1d0ee456395a733da49dfcce1a3b5e4b019ac08 100644 --- a/civicrm/CRM/Badge/Page/AJAX.php +++ b/civicrm/CRM/Badge/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Badge_Page_AJAX { diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php index 8a29ee97b684c1723ce07cf3ea8a285eb38f371b..e2d4d6ff028299ed9aa4348382ef5f54514efd32 100644 --- a/civicrm/CRM/Campaign/Page/AJAX.php +++ b/civicrm/CRM/Campaign/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Case/BAO/Query.php b/civicrm/CRM/Case/BAO/Query.php index 71a5e0f1473f5d564daed5b428fd74b68bb765d2..6958dc66740d48098149e40dceb22adba2d16b0c 100644 --- a/civicrm/CRM/Case/BAO/Query.php +++ b/civicrm/CRM/Case/BAO/Query.php @@ -100,9 +100,9 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['case_relation_type'] = $query->_whereTables['case_relation_type'] = 1; } - if (!empty($query->_returnProperties['case_recent_activity_date'])) { - $query->_select['case_recent_activity_date'] = "case_activity.activity_date_time as case_recent_activity_date"; - $query->_element['case_recent_activity_date'] = 1; + if (!empty($query->_returnProperties['case_activity_date_time'])) { + $query->_select['case_activity_date_time'] = "case_activity.activity_date_time as case_activity_date_time"; + $query->_element['case_activity_date_time'] = 1; $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; } @@ -121,6 +121,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['civicrm_case'] = 1; } + // @todo switch to a more standard case_source_contact as the key where we want the name not the id. if (!empty($query->_returnProperties['case_source_contact_id'])) { $query->_select['case_source_contact_id'] = "civicrm_case_reporter.sort_name as case_source_contact_id"; $query->_element['case_source_contact_id'] = 1; @@ -134,7 +135,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_select['case_activity_status_id'] = "rec_activity_status.id as case_activity_status_id"; $query->_element['case_activity_status_id'] = 1; $query->_tables['case_activity'] = 1; - $query->_tables['recent_activity_status'] = 1; + $query->_tables['case_activity_status'] = 1; $query->_tables['civicrm_case_contact'] = 1; $query->_tables['civicrm_case'] = 1; } @@ -143,7 +144,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_select['case_activity_status'] = "rec_activity_status.label as case_activity_status"; $query->_element['case_activity_status'] = 1; $query->_tables['case_activity'] = 1; - $query->_tables['recent_activity_status'] = 1; + $query->_tables['case_activity_status'] = 1; $query->_tables['civicrm_case_contact'] = 1; $query->_tables['civicrm_case'] = 1; } @@ -157,7 +158,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { } if (!empty($query->_returnProperties['case_activity_medium_id'])) { - $query->_select['case_activity_medium_id'] = "recent_activity_medium.label as case_activity_medium_id"; + $query->_select['case_activity_medium_id'] = "case_activity_medium.label as case_activity_medium_id"; $query->_element['case_activity_medium_id'] = 1; $query->_tables['case_activity'] = 1; $query->_tables['case_activity_medium'] = 1; @@ -181,16 +182,16 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['civicrm_case'] = 1; } - if (!empty($query->_returnProperties['case_scheduled_activity_date'])) { - $query->_select['case_scheduled_activity_date'] = "case_activity.activity_date_time as case_scheduled_activity_date"; - $query->_element['case_scheduled_activity_date'] = 1; + if (!empty($query->_returnProperties['case_activity_date_time'])) { + $query->_select['case_activity_date_time'] = "case_activity.activity_date_time as case_activity_date_time"; + $query->_element['case_activity_date_time'] = 1; $query->_tables['case_activity'] = 1; $query->_tables['civicrm_case_contact'] = 1; $query->_tables['civicrm_case'] = 1; } - if (!empty($query->_returnProperties['case_recent_activity_type'])) { - $query->_select['case_recent_activity_type'] = "rec_activity_type.label as case_recent_activity_type"; - $query->_element['case_recent_activity_type'] = 1; + if (!empty($query->_returnProperties['case_activity_type'])) { + $query->_select['case_activity_type'] = "rec_activity_type.label as case_activity_type"; + $query->_element['case_activity_type'] = 1; $query->_tables['case_activity'] = 1; $query->_tables['case_activity_type'] = 1; $query->_tables['civicrm_case_contact'] = 1; @@ -320,6 +321,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->handleWhereFromMetadata($fieldSpec, $name, $value, $op); return; + // @todo switch to a more standard case_source_contact as the key where we want the name not the id. case 'case_source_contact_id': $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_case_reporter.sort_name", $op, $value, 'String'); $query->_qill[$grouping][] = ts("Activity Reporter %1 '%2'", [1 => $op, 2 => $value]); @@ -329,31 +331,19 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1; return; - case 'case_recent_activity_date': + case 'case_activity_date_time': $date = CRM_Utils_Date::format($value); $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("case_activity.activity_date_time", $op, $date, 'Date'); if ($date) { $date = CRM_Utils_Date::customFormat($date); - $query->_qill[$grouping][] = ts("Activity Actual Date %1 %2", [1 => $op, 2 => $date]); + $query->_qill[$grouping][] = ts("Activity Date %1 %2", [1 => $op, 2 => $date]); } $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1; return; - case 'case_scheduled_activity_date': - $date = CRM_Utils_Date::format($value); - $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("case_activity.activity_date_time", $op, $date, 'Date'); - if ($date) { - $date = CRM_Utils_Date::customFormat($date); - $query->_qill[$grouping][] = ts("Activity Schedule Date %1 %2", [1 => $op, 2 => $date]); - } - $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; - $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; - $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1; - return; - - case 'case_recent_activity_type': + case 'case_activity_type': $names = $value; if (($activityType = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'activity_type_id', $value)) != FALSE) { $names = $activityType; @@ -374,7 +364,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { } $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("case_activity.status_id", $op, $value, 'Int'); - $query->_qill[$grouping][] = ts("Activity Type %1 %2", [1 => $op, 2 => $names]); + $query->_qill[$grouping][] = ts("Activity Status %1 %2", [1 => $op, 2 => $names]); $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; $query->_tables['case_activity_status'] = 1; @@ -537,7 +527,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $from .= " $side JOIN civicrm_option_value rec_activity_type ON (case_activity.activity_type_id = rec_activity_type.value AND option_group_activity_type.id = rec_activity_type.option_group_id ) "; break; - case 'recent_activity_status': + case 'case_activity_status': $from .= " $side JOIN civicrm_option_group option_group_activity_status ON (option_group_activity_status.name = 'activity_status')"; $from .= " $side JOIN civicrm_option_value rec_activity_status ON (case_activity.status_id = rec_activity_status.value AND option_group_activity_status.id = rec_activity_status.option_group_id ) "; break; @@ -555,7 +545,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; case 'case_activity_medium': $from .= " $side JOIN civicrm_option_group option_group_activity_medium ON (option_group_activity_medium.name = 'encounter_medium')"; - $from .= " $side JOIN civicrm_option_value recent_activity_medium ON (case_activity.medium_id = recent_activity_medium.value AND option_group_activity_medium.id = recent_activity_medium.option_group_id ) "; + $from .= " $side JOIN civicrm_option_value case_activity_medium ON (case_activity.medium_id = case_activity_medium.value AND option_group_activity_medium.id = case_activity_medium.option_group_id ) "; break; case 'case_activity': @@ -607,11 +597,9 @@ case_relation_type.id = case_relationship.relationship_type_id )"; 'case_type' => 1, 'case_role' => 1, 'case_deleted' => 1, - 'case_recent_activity_date' => 1, - 'case_recent_activity_type' => 1, - 'case_scheduled_activity_date' => 1, + 'case_activity_date_time' => 1, + 'case_activity_type' => 1, 'phone' => 1, - // 'case_scheduled_activity_type'=> 1 ]; if ($includeCustomFields) { @@ -643,6 +631,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; 'case_start_date' => 1, 'case_end_date' => 1, 'case_subject' => 1, + // @todo switch to a more standard case_source_contact as the key where we want the name not the id. 'case_source_contact_id' => 1, 'case_activity_status' => 1, 'case_activity_duration' => 1, diff --git a/civicrm/CRM/Case/Form/ActivityToCase.php b/civicrm/CRM/Case/Form/ActivityToCase.php index 6611302e275b159cff745f995c7ef53077d551b7..e591c8405afaa1643e9115c4d6e9120499013c79 100644 --- a/civicrm/CRM/Case/Form/ActivityToCase.php +++ b/civicrm/CRM/Case/Form/ActivityToCase.php @@ -60,7 +60,7 @@ class CRM_Case_Form_ActivityToCase extends CRM_Core_Form { $params = ['id' => $this->_activityId]; CRM_Activity_BAO_Activity::retrieve($params, $defaults); - $defaults['file_on_case_activity_subject'] = $defaults['subject']; + $defaults['file_on_case_activity_subject'] = $defaults['subject'] ?? ''; $defaults['file_on_case_target_contact_id'] = $defaults['target_contact']; // If this contact has an open case, supply it as a default diff --git a/civicrm/CRM/Case/Form/Search.php b/civicrm/CRM/Case/Form/Search.php index 8d971a851f759569eb4114e0d939ac9fc5218400..b22ab8c08e97dbbb8884affb03d974a3c61c8eec 100644 --- a/civicrm/CRM/Case/Form/Search.php +++ b/civicrm/CRM/Case/Form/Search.php @@ -202,8 +202,6 @@ class CRM_Case_Form_Search extends CRM_Core_Form_Search { if (empty($this->_formValues['case_deleted'])) { $this->_formValues['case_deleted'] = 0; } - // @todo - stop changing formValues - respect submitted form values, change a working array. - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); // @todo - stop changing formValues - respect submitted form values, change a working array. $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); diff --git a/civicrm/CRM/Case/Info.php b/civicrm/CRM/Case/Info.php index bf9d4adca5d870e14a1dad5e104b0320f3d828f2..ef3bcb41df2d32d9b7f007951dae01379a72665c 100644 --- a/civicrm/CRM/Case/Info.php +++ b/civicrm/CRM/Case/Info.php @@ -255,12 +255,10 @@ class CRM_Case_Info extends CRM_Core_Component_Info { $dao = new CRM_Core_DAO(); $db = $dao->getDatabaseConnection(); - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $multiLingual = (bool) $domain->locales; + $locales = CRM_Core_I18n::getMultilingual(); $smarty = CRM_Core_Smarty::singleton(); - $smarty->assign('multilingual', $multiLingual); - $smarty->assign('locales', explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales)); + $smarty->assign('multilingual', (bool) $locales); + $smarty->assign('locales', $locales); if (!$lineMode) { diff --git a/civicrm/CRM/Case/Page/AJAX.php b/civicrm/CRM/Case/Page/AJAX.php index abf2858d8778ec34490f7f024b227c0676f7e3db..09ed2df5bed0e562a234d3160ba1289795a35d74 100644 --- a/civicrm/CRM/Case/Page/AJAX.php +++ b/civicrm/CRM/Case/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Case/XMLProcessor/Process.php b/civicrm/CRM/Case/XMLProcessor/Process.php index 3ee34f9987cef70d336fefed4a4248d3dfddb675..3a75649f0bfdc84d0612027f6b113d81fe3c279d 100644 --- a/civicrm/CRM/Case/XMLProcessor/Process.php +++ b/civicrm/CRM/Case/XMLProcessor/Process.php @@ -465,7 +465,7 @@ AND a.is_deleted = 0 ]; } - $activityParams['assignee_contact_id'] = $this->getDefaultAssigneeForActivity($activityParams, $activityTypeXML); + $activityParams['assignee_contact_id'] = $this->getDefaultAssigneeForActivity($activityParams, $activityTypeXML, $params['caseID']); //parsing date to default preference format $params['activity_date_time'] = CRM_Utils_Date::processDate($params['activity_date_time']); @@ -565,10 +565,11 @@ AND a.is_deleted = 0 * * @param array $activityParams * @param object $activityTypeXML + * @param int $caseId * * @return int|null the ID of the default assignee contact or null if none. */ - protected function getDefaultAssigneeForActivity($activityParams, $activityTypeXML) { + protected function getDefaultAssigneeForActivity($activityParams, $activityTypeXML, $caseId) { if (!isset($activityTypeXML->default_assignee_type)) { return NULL; } @@ -577,7 +578,7 @@ AND a.is_deleted = 0 switch ($activityTypeXML->default_assignee_type) { case $defaultAssigneeOptionsValues['BY_RELATIONSHIP']: - return $this->getDefaultAssigneeByRelationship($activityParams, $activityTypeXML); + return $this->getDefaultAssigneeByRelationship($activityParams, $activityTypeXML, $caseId); break; case $defaultAssigneeOptionsValues['SPECIFIC_CONTACT']: @@ -622,10 +623,11 @@ AND a.is_deleted = 0 * * @param array $activityParams * @param object $activityTypeXML + * @param int $caseId * * @return int|null the ID of the default assignee contact or null if none. */ - protected function getDefaultAssigneeByRelationship($activityParams, $activityTypeXML) { + protected function getDefaultAssigneeByRelationship($activityParams, $activityTypeXML, $caseId) { $isDefaultRelationshipDefined = isset($activityTypeXML->default_assignee_relationship) && preg_match('/\d+_[ab]_[ab]/', $activityTypeXML->default_assignee_relationship); @@ -642,6 +644,8 @@ AND a.is_deleted = 0 'relationship_type_id' => $relTypeId, "contact_id_$b" => $targetContactId, 'is_active' => 1, + 'case_id' => $caseId, + 'options' => ['limit' => 1], ]; if ($this->isBidirectionalRelationshipType($relTypeId)) { @@ -650,6 +654,10 @@ AND a.is_deleted = 0 } $relationships = civicrm_api3('Relationship', 'get', $params); + if (empty($relationships['count'])) { + $params['case_id'] = ['IS NULL' => 1]; + $relationships = civicrm_api3('Relationship', 'get', $params); + } if ($relationships['count']) { $relationship = CRM_Utils_Array::first($relationships['values']); diff --git a/civicrm/CRM/Case/XMLRepository.php b/civicrm/CRM/Case/XMLRepository.php index 8e1853bd59ab750c75893ca54476b4e16b7397b6..9317db9b23ff39b9716dd18ad5951349e165d4a4 100644 --- a/civicrm/CRM/Case/XMLRepository.php +++ b/civicrm/CRM/Case/XMLRepository.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * The XMLRepository is responsible for loading XML for case-types. * It includes any bulk operations that apply across the list of all XML * documents of all case-types. diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index 2bb378d1d365ccb0f3de4ea418d8555e31c3a4fa..6a105253d665f68107de1880df9d89d613b19ada 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -27,12 +27,12 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact { const DROP_STRIP_FUNCTION_43 = "DROP FUNCTION IF EXISTS civicrm_strip_non_numeric"; const CREATE_STRIP_FUNCTION_43 = " - CREATE FUNCTION civicrm_strip_non_numeric(input VARCHAR(255) CHARACTER SET utf8) - RETURNS VARCHAR(255) CHARACTER SET utf8 + CREATE FUNCTION civicrm_strip_non_numeric(input VARCHAR(255)) + RETURNS VARCHAR(255) DETERMINISTIC NO SQL BEGIN - DECLARE output VARCHAR(255) CHARACTER SET utf8 DEFAULT ''; + DECLARE output VARCHAR(255) DEFAULT ''; DECLARE iterator INT DEFAULT 1; WHILE iterator < (LENGTH(input) + 1) DO IF SUBSTRING(input, iterator, 1) IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9') THEN @@ -304,7 +304,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact { } } - if (array_key_exists('group', $params)) { + if (!empty($params['group'])) { $contactIds = [$params['contact_id']]; foreach ($params['group'] as $groupId => $flag) { if ($flag == 1) { @@ -1958,10 +1958,14 @@ ORDER BY civicrm_email.is_primary DESC"; * * @return int * contact id created/edited + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception + * @throws \Civi\API\Exception\UnauthorizedException */ public static function createProfileContact( &$params, - &$fields = [], + $fields = [], $contactID = NULL, $addToGroupID = NULL, $ufGroupId = NULL, @@ -2021,7 +2025,7 @@ ORDER BY civicrm_email.is_primary DESC"; } // Process group and tag - if (!empty($fields['group'])) { + if (isset($params['group'])) { $method = 'Admin'; // this for sure means we are coming in via profile since i added it to fix // removing contacts from user groups -- lobo @@ -2049,8 +2053,6 @@ ORDER BY civicrm_email.is_primary DESC"; CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $addToGroupID); } - CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush(); - if ($editHook) { CRM_Utils_Hook::post('edit', 'Profile', $contactID, $params); } @@ -3401,15 +3403,6 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id ) * @see CRM_Core_DAO::triggerRebuild */ public static function triggerInfo(&$info, $tableName = NULL) { - //during upgrade, first check for valid version and then create triggers - //i.e the columns created_date and modified_date are introduced in 4.3.alpha1 so dont create triggers for older version - if (CRM_Core_Config::isUpgradeMode()) { - $currentVer = CRM_Core_BAO_Domain::version(TRUE); - //if current version is less than 4.3.alpha1 dont create below triggers - if (version_compare($currentVer, '4.3.alpha1') < 0) { - return; - } - } // Modifications to these records should update the contact timestamps. \Civi\Core\SqlTrigger\TimestampTriggers::create('civicrm_contact', 'Contact') diff --git a/civicrm/CRM/Contact/BAO/Contact/Permission.php b/civicrm/CRM/Contact/BAO/Contact/Permission.php index 964fc47295c245859ff2242eeb7d324301ac8770..1aae3cea9a7d54ad6f626ebe88f3a5d375454ae4 100644 --- a/civicrm/CRM/Contact/BAO/Contact/Permission.php +++ b/civicrm/CRM/Contact/BAO/Contact/Permission.php @@ -307,17 +307,16 @@ AND $operationClause if (CRM_Core_Permission::check('view all contacts') || CRM_Core_Permission::check('edit all contacts') ) { - if (is_array($contactAlias)) { + if (!CRM_Core_Permission::check('access deleted contacts')) { $wheres = []; - foreach ($contactAlias as $alias) { + foreach ((array) $contactAlias as $alias) { // CRM-6181 $wheres[] = "$alias.is_deleted = 0"; } return [NULL, '(' . implode(' AND ', $wheres) . ')']; } else { - // CRM-6181 - return [NULL, "$contactAlias.is_deleted = 0"]; + return [NULL, '( 1 )']; } } @@ -332,14 +331,17 @@ AND $operationClause } $fromClause = implode(" ", $clauses); - $whereClase = NULL; + $whereClause = NULL; } else { $fromClause = " INNER JOIN civicrm_acl_contact_cache aclContactCache ON {$contactAlias}.id = aclContactCache.contact_id "; - $whereClase = " aclContactCache.user_id = $contactID AND $contactAlias.is_deleted = 0"; + $whereClause = " aclContactCache.user_id = $contactID"; + if (!CRM_Core_Permission::check('access deleted contacts')) { + $whereClause .= " AND $contactAlias.is_deleted = 0"; + } } - return [$fromClause, $whereClase]; + return [$fromClause, $whereClause]; } /** diff --git a/civicrm/CRM/Contact/BAO/ContactType.php b/civicrm/CRM/Contact/BAO/ContactType.php index b356a39616edcc2146ad02fa5b23772986384fbe..4284efa467c118c03dc8eac2e2887a8030f6fe0e 100644 --- a/civicrm/CRM/Contact/BAO/ContactType.php +++ b/civicrm/CRM/Contact/BAO/ContactType.php @@ -67,7 +67,7 @@ class CRM_Contact_BAO_ContactType extends CRM_Contact_DAO_ContactType { public static function basicTypeInfo($includeInactive = FALSE) { $cacheKey = 'CRM_CT_BTI_' . (int) $includeInactive; if (!Civi::cache('contactTypes')->has($cacheKey)) { - $contactType = ContactType::get()->setCheckPermissions(FALSE)->setSelect(['*'])->addWhere('parent_id', 'IS NULL'); + $contactType = ContactType::get(FALSE)->setSelect(['*'])->addWhere('parent_id', 'IS NULL'); if ($includeInactive === FALSE) { $contactType->addWhere('is_active', '=', 1); } @@ -887,7 +887,7 @@ WHERE ($subtypeClause)"; */ protected static function getAllContactTypes() { if (!Civi::cache('contactTypes')->has('all')) { - $contactTypes = (array) ContactType::get()->setCheckPermissions(FALSE) + $contactTypes = (array) ContactType::get(FALSE) ->setSelect(['id', 'name', 'label', 'description', 'is_active', 'is_reserved', 'image_URL', 'parent_id', 'parent_id:name', 'parent_id:label']) ->execute()->indexBy('name'); diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 8ce1289fae26a7a22a2aeef09ebfb4529566f03e..fae22f03b84459168faa82e47e6bf04c19058f53 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -1055,7 +1055,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $groups = []; $args = [1 => [$groupIdString, 'String']]; $query = " -SELECT id, title, description, visibility, parents +SELECT id, title, description, visibility, parents, saved_search_id FROM civicrm_group WHERE id IN $groupIdString "; @@ -1081,7 +1081,7 @@ WHERE id IN $groupIdString $parent = self::filterActiveGroups($parentArray); $tree[$parent][] = [ 'id' => $dao->id, - 'title' => $dao->title, + 'title' => empty($dao->saved_search_id) ? $dao->title : '* ' . $dao->title, 'visibility' => $dao->visibility, 'description' => $dao->description, ]; @@ -1089,7 +1089,7 @@ WHERE id IN $groupIdString else { $roots[] = [ 'id' => $dao->id, - 'title' => $dao->title, + 'title' => empty($dao->saved_search_id) ? $dao->title : '* ' . $dao->title, 'visibility' => $dao->visibility, 'description' => $dao->description, ]; @@ -1100,6 +1100,7 @@ WHERE id IN $groupIdString for ($i = 0; $i < count($roots); $i++) { self::buildGroupHierarchy($hierarchy, $roots[$i], $tree, $titleOnly, $spacer, 0); } + return $hierarchy; } @@ -1122,8 +1123,9 @@ WHERE id IN $groupIdString $hierarchy[$group['id']] = $spaces . $group['title']; } else { - $hierarchy[$group['id']] = [ - 'title' => $spaces . $group['title'], + $hierarchy[] = [ + 'id' => $group['id'], + 'text' => $spaces . $group['title'], 'description' => $group['description'], 'visibility' => $group['visibility'], ]; diff --git a/civicrm/CRM/Contact/BAO/GroupContact.php b/civicrm/CRM/Contact/BAO/GroupContact.php index 9058101d05165675a6ff8c4e39ec8c6559218082..8e44e6aa40068b455499651adbddb5a7821024fe 100644 --- a/civicrm/CRM/Contact/BAO/GroupContact.php +++ b/civicrm/CRM/Contact/BAO/GroupContact.php @@ -487,27 +487,23 @@ SELECT * } /** - * Takes an associative array and creates / removes - * contacts from the groups + * Creates / removes contacts from the groups * + * FIXME: Nonstandard create function; only called from CRM_Contact_BAO_Contact::createProfileContact * * @param array $params - * (reference ) an assoc array of name/value pairs. - * @param array $contactId + * Name/value pairs. + * @param int $contactId * Contact id. * - * @param bool $visibility + * @param bool $ignorePermission + * if ignorePermission is true we are coming in via profile mean $method = 'Web' + * * @param string $method */ - public static function create(&$params, $contactId, $visibility = FALSE, $method = 'Admin') { - $contactIds = []; - $contactIds[] = $contactId; - - //if $visibility is true we are coming in via profile mean $method = 'Web' - $ignorePermission = FALSE; - if ($visibility) { - $ignorePermission = TRUE; - } + public static function create($params, $contactId, $ignorePermission = FALSE, $method = 'Admin') { + $contactIds = [$contactId]; + $contactGroup = []; if ($contactId) { $contactGroupList = CRM_Contact_BAO_GroupContact::getContactGroup($contactId, 'Added', @@ -522,18 +518,13 @@ SELECT * } // get the list of all the groups - $allGroup = CRM_Contact_BAO_GroupContact::getGroupList(0, $visibility); + $allGroup = CRM_Contact_BAO_GroupContact::getGroupList(0, $ignorePermission); // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input if (!is_array($params)) { $params = []; } - // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input - if (!isset($contactGroup) || !is_array($contactGroup)) { - $contactGroup = []; - } - // check which values has to be add/remove contact from group foreach ($allGroup as $key => $varValue) { if (!empty($params[$key]) && !array_key_exists($key, $contactGroup)) { diff --git a/civicrm/CRM/Contact/BAO/GroupContactCache.php b/civicrm/CRM/Contact/BAO/GroupContactCache.php index 8b9487b858c890dbf128e2d47e11224b3e954665..d4700184f81b9c8747df1e605611c459e1d50375 100644 --- a/civicrm/CRM/Contact/BAO/GroupContactCache.php +++ b/civicrm/CRM/Contact/BAO/GroupContactCache.php @@ -314,36 +314,19 @@ WHERE id IN ( $groupIDs ) return; } $params = [1 => [self::getCacheInvalidDateTime(), 'String']]; - // @todo this is consistent with previous behaviour but as the first query could take several seconds the second - // could become inaccurate. It seems to make more sense to fetch them first & delete from an array (which would - // also reduce joins). If we do this we should also consider how best to iterate the groups. If we do them one at - // a time we could call a hook, allowing people to manage the frequency on their groups, or possibly custom searches - // might do that too. However, for 2000 groups that's 2000 iterations. If we do all once we potentially create a - // slow query. It's worth noting the speed issue generally relates to the size of the group but if one slow group - // is in a query with 500 fast ones all 500 get locked. One approach might be to calculate group size or the - // number of groups & then process all at once or many query runs depending on what is found. Of course those - // preliminary queries would need speed testing. - CRM_Core_DAO::executeQuery( - " - DELETE gc - FROM civicrm_group_contact_cache gc - INNER JOIN civicrm_group g ON g.id = gc.group_id - WHERE g.cache_date <= %1 - ", - $params - ); + $groupsDAO = CRM_Core_DAO::executeQuery("SELECT id FROM civicrm_group WHERE cache_date <= %1", $params); + $expiredGroups = []; + while ($groupsDAO->fetch()) { + $expiredGroups[] = $groupsDAO->id; + } + if (!empty($expiredGroups)) { + $expiredGroups = implode(',', $expiredGroups); + CRM_Core_DAO::executeQuery("DELETE FROM civicrm_group_contact_cache WHERE group_id IN ({$expiredGroups})"); - // Clear these out without resetting them because we are not building caches here, only clearing them, - // so the state is 'as if they had never been built'. - CRM_Core_DAO::executeQuery( - " - UPDATE civicrm_group g - SET cache_date = NULL, - refresh_date = NULL - WHERE g.cache_date <= %1 - ", - $params - ); + // Clear these out without resetting them because we are not building caches here, only clearing them, + // so the state is 'as if they had never been built'. + CRM_Core_DAO::executeQuery("UPDATE civicrm_group SET cache_date = NULL, refresh_date = NULL WHERE id IN ({$expiredGroups})"); + } $lock->release(); } @@ -396,9 +379,7 @@ WHERE id IN ( $groupIDs ) public static function deterministicCacheFlush() { if (self::smartGroupCacheTimeout() == 0) { CRM_Core_DAO::executeQuery("TRUNCATE civicrm_group_contact_cache"); - CRM_Core_DAO::executeQuery(" - UPDATE civicrm_group g - SET cache_date = null, refresh_date = null"); + CRM_Core_DAO::executeQuery("UPDATE civicrm_group SET cache_date = NULL, refresh_date = NULL"); } else { self::flushCaches(); diff --git a/civicrm/CRM/Contact/BAO/Individual.php b/civicrm/CRM/Contact/BAO/Individual.php index 679e9229f50fb2f3088581c06924aa26904ab2dd..af28e7a244d5cda5570e3edc681d275be87cc79f 100644 --- a/civicrm/CRM/Contact/BAO/Individual.php +++ b/civicrm/CRM/Contact/BAO/Individual.php @@ -50,9 +50,9 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact { } $sortName = $displayName = ''; - $firstName = CRM_Utils_Array::value('first_name', $params, ''); - $middleName = CRM_Utils_Array::value('middle_name', $params, ''); - $lastName = CRM_Utils_Array::value('last_name', $params, ''); + $firstName = trim($params['first_name'] ?? ''); + $middleName = trim($params['middle_name'] ?? ''); + $lastName = trim($params['last_name'] ?? ''); $nickName = CRM_Utils_Array::value('nick_name', $params, ''); $prefix_id = CRM_Utils_Array::value('prefix_id', $params, ''); $suffix_id = CRM_Utils_Array::value('suffix_id', $params, ''); @@ -162,11 +162,6 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact { } } - //first trim before further processing. - foreach (['lastName', 'firstName', 'middleName'] as $fld) { - $$fld = trim($$fld); - } - if ($lastName || $firstName || $middleName) { // make sure we have values for all the name fields. $formatted = $params; diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index 4986afdace4b1066e94647e1234ab41f90db46cf..a6b2545d8bfc72265a4d1feaa3992befbc5771c6 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -517,6 +517,7 @@ class CRM_Contact_BAO_Query { // add activity fields $this->_fields = array_merge($this->_fields, CRM_Activity_BAO_Activity::exportableFields()); + $this->_fields = array_merge($this->_fields, CRM_Activity_BAO_Activity::exportableFields('Case')); // Add hack as no unique name is defined for the field but the search form is in denial. $this->_fields['activity_priority_id'] = $this->_fields['priority_id']; @@ -612,7 +613,7 @@ class CRM_Contact_BAO_Query { * * this code is primarily for search builder use case where different clauses can specify if they want deleted. * - * CRM-11971 + * @see https://issues.civicrm.org/jira/browse/CRM-11971 */ public function buildParamsLookup() { $trashParamExists = FALSE; @@ -1487,6 +1488,9 @@ class CRM_Contact_BAO_Query { } if (!empty($this->_permissionWhereClause) && empty($this->_displayRelationshipType)) { + if (!empty($this->_permissionFromClause)) { + $from .= " $this->_permissionFromClause"; + } if (empty($where)) { $where = "WHERE $this->_permissionWhereClause"; } @@ -1587,6 +1591,7 @@ class CRM_Contact_BAO_Query { } self::filterCountryFromValuesIfStateExists($formValues); + CRM_Core_BAO_CustomValue::fixCustomFieldValue($formValues); foreach ($formValues as $id => $values) { if (self::isAlreadyProcessedForQueryFormat($values)) { @@ -3265,7 +3270,6 @@ WHERE $smartGroupClause public function tag(&$values) { list($name, $op, $value, $grouping, $wildcard) = $values; - list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_EntityTag', "tag_id", $value, $op, ['onlyActive' => FALSE]); // API/Search Builder format array(operator => array(values)) if (is_array($value)) { if (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) { @@ -3277,6 +3281,19 @@ WHERE $smartGroupClause } } + if (strpos($op, 'NULL') || strpos($op, 'EMPTY')) { + $value = NULL; + } + + $tagTree = CRM_Core_BAO_Tag::getChildTags(); + foreach ((array) $value as $tagID) { + if (!empty($tagTree[$tagID])) { + $value = array_unique(array_merge($value, $tagTree[$tagID])); + } + } + + list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_EntityTag', "tag_id", $value, $op, ['onlyActive' => FALSE]); + // implode array, then remove all spaces $value = str_replace(' ', '', implode(',', (array) $value)); if (!empty($value)) { @@ -4590,6 +4607,9 @@ civicrm_relationship.start_date > {$today} $options = $query->_options; if (!empty($query->_permissionWhereClause)) { + if (!empty($query->_permissionFromClause) && !stripos($from, 'aclContactCache')) { + $from .= " $query->_permissionFromClause"; + } if (empty($where)) { $where = "WHERE $query->_permissionWhereClause"; } @@ -4776,7 +4796,7 @@ civicrm_relationship.start_date > {$today} * Country is implicit from the state, but including both results in * a poor query as there is no combined index on state AND country. * - * CRM-18125 + * @see https://issues.civicrm.org/jira/browse/CRM-18125 * * @param array $formValues */ @@ -4969,10 +4989,7 @@ civicrm_relationship.start_date > {$today} $sqlParts = $this->getSearchSQLParts(NULL, NULL, NULL, FALSE, FALSE, TRUE); $query = "SELECT DISTINCT LEFT(contact_a.sort_name, 1) as sort_name {$sqlParts['from']} - {$sqlParts['where']} - {$sqlParts['having']} - GROUP BY sort_name - ORDER BY sort_name asc"; + {$sqlParts['where']}"; $dao = CRM_Core_DAO::executeQuery($query); return $dao; } @@ -5038,17 +5055,22 @@ civicrm_relationship.start_date > {$today} */ public function generatePermissionClause($onlyDeleted = FALSE, $count = FALSE) { if (!$this->_skipPermission) { - $this->_permissionWhereClause = CRM_ACL_API::whereClause( - CRM_Core_Permission::VIEW, - $this->_tables, - $this->_whereTables, - NULL, - $onlyDeleted, - $this->_skipDeleteClause - ); + $permissionClauses = CRM_Contact_BAO_Contact_Permission::cacheClause(); + $this->_permissionWhereClause = $permissionClauses[1]; + $this->_permissionFromClause = $permissionClauses[0]; - if (!$onlyDeleted && CRM_Core_Permission::check('access deleted contacts')) { - $this->_permissionWhereClause = str_replace(' ( 1 ) ', '(contact_a.is_deleted = 0)', $this->_permissionWhereClause); + if (CRM_Core_Permission::check('access deleted contacts')) { + if (!$onlyDeleted) { + $this->_permissionWhereClause = str_replace('( 1 )', '(contact_a.is_deleted = 0)', $this->_permissionWhereClause); + } + else { + if ($this->_permissionWhereClause === '( 1 )') { + $this->_permissionWhereClause = str_replace('( 1 )', '(contact_a.is_deleted)', $this->_permissionWhereClause); + } + else { + $this->_permissionWhereClause .= " AND (contact_a.is_deleted) "; + } + } } if (isset($this->_tables['civicrm_activity'])) { @@ -5072,19 +5094,6 @@ civicrm_relationship.start_date > {$today} $this->_permissionWhereClause .= '(' . implode(' AND ', $clauses) . ')'; } } - - // regenerate fromClause since permission might have added tables - if ($this->_permissionWhereClause) { - //fix for row count in qill (in contribute/membership find) - if (!$count) { - $this->_useDistinct = TRUE; - } - //CRM-15231 - $this->_fromClause = self::fromClause($this->_tables, NULL, NULL, $this->_primaryLocation, $this->_mode); - $this->_simpleFromClause = self::fromClause($this->_whereTables, NULL, NULL, $this->_primaryLocation, $this->_mode); - // note : this modifies _fromClause and _simpleFromClause - $this->includePseudoFieldsJoin($this->_sort); - } } else { // add delete clause if needed even if we are skipping permission @@ -5116,6 +5125,9 @@ civicrm_relationship.start_date > {$today} */ public function summaryContribution($context = NULL) { list($innerselect, $from, $where, $having) = $this->query(TRUE); + if (!empty($this->_permissionFromClause) && !stripos($from, 'aclContactCache')) { + $from .= " $this->_permissionFromClause"; + } if ($this->_permissionWhereClause) { $where .= " AND " . $this->_permissionWhereClause; } @@ -5819,6 +5831,9 @@ AND displayRelType.is_active = 1 $from = str_replace("INNER JOIN", "LEFT JOIN", $from); $from .= $qcache['from']; $where = $qcache['where']; + if (!empty($this->_permissionFromClause) && !stripos($from, 'aclContactCache')) { + $from .= " $this->_permissionFromClause"; + } if (!empty($this->_permissionWhereClause)) { $where .= "AND $this->_permissionWhereClause"; } diff --git a/civicrm/CRM/Contact/BAO/RelationshipCache.php b/civicrm/CRM/Contact/BAO/RelationshipCache.php new file mode 100644 index 0000000000000000000000000000000000000000..edb76cd1dba402000a508a3582b26162c474a32d --- /dev/null +++ b/civicrm/CRM/Contact/BAO/RelationshipCache.php @@ -0,0 +1,153 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Class CRM_Contact_BAO_RelationshipCache. + */ +class CRM_Contact_BAO_RelationshipCache extends CRM_Contact_DAO_RelationshipCache { + + /** + * The "mappings" array defines the values to put into `civicrm_relationship_cache` + * using data from `civicrm_relationship rel` and `civicrm_relationship_type reltype`. + * + * @var array + * Array(string $intoColumn => string $selectValue) + */ + private static $mappings = [ + 'a_b' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"a_b"', + 'near_contact_id' => 'rel.contact_id_a', + 'near_relation' => 'reltype.name_a_b', + 'far_contact_id' => 'rel.contact_id_b', + 'far_relation' => 'reltype.name_b_a', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + 'b_a' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"b_a"', + 'near_contact_id' => 'rel.contact_id_b', + 'near_relation' => 'reltype.name_b_a', + 'far_contact_id' => 'rel.contact_id_a', + 'far_relation' => 'reltype.name_a_b', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + ]; + + /** + * A list of fields which uniquely identify a row. + * + * @var array + */ + private static $keyFields = ['relationship_id', 'orientation']; + + /** + * A list of of fields in `civicrm_relationship_type` which (if changed) + * will necessitate an update to the cache. + * + * @var array + */ + private static $relTypeWatchFields = ['name_a_b', 'name_b_a']; + + /** + * Add our list of triggers to the global list. + * + * @param \Civi\Core\Event\GenericHookEvent $e + * @see \CRM_Utils_Hook::triggerInfo + */ + public static function onHookTriggerInfo($e) { + $relUpdates = self::createInsertUpdateQueries(); + foreach ($relUpdates as $relUpdate) { + /** + * This trigger runs whenever a "civicrm_relationship" record is inserted or updated. + * + * Goal: Ensure that every relationship record has two corresponding entries in the + * cache, the forward relationship (A=>B) and reverse relationship (B=>A). + */ + $triggers[] = [ + 'table' => 'civicrm_relationship', + 'when' => 'AFTER', + 'event' => ['INSERT', 'UPDATE'], + 'sql' => $relUpdate->copy()->where('rel.id = NEW.id')->toSQL() . ";\n", + ]; + + $triggers[] = [ + /** + * This trigger runs whenever a "civicrm_relationship_type" record is updated. + * + * Goal: Ensure that the denormalized fields ("name_b_a"/"name_a_b" <=> "relation") remain current. + */ + 'table' => 'civicrm_relationship_type', + 'when' => 'AFTER', + 'event' => ['UPDATE'], + 'sql' => sprintf("\nIF (%s) THEN\n %s;\n END IF;\n", + + // Condition + implode(' OR ', array_map(function ($col) { + return "(OLD.$col != NEW.$col COLLATE utf8_bin)"; + }, self::$relTypeWatchFields)), + + // Action + $relUpdate->copy()->where('rel.relationship_type_id = NEW.id')->toSQL() + ), + ]; + } + + // Note: We do not need a DELETE trigger to maintain `civicrm_relationship_cache` because it uses `<onDelete>CASCADE</onDelete>`. + + $st = new \Civi\Core\SqlTrigger\StaticTriggers($triggers); + $st->onTriggerInfo($e); + } + + /** + * Read all records from civicrm_relationship and populate the cache. + * Each ordinary relationship in `civicrm_relationship` becomes two + * distinct records in the cache (one for A=>B relations; and one for B=>A). + * + * This method is primarily written (a) for manual testing and (b) in case + * a broken DBMS, screwy import, buggy code, etc causes a corruption. + * + * NOTE: This is closely related to FiveTwentyNine::populateRelationshipCache(), + * except that the upgrader users pagination. + */ + public static function rebuild() { + $relUpdates = self::createInsertUpdateQueries(); + + CRM_Core_DAO::executeQuery('TRUNCATE civicrm_relationship_cache'); + foreach ($relUpdates as $relUpdate) { + $relUpdate->execute(); + } + } + + /** + * Prepare a list of SQL queries that map data from civicrm_relationship + * to civicrm_relationship_cache. + * + * @return CRM_Utils_SQL_Select[] + * A list of SQL queries - one for each mapping. + */ + public static function createInsertUpdateQueries() { + $queries = []; + foreach (self::$mappings as $name => $mapping) { + $queries[$name] = CRM_Utils_SQL_Select::from('civicrm_relationship rel') + ->join('reltype', 'INNER JOIN civicrm_relationship_type reltype ON rel.relationship_type_id = reltype.id') + ->syncInto('civicrm_relationship_cache', self::$keyFields, $mapping); + } + return $queries; + } + +} diff --git a/civicrm/CRM/Contact/BAO/SavedSearch.php b/civicrm/CRM/Contact/BAO/SavedSearch.php index 7e1ddd302e5c73216586117eced332b55ca5e1e0..c5cd15e6e4df8ad4519324e6bdd94138464caae1 100644 --- a/civicrm/CRM/Contact/BAO/SavedSearch.php +++ b/civicrm/CRM/Contact/BAO/SavedSearch.php @@ -208,8 +208,7 @@ class CRM_Contact_BAO_SavedSearch extends CRM_Contact_DAO_SavedSearch { * @throws \CiviCRM_API3_Exception */ public static function getSearchParams($id) { - $savedSearch = \Civi\Api4\SavedSearch::get() - ->setCheckPermissions(FALSE) + $savedSearch = \Civi\Api4\SavedSearch::get(FALSE) ->addWhere('id', '=', $id) ->execute() ->first(); diff --git a/civicrm/CRM/Contact/DAO/RelationshipCache.php b/civicrm/CRM/Contact/DAO/RelationshipCache.php new file mode 100644 index 0000000000000000000000000000000000000000..ddb541bb70277782d78e1d1712f5c2273111f9e8 --- /dev/null +++ b/civicrm/CRM/Contact/DAO/RelationshipCache.php @@ -0,0 +1,441 @@ +<?php + +/** + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + * Generated from xml/schema/CRM/Contact/RelationshipCache.xml + * DO NOT EDIT. Generated by CRM_Core_CodeGen + * (GenCodeChecksum:d511533f30d5d2d8deac82664a6288d1) + */ + +/** + * Database access object for the RelationshipCache entity. + */ +class CRM_Contact_DAO_RelationshipCache extends CRM_Core_DAO { + + /** + * Static instance to hold the table name. + * + * @var string + */ + public static $_tableName = 'civicrm_relationship_cache'; + + /** + * Icon associated with this entity. + * + * @var string + */ + public static $_icon = 'fa-handshake-o'; + + /** + * Should CiviCRM log any modifications to this table in the civicrm_log table. + * + * @var bool + */ + public static $_log = FALSE; + + /** + * Relationship Cache ID + * + * @var int + */ + public $id; + + /** + * id of the relationship (FK to civicrm_relationship.id) + * + * @var int + */ + public $relationship_id; + + /** + * id of the relationship type + * + * @var int + */ + public $relationship_type_id; + + /** + * The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship. + * + * @var string + */ + public $orientation; + + /** + * id of the first contact + * + * @var int + */ + public $near_contact_id; + + /** + * name for relationship of near_contact to far_contact. + * + * @var string + */ + public $near_relation; + + /** + * id of the second contact + * + * @var int + */ + public $far_contact_id; + + /** + * name for relationship of far_contact to near_contact. + * + * @var string + */ + public $far_relation; + + /** + * is the relationship active ? + * + * @var bool + */ + public $is_active; + + /** + * date when the relationship started + * + * @var date + */ + public $start_date; + + /** + * date when the relationship ended + * + * @var date + */ + public $end_date; + + /** + * Class constructor. + */ + public function __construct() { + $this->__table = 'civicrm_relationship_cache'; + parent::__construct(); + } + + /** + * Returns localized title of this entity. + */ + public static function getEntityTitle() { + return ts('Relationship Caches'); + } + + /** + * Returns foreign keys and entity references. + * + * @return array + * [CRM_Core_Reference_Interface] + */ + public static function getReferenceColumns() { + if (!isset(Civi::$statics[__CLASS__]['links'])) { + Civi::$statics[__CLASS__]['links'] = static::createReferenceColumns(__CLASS__); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'relationship_id', 'civicrm_relationship', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'relationship_type_id', 'civicrm_relationship_type', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'near_contact_id', 'civicrm_contact', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'far_contact_id', 'civicrm_contact', 'id'); + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); + } + return Civi::$statics[__CLASS__]['links']; + } + + /** + * Returns all the column names of this table + * + * @return array + */ + public static function &fields() { + if (!isset(Civi::$statics[__CLASS__]['fields'])) { + Civi::$statics[__CLASS__]['fields'] = [ + 'id' => [ + 'name' => 'id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Relationship Cache ID'), + 'description' => ts('Relationship Cache ID'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'add' => '5.29', + ], + 'relationship_id' => [ + 'name' => 'relationship_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Relationship'), + 'description' => ts('id of the relationship (FK to civicrm_relationship.id)'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.relationship_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Relationship', + 'add' => '5.29', + ], + 'relationship_type_id' => [ + 'name' => 'relationship_type_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Relationship Type'), + 'description' => ts('id of the relationship type'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.relationship_type_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_RelationshipType', + 'add' => '5.29', + ], + 'orientation' => [ + 'name' => 'orientation', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Orientation (a_b or b_a)'), + 'description' => ts('The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.'), + 'required' => TRUE, + 'maxlength' => 3, + 'size' => CRM_Utils_Type::FOUR, + 'where' => 'civicrm_relationship_cache.orientation', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::relationshipOrientation', + ], + 'add' => '5.29', + ], + 'near_contact_id' => [ + 'name' => 'near_contact_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Contact ID (Near side)'), + 'description' => ts('id of the first contact'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.near_contact_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Contact', + 'html' => [ + 'type' => 'EntityRef', + ], + 'add' => '5.29', + ], + 'near_relation' => [ + 'name' => 'near_relation', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Relationship Name (Near side)'), + 'description' => ts('name for relationship of near_contact to far_contact.'), + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'where' => 'civicrm_relationship_cache.near_relation', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_PseudoConstant::relationshipTypeOptions', + ], + 'add' => '5.29', + ], + 'far_contact_id' => [ + 'name' => 'far_contact_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Contact ID (Far side)'), + 'description' => ts('id of the second contact'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.far_contact_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Contact', + 'html' => [ + 'type' => 'EntityRef', + ], + 'add' => '5.29', + ], + 'far_relation' => [ + 'name' => 'far_relation', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Relationship Name (Near side)'), + 'description' => ts('name for relationship of far_contact to near_contact.'), + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'where' => 'civicrm_relationship_cache.far_relation', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_PseudoConstant::relationshipTypeOptions', + ], + 'add' => '5.29', + ], + 'is_active' => [ + 'name' => 'is_active', + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'title' => ts('Relationship Is Active'), + 'description' => ts('is the relationship active ?'), + 'where' => 'civicrm_relationship_cache.is_active', + 'default' => '1', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + ], + 'add' => '5.29', + ], + 'relationship_start_date' => [ + 'name' => 'start_date', + 'type' => CRM_Utils_Type::T_DATE, + 'title' => ts('Relationship Start Date'), + 'description' => ts('date when the relationship started'), + 'where' => 'civicrm_relationship_cache.start_date', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], + 'add' => '5.29', + ], + 'relationship_end_date' => [ + 'name' => 'end_date', + 'type' => CRM_Utils_Type::T_DATE, + 'title' => ts('Relationship End Date'), + 'description' => ts('date when the relationship ended'), + 'where' => 'civicrm_relationship_cache.end_date', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], + 'add' => '5.29', + ], + ]; + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); + } + return Civi::$statics[__CLASS__]['fields']; + } + + /** + * Return a mapping from field-name to the corresponding key (as used in fields()). + * + * @return array + * Array(string $name => string $uniqueName). + */ + public static function &fieldKeys() { + if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) { + Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields())); + } + return Civi::$statics[__CLASS__]['fieldKeys']; + } + + /** + * Returns the names of this table + * + * @return string + */ + public static function getTableName() { + return self::$_tableName; + } + + /** + * Returns if this table needs to be logged + * + * @return bool + */ + public function getLog() { + return self::$_log; + } + + /** + * Returns the list of fields that can be imported + * + * @param bool $prefix + * + * @return array + */ + public static function &import($prefix = FALSE) { + $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'relationship_cache', $prefix, []); + return $r; + } + + /** + * Returns the list of fields that can be exported + * + * @param bool $prefix + * + * @return array + */ + public static function &export($prefix = FALSE) { + $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'relationship_cache', $prefix, []); + return $r; + } + + /** + * Returns the list of indices + * + * @param bool $localize + * + * @return array + */ + public static function indices($localize = TRUE) { + $indices = [ + 'UI_relationship' => [ + 'name' => 'UI_relationship', + 'field' => [ + 0 => 'relationship_id', + 1 => 'orientation', + ], + 'localizable' => FALSE, + 'unique' => TRUE, + 'sig' => 'civicrm_relationship_cache::1::relationship_id::orientation', + ], + 'index_nearid_nearrelation' => [ + 'name' => 'index_nearid_nearrelation', + 'field' => [ + 0 => 'near_contact_id', + 1 => 'near_relation', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_relationship_cache::0::near_contact_id::near_relation', + ], + 'index_nearid_farrelation' => [ + 'name' => 'index_nearid_farrelation', + 'field' => [ + 0 => 'near_contact_id', + 1 => 'far_relation', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_relationship_cache::0::near_contact_id::far_relation', + ], + 'index_near_relation' => [ + 'name' => 'index_near_relation', + 'field' => [ + 0 => 'near_relation', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_relationship_cache::0::near_relation', + ], + ]; + return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; + } + +} diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php index 3a1d69fc168bad9c9df1c793617f99318db8c4d2..04e3c8a897e79f52c58a27b38d60bf73bbe1ef31 100644 --- a/civicrm/CRM/Contact/Form/Contact.php +++ b/civicrm/CRM/Contact/Form/Contact.php @@ -367,8 +367,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { else { $contactSubType = $this->_contactSubType; // need contact sub type to build related grouptree array during post process - if (!empty($_POST['contact_sub_type'])) { - $contactSubType = $_POST['contact_sub_type']; + if (!empty($_POST['qfKey'])) { + $contactSubType = $_POST['contact_sub_type'] ?? NULL; } //only custom data has preprocess hence directly call it CRM_Custom_Form_CustomData::preProcess($this, NULL, $contactSubType, @@ -870,8 +870,10 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { } $group = $params['group'] ?? NULL; - if (!empty($group) && is_array($group)) { - unset($params['group']); + $params['group'] = ($params['group'] == '') ? [] : $params['group']; + if (!empty($group)) { + $group = is_array($group) ? $group : explode(',', $group); + $params['group'] = []; foreach ($group as $key => $value) { $params['group'][$value] = 1; } diff --git a/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php b/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php index c7d26927153d85cfc8fcd67ed6e781367edfe2a4..9299246d9beb57312e3c9bd8172f874e589c74e8 100644 --- a/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php +++ b/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php @@ -102,17 +102,17 @@ class CRM_Contact_Form_Edit_TagsAndGroups { } if ($groupElementType == 'select') { - $groupsOptions[$id] = $group['title']; + $groupsOptions[$id] = $group; } else { $form->_tagGroup[$fName][$id]['description'] = $group['description']; - $elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['title'], $attributes); + $elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['text'], $attributes); } } if ($groupElementType == 'select' && !empty($groupsOptions)) { - $form->add('select', $fName, $groupName, $groupsOptions, FALSE, - ['id' => $fName, 'multiple' => 'multiple', 'class' => 'crm-select2 twenty'] + $form->add('select2', $fName, $groupName, $groupsOptions, FALSE, + ['placeholder' => '- select -', 'multiple' => TRUE, 'class' => 'twenty'] ); $form->assign('groupCount', count($groupsOptions)); } @@ -166,11 +166,11 @@ class CRM_Contact_Form_Edit_TagsAndGroups { $contactGroup = CRM_Contact_BAO_GroupContact::getContactGroup($id, 'Added', NULL, FALSE, TRUE); if ($contactGroup) { - foreach ($contactGroup as $group) { - if ($groupElementType == 'select') { - $defaults[$fName][] = $group['group_id']; - } - else { + if ($groupElementType == 'select') { + $defaults[$fName] = implode(',', CRM_Utils_Array::collect('group_id', $contactGroup)); + } + else { + foreach ($contactGroup as $group) { $defaults[$fName . '[' . $group['group_id'] . ']'] = 1; } } diff --git a/civicrm/CRM/Contact/Form/GroupContact.php b/civicrm/CRM/Contact/Form/GroupContact.php index b2e326e960f7804911438c660f7011240a1378e1..79d4c29c1d62152fe31b0f2528d47a1f0662253b 100644 --- a/civicrm/CRM/Contact/Form/GroupContact.php +++ b/civicrm/CRM/Contact/Form/GroupContact.php @@ -73,7 +73,7 @@ class CRM_Contact_Form_GroupContact extends CRM_Core_Form { if ($onlyPublicGroups && $group['visibility'] == 'User and User Admin Only') { continue; } - $allGroups[$id] = $group; + $allGroups[$group['id']] = $group; } } else { diff --git a/civicrm/CRM/Contact/Form/Merge.php b/civicrm/CRM/Contact/Form/Merge.php index e81d31c32f26cb0e4e884775b167b4cba621e2d2..be4c5894a9d13163d438b1156d5e899dc5435efc 100644 --- a/civicrm/CRM/Contact/Form/Merge.php +++ b/civicrm/CRM/Contact/Form/Merge.php @@ -229,9 +229,9 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form { } // add related table elements - foreach ($rowsElementsAndInfo['rel_table_elements'] as $relTableElement) { - $this->addElement($relTableElement[0], $relTableElement[1]); - $this->_defaults[$relTableElement[1]] = 1; + foreach (array_keys($rowsElementsAndInfo['rel_tables']) as $relTableElement) { + $this->addElement('checkbox', $relTableElement); + $this->_defaults[$relTableElement] = 1; } $this->assign('rel_tables', $rowsElementsAndInfo['rel_tables']); @@ -376,7 +376,7 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form { CRM_Utils_System::permissionDenied(); } // ensure that oid is not the current user, if so refuse to do the merge - if (CRM_Core_Session::singleton()->getLoggedInContactID() == $oid) { + if (CRM_Core_Session::getLoggedInContactID() == $oid) { $message = ts('The contact record which is linked to the currently logged in user account - \'%1\' - cannot be deleted.', [1 => CRM_Core_Session::singleton()->getLoggedInContactDisplayName()] ); diff --git a/civicrm/CRM/Contact/Form/Search/Advanced.php b/civicrm/CRM/Contact/Form/Search/Advanced.php index 9336eb604f3e64b443fd8a61b08a4382eb4adf1d..e579c743316625c7ba92096d5ce68b0b44eed638 100644 --- a/civicrm/CRM/Contact/Form/Search/Advanced.php +++ b/civicrm/CRM/Contact/Form/Search/Advanced.php @@ -189,7 +189,7 @@ class CRM_Contact_Form_Search_Advanced extends CRM_Contact_Form_Search { 'privacy_toggle' => 1, 'operator' => 'AND', ], $defaults); - $this->normalizeDefaultValues($defaults); + $defaults = $this->normalizeDefaultValues($defaults); //991/Subtypes not respected when editing smart group criteria if (!empty($defaults['contact_type']) && !empty($this->_formValues['contact_sub_type'])) { @@ -297,8 +297,6 @@ class CRM_Contact_Form_Search_Advanced extends CRM_Contact_Form_Search { $this->_sortByCharacter = NULL; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_params = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, $this->entityReferenceFields); $this->_returnProperties = &$this->returnProperties(); parent::postProcess(); diff --git a/civicrm/CRM/Contact/Form/Search/Basic.php b/civicrm/CRM/Contact/Form/Search/Basic.php index 1b6ae423fa4d2849eb439a8fc4690e12dd7a4172..c1e84382319ffdfe400087c705c29717c939118d 100644 --- a/civicrm/CRM/Contact/Form/Search/Basic.php +++ b/civicrm/CRM/Contact/Form/Search/Basic.php @@ -49,13 +49,14 @@ class CRM_Contact_Form_Search_Basic extends CRM_Contact_Form_Search { // add select for groups // Get hierarchical listing of groups, respecting ACLs for CRM-16836. - $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($this->_group, NULL, ' ', TRUE); + $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($this->_group, NULL, ' '); if (!empty($searchOptions['groups'])) { $this->addField('group', [ 'entity' => 'group_contact', 'label' => ts('in'), 'placeholder' => ts('- any group -'), 'options' => $groupHierarchy, + 'type' => 'Select2', ]); } diff --git a/civicrm/CRM/Contact/Form/Search/Criteria.php b/civicrm/CRM/Contact/Form/Search/Criteria.php index dbfb6ebe6a34b161d590b87de9a518cbb33d9223..bd2d5829da5c6efc18760951f28fadd76716e4f4 100644 --- a/civicrm/CRM/Contact/Form/Search/Criteria.php +++ b/civicrm/CRM/Contact/Form/Search/Criteria.php @@ -45,7 +45,7 @@ class CRM_Contact_Form_Search_Criteria { $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($form->_group, NULL, ' ', TRUE); $form->add('select', 'group', ts('Groups'), $groupHierarchy, FALSE, - ['id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2'] + ['id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2'] ); $groupOptions = CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('group_type'); $form->add('select', 'group_type', ts('Group Types'), $groupOptions, FALSE, @@ -323,6 +323,8 @@ class CRM_Contact_Form_Search_Criteria { return [ // For now an empty array is still left in place for ordering. 'sort_name' => [], + 'first_name' => [], + 'last_name' => [], 'email' => ['name' => 'email'], 'contact_type' => ['name' => 'contact_type'], 'group' => [ @@ -556,15 +558,12 @@ class CRM_Contact_Form_Search_Criteria { $form->addSearchFieldMetadata(['Contact' => self::getFilteredSearchFieldMetadata('demographic')]); $form->addFormFieldsFromMetadata(); // radio button for gender - $genderOptions = []; + $genderOptionsAttributes = []; $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id'); foreach ($gender as $key => $var) { - $genderOptions[$key] = $form->createElement('radio', NULL, - ts('Gender'), $var, $key, - ['id' => "civicrm_gender_{$var}_{$key}"] - ); + $genderOptionsAttributes[$key] = ['id' => "civicrm_gender_{$var}_{$key}"]; } - $form->addGroup($genderOptions, 'gender_id', ts('Gender'))->setAttribute('allowClear', TRUE); + $form->addRadio('gender_id', ts('Gender'), $gender, ['allowClear' => TRUE], NULL, FALSE, $genderOptionsAttributes); $form->add('number', 'age_low', ts('Min Age'), ['class' => 'four', 'min' => 0]); $form->addRule('age_low', ts('Please enter a positive integer'), 'positiveInteger'); diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 7a7d57093f11a28483ad04f6968d2306318f465b..2f7695dc7db1b0d953f9111962ddf71ab59ff658 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -334,7 +334,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { /** * Replace ids of household members in $this->_contactIds with the id of their household. * - * CRM-8338 + * @see https://issues.civicrm.org/jira/browse/CRM-8338 */ public function mergeContactIdsByHousehold() { if (empty($this->_contactIds)) { diff --git a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php index fddf30a8f99d4630519f34169cc7883fdca879dc..51ac8c9ad680d259035a9096f1ccbd13b7588dc0 100644 --- a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php +++ b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php @@ -235,7 +235,7 @@ class CRM_Contact_Form_Task_PDFLetterCommon extends CRM_Core_Form_Task_PDFLetter $activityParams = [ 'subject' => $subject, 'campaign_id' => $campaign_id, - 'source_contact_id' => CRM_Core_Session::singleton()->getLoggedInContactID(), + 'source_contact_id' => CRM_Core_Session::getLoggedInContactID(), 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Print PDF Letter'), 'activity_date_time' => date('YmdHis'), 'details' => $html_message, diff --git a/civicrm/CRM/Contact/Form/Task/Useradd.php b/civicrm/CRM/Contact/Form/Task/Useradd.php index b9a8056721633f1ef63090d42907d43f36ec653c..385405c6a2e145d57e34e170e1fa532c926591fc 100644 --- a/civicrm/CRM/Contact/Form/Task/Useradd.php +++ b/civicrm/CRM/Contact/Form/Task/Useradd.php @@ -73,6 +73,7 @@ class CRM_Contact_Form_Task_Useradd extends CRM_Core_Form { $this->addRule('cms_pass', 'Password is required', 'required'); $this->addRule(['cms_pass', 'cms_confirm_pass'], 'ERROR: Password mismatch', 'compare'); $this->add('text', 'email', ts('Email:'), ['class' => 'huge'])->freeze(); + $this->addRule('email', 'Email is required', 'required'); $this->add('hidden', 'contactID'); //add a rule to check username uniqueness @@ -101,8 +102,12 @@ class CRM_Contact_Form_Task_Useradd extends CRM_Core_Form { // store the submitted values in an array $params = $this->exportValues(); - CRM_Core_BAO_CMSUser::create($params, 'email'); - CRM_Core_Session::setStatus('', ts('User Added'), 'success'); + if (CRM_Core_BAO_CMSUser::create($params, 'email') === FALSE) { + CRM_Core_Error::statusBounce(ts('Error creating CMS user account.')); + } + else { + CRM_Core_Session::setStatus(ts('User Added'), '', 'success'); + } } /** diff --git a/civicrm/CRM/Contact/Import/Form/DataSource.php b/civicrm/CRM/Contact/Import/Form/DataSource.php index 97ffa8453d8880fedc7e704b2df34faa01a4491d..ac13033e8e5cafd04dc90f7f9a6a3c87ad99219c 100644 --- a/civicrm/CRM/Contact/Import/Form/DataSource.php +++ b/civicrm/CRM/Contact/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -139,23 +137,12 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form { ); // duplicate handling options - $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Skip'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Fill'), CRM_Import_Parser::DUPLICATE_FILL - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('No Duplicate Checking'), CRM_Import_Parser::DUPLICATE_NOCHECK - ); - - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('For Duplicate Contacts') - ); + $this->addRadio('onDuplicate', ts('For Duplicate Contacts'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Skip'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update'), + CRM_Import_Parser::DUPLICATE_FILL => ts('Fill'), + CRM_Import_Parser::DUPLICATE_NOCHECK => ts('No Duplicate Checking'), + ]); $mappingArray = CRM_Core_BAO_Mapping::getMappings('Import Contact'); @@ -164,26 +151,20 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form { $js = ['onClick' => "buildSubTypes();buildDedupeRules();"]; // contact types option - $contactOptions = []; + $contactTypeOptions = $contactTypeAttributes = []; if (CRM_Contact_BAO_ContactType::isActive('Individual')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Individual'), CRM_Import_Parser::CONTACT_INDIVIDUAL, $js - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_INDIVIDUAL] = ts('Individual'); + $contactTypeAttributes[CRM_Import_Parser::CONTACT_INDIVIDUAL] = $js; } if (CRM_Contact_BAO_ContactType::isActive('Household')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Household'), CRM_Import_Parser::CONTACT_HOUSEHOLD, $js - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_HOUSEHOLD] = ts('Household'); + $contactTypeAttributes[CRM_Import_Parser::CONTACT_HOUSEHOLD] = $js; } if (CRM_Contact_BAO_ContactType::isActive('Organization')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Organization'), CRM_Import_Parser::CONTACT_ORGANIZATION, $js - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_ORGANIZATION] = ts('Organization'); + $contactTypeAttributes[CRM_Import_Parser::CONTACT_ORGANIZATION] = $js; } - - $this->addGroup($contactOptions, 'contactType', - ts('Contact Type') - ); + $this->addRadio('contactType', ts('Contact Type'), $contactTypeOptions, [], NULL, FALSE, $contactTypeAttributes); $this->addElement('select', 'subType', ts('Subtype')); $this->addElement('select', 'dedupe', ts('Dedupe Rule')); diff --git a/civicrm/CRM/Contact/Import/ImportJob.php b/civicrm/CRM/Contact/Import/ImportJob.php index b598bd3cd3ca539ab50dbc48c682a42ccd26c031..75d570e637cef27d298e89e57818361576d37b82 100644 --- a/civicrm/CRM/Contact/Import/ImportJob.php +++ b/civicrm/CRM/Contact/Import/ImportJob.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -62,13 +60,13 @@ class CRM_Contact_Import_ImportJob { if (!$createSql) { throw new CRM_Core_Exception(ts('Either an existing table name or an SQL query to build one are required')); } - - // FIXME: we should regen this table's name if it exists rather than drop it - if (!$tableName) { - $tableName = 'civicrm_import_job_' . md5(uniqid(rand(), TRUE)); + if ($tableName) { + // Drop previous table if passed in and create new one. + $db->query("DROP TABLE IF EXISTS $tableName"); } - $db->query("DROP TABLE IF EXISTS $tableName"); - $db->query("CREATE TABLE $tableName ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci $createSql"); + $table = CRM_Utils_SQL_TempTable::build()->setDurable(); + $tableName = $table->getName(); + $table->createWithQuery($createSql); } if (!$tableName) { @@ -143,7 +141,7 @@ class CRM_Contact_Import_ImportJob { //need to differentiate non location elements. // @todo merge this with duplicate code on MapField class. if ($selOne && (is_numeric($selOne) || $selOne === 'Primary')) { - if ($fldName == 'url') { + if ($fldName === 'url') { $header[] = $websiteTypes[$selOne]; $parserParameters['mapperWebsiteType'][$key] = $selOne; } @@ -151,11 +149,11 @@ class CRM_Contact_Import_ImportJob { $header[] = $locationTypes[$selOne]; $parserParameters['mapperLocType'][$key] = $selOne; if ($selTwo && is_numeric($selTwo)) { - if ($fldName == 'phone') { + if ($fldName === 'phone') { $header[] = $phoneTypes[$selTwo]; $parserParameters['mapperPhoneType'][$key] = $selTwo; } - elseif ($fldName == 'im') { + elseif ($fldName === 'im') { $header[] = $imProviders[$selTwo]; $parserParameters['mapperImProvider'][$key] = $selTwo; } @@ -339,6 +337,7 @@ class CRM_Contact_Import_ImportJob { * @param $newTagDesc * * @return array|bool + * @throws \CRM_Core_Exception */ private function _tagImportedContactsWithNewTag( $contactIds, diff --git a/civicrm/CRM/Contact/Import/Parser/Contact.php b/civicrm/CRM/Contact/Import/Parser/Contact.php index 760d16059b8df74c45976bc8d5615d2e74765e66..dc3441baaad2db15fee01500f758879af0c9b718 100644 --- a/civicrm/CRM/Contact/Import/Parser/Contact.php +++ b/civicrm/CRM/Contact/Import/Parser/Contact.php @@ -1955,7 +1955,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Contact_Import_Parser { * 1) the chosen dedupe rule falling back to * 2) a check for the external ID. * - * CRM-17275 + * @see https://issues.civicrm.org/jira/browse/CRM-17275 * * @param array $params * diff --git a/civicrm/CRM/Contact/Page/AJAX.php b/civicrm/CRM/Contact/Page/AJAX.php index 4b91252858b3dd1877334767b67bf765abef44dd..7f3e4412acf04d752d88eb033ca6e5380ba45d07 100644 --- a/civicrm/CRM/Contact/Page/AJAX.php +++ b/civicrm/CRM/Contact/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Contact/Page/View/UserDashBoard.php b/civicrm/CRM/Contact/Page/View/UserDashBoard.php index 347824ccebb7930e32523c1b4f580ed2a75765ba..8cba50bcb095c15408cac5350633b22040bbc67f 100644 --- a/civicrm/CRM/Contact/Page/View/UserDashBoard.php +++ b/civicrm/CRM/Contact/Page/View/UserDashBoard.php @@ -47,7 +47,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { } $this->_contactId = CRM_Utils_Request::retrieve('id', 'Positive', $this); - $userID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $userID = CRM_Core_Session::getLoggedInContactID(); $userChecksum = $this->getUserChecksum(); $validUser = FALSE; diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index c209e67fcd2d08009d202e0aea31490d66e29636..e5d83dd6cfeb24d22509b38c493b2a54a3339bc8 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -9,6 +9,10 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Activity; +use Civi\Api4\ContributionPage; +use Civi\Api4\ContributionRecur; + /** * * @package CRM @@ -461,6 +465,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { * * @return CRM_Contribute_BAO_Contribution * + * @throws \API_Exception * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ @@ -512,26 +517,33 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { $transaction->commit(); - $activity = civicrm_api3('Activity', 'get', [ - 'source_record_id' => $contribution->id, - 'options' => ['limit' => 1], - 'sequential' => 1, - 'activity_type_id' => 'Contribution', - 'return' => ['id', 'campaign'], - ]); - - //CRM-18406: Update activity when edit contribution. - if ($activity['count']) { - // CRM-13237 : if activity record found, update it with campaign id of contribution - // @todo compare campaign ids first. - CRM_Core_DAO::setFieldValue('CRM_Activity_BAO_Activity', $activity['id'], 'campaign_id', $contribution->campaign_id); - $contribution->activity_id = $activity['id']; - } - if (empty($contribution->contact_id)) { $contribution->find(TRUE); } - CRM_Activity_BAO_Activity::addActivity($contribution, 'Contribution'); + + $isCompleted = ('Completed' === CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution->contribution_status_id)); + if (!empty($params['on_behalf']) + || $isCompleted + ) { + $existingActivity = Activity::get(FALSE)->setWhere([ + ['source_record_id', '=', $contribution->id], + ['activity_type_id:name', '=', 'Contribution'], + ])->execute()->first(); + + $campaignParams = isset($params['campaign_id']) ? ['campaign_id' => ($params['campaign_id'] ?? NULL)] : []; + Activity::save(FALSE)->addRecord(array_merge([ + 'activity_type_id:name' => 'Contribution', + 'source_record_id' => $contribution->id, + 'source_contact_id' => CRM_Core_Session::getLoggedInContactID() ?: $contribution->contact_id, + 'target_contact_id' => CRM_Core_Session::getLoggedInContactID() ? [$contribution->contact_id] : [], + 'activity_date_time' => $contribution->receive_date, + 'is_test' => (bool) $contribution->is_test, + 'status_id:name' => $isCompleted ? 'Completed' : 'Scheduled', + 'skipRecentView' => TRUE, + 'subject' => CRM_Activity_BAO_Activity::getActivitySubject($contribution), + 'id' => $existingActivity['id'] ?? NULL, + ], $campaignParams))->execute(); + } // do not add to recent items for import, CRM-4399 if (empty($params['skipRecentView'])) { @@ -1335,6 +1347,38 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { return $rows; } + /** + * Should an email receipt be sent for this contribution on completion. + * + * @param array $input + * @param int $contributionPageID + * @param int $recurringContributionID + * + * @return bool + * @throws \API_Exception + * @throws \Civi\API\Exception\UnauthorizedException + */ + protected static function isEmailReceipt(array $input, $contributionPageID, $recurringContributionID): bool { + if (isset($input['is_email_receipt'])) { + return (bool) $input['is_email_receipt']; + } + if ($recurringContributionID) { + //CRM-13273 - is_email_receipt setting on recurring contribution should take precedence over contribution page setting + // but CRM-16124 if $input['is_email_receipt'] is set then that should not be overridden. + // dev/core#1245 this maybe not the desired effect because the default value for is_email_receipt is set to 0 rather than 1 in + // Instance that had the table added via an upgrade in 4.1 + // see also https://github.com/civicrm/civicrm-svn/commit/7f39befd60bc735408d7866b02b3ac7fff1d4eea#diff-9ad8e290180451a2d6eacbd3d1ca7966R354 + // https://lab.civicrm.org/dev/core/issues/1245 + return (bool) ContributionRecur::get(FALSE)->addWhere('id', '=', $recurringContributionID)->addSelect('is_email_receipt')->execute()->first()['is_email_receipt']; + } + if ($contributionPageID) { + return (bool) ContributionPage::get(FALSE)->addWhere('id', '=', $contributionPageID)->addSelect('is_email_receipt')->execute()->first()['is_email_receipt']; + } + // This would be the case for backoffice (where is_email_receipt is not passed in) or events, where Event::sendMail will filter + // again anyway. + return TRUE; + } + /** * @inheritDoc */ @@ -2565,12 +2609,11 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ * @param CRM_Contribute_BAO_Contribution $contribution * @param array $input * @param array $contributionParams - * @param int $paymentProcessorID * - * @return bool + * @return bool|array * @throws CiviCRM_API3_Exception */ - protected static function repeatTransaction(&$contribution, &$input, $contributionParams, $paymentProcessorID) { + protected static function repeatTransaction(&$contribution, &$input, $contributionParams) { if (!empty($contribution->id)) { return FALSE; } @@ -2601,17 +2644,21 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ ]) ); $input['line_item'] = $contributionParams['line_item'] = $templateContribution['line_item']; - $contributionParams['status_id'] = 'Pending'; - if (isset($contributionParams['financial_type_id'])) { - // Give precedence to passed in type. + + if (isset($contributionParams['financial_type_id']) && count($input['line_item']) === 1) { + // We permit the financial type to be overridden for single line items. + // More comments on this are in getTemplateTransaction. $contribution->financial_type_id = $contributionParams['financial_type_id']; } else { $contributionParams['financial_type_id'] = $templateContribution['financial_type_id']; } - $contributionParams['contact_id'] = $templateContribution['contact_id']; - $contributionParams['source'] = empty($templateContribution['source']) ? ts('Recurring contribution') : $templateContribution['source']; + foreach (['contact_id', 'currency', 'source'] as $fieldName) { + $contributionParams[$fieldName] = $templateContribution[$fieldName]; + } + + $contributionParams['source'] = $contributionParams['source'] ?: ts('Recurring contribution'); //CRM-18805 -- Contribution page not recorded on recurring transactions, Recurring contribution payments //do not create CC or BCC emails or profile notifications. @@ -2626,9 +2673,9 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ $createContribution = civicrm_api3('Contribution', 'create', $contributionParams); $contribution->id = $createContribution['id']; - CRM_Contribute_BAO_ContributionRecur::copyCustomValues($contributionParams['contribution_recur_id'], $contribution->id); + $contribution->copyCustomFields($templateContribution['id'], $contribution->id); self::handleMembershipIDOverride($contribution->id, $input); - return TRUE; + return $createContribution; } } @@ -2917,7 +2964,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac //not really sure what params might be passed in but lets merge em into values $values = array_merge($this->_gatherMessageValues($input, $values, $ids), $values); - $values['is_email_receipt'] = $this->isEmailReceipt($input, $values); + $values['is_email_receipt'] = !$returnMessageText; if (!empty($input['receipt_date'])) { $values['receipt_date'] = $input['receipt_date']; } @@ -3099,7 +3146,11 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac //get soft contributions $softContributions = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->id, TRUE); if (!empty($softContributions)) { - $values['softContributions'] = $softContributions['soft_credit']; + // For pcp soft credit, there is no 'soft_credit' member it comes + // back in different array members, but shortly after returning from + // this function it calls _assignMessageVariablesToTemplate which does + // its own lookup of any pcp soft credit, so we can skip it here. + $values['softContributions'] = $softContributions['soft_credit'] ?? NULL; } if (isset($this->contribution_page_id)) { // This is a call we want to use less, in favour of loading related objects. @@ -3915,6 +3966,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac 'Refunded' => ['Cancelled', 'Completed'], 'Partially paid' => ['Completed'], 'Pending refund' => ['Completed', 'Refunded'], + 'Failed' => ['Pending'], ]; if (!in_array($contributionStatuses[$fields['contribution_status_id']], @@ -3930,7 +3982,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac /** * Delete contribution of contact. * - * CRM-12155 + * @see https://issues.civicrm.org/jira/browse/CRM-12155 * * @param int $contactId * Contact id. @@ -3995,7 +4047,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac /** * Validate financial type. * - * CRM-13231 + * @see https://issues.civicrm.org/jira/browse/CRM-13231 * * @param int $financialTypeId * Financial Type id. @@ -4391,8 +4443,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @param array $input * @param array $ids * @param array $objects - * @param CRM_Core_Transaction $transaction - * It is not recommended to pass this in. The calling function handle it's own roll back if it wants it. * @param bool $isPostPaymentCreate * Is this being called from the payment.create api. If so the api has taken care of financial entities. * Note that our goal is that this would only ever be called from payment.create and never handle financials (only @@ -4402,10 +4452,8 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public static function completeOrder($input, &$ids, $objects, $transaction = NULL, $isPostPaymentCreate = FALSE) { - if (!$transaction) { - $transaction = new CRM_Core_Transaction(); - } + public static function completeOrder($input, &$ids, $objects, $isPostPaymentCreate = FALSE) { + $transaction = new CRM_Core_Transaction(); $contribution = $objects['contribution']; $primaryContributionID = $contribution->id ?? $objects['first_contribution']->id; // The previous details are used when calculating line items so keep it before any code that 'does something' @@ -4425,10 +4473,8 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac 'contribution_status_id', 'card_type_id', 'pan_truncation', + 'financial_type_id', ]; - if (self::isSingleLineItem($primaryContributionID)) { - $inputContributionWhiteList[] = 'financial_type_id'; - } $participant = $objects['participant'] ?? NULL; $recurContrib = $objects['contributionRecur'] ?? NULL; @@ -4453,11 +4499,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac ], array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1) )); - // CRM-20678 Ensure that the currency is correct in subseqent transcations. - if (empty($contributionParams['currency']) && isset($objects['first_contribution']->currency)) { - $contributionParams['currency'] = $objects['first_contribution']->currency; - } - $contributionParams['payment_processor'] = $input['payment_processor'] = $paymentProcessorId; // If paymentProcessor is not set then the payment_instrument_id would not be correct. @@ -4471,48 +4512,12 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } $changeDate = CRM_Utils_Array::value('trxn_date', $input, date('YmdHis')); - if (empty($contributionParams['receive_date']) && $changeDate) { - $contributionParams['receive_date'] = $changeDate; - } - - self::repeatTransaction($contribution, $input, $contributionParams, $paymentProcessorId); - $contributionParams['financial_type_id'] = $contribution->financial_type_id; - - $values = []; - if (isset($input['is_email_receipt'])) { - $values['is_email_receipt'] = $input['is_email_receipt']; - } + $contributionResult = self::repeatTransaction($contribution, $input, $contributionParams); if ($input['component'] == 'contribute') { - if ($contribution->contribution_page_id) { - // Figure out what we gain from this. - // Note that we may have overwritten the is_email_receipt input, fix that below. - CRM_Contribute_BAO_ContributionPage::setValues($contribution->contribution_page_id, $values); - } - elseif ($recurContrib && $recurringContributionID) { - $values['amount'] = $recurContrib->amount; - $values['financial_type_id'] = $objects['contributionType']->id; - $values['title'] = $source = ts('Offline Recurring Contribution'); - } - - if (isset($input['is_email_receipt'])) { - // CRM-19601 - we may have overwritten this above. - $values['is_email_receipt'] = $input['is_email_receipt']; - } - elseif ($recurContrib && $recurringContributionID) { - //CRM-13273 - is_email_receipt setting on recurring contribution should take precedence over contribution page setting - // but CRM-16124 if $input['is_email_receipt'] is set then that should not be overridden. - // dev/core#1245 this maybe not the desired effect because the default value for is_email_receipt is set to 0 rather than 1 in - // Instance that had the table added via an upgrade in 4.1 - // see also https://github.com/civicrm/civicrm-svn/commit/7f39befd60bc735408d7866b02b3ac7fff1d4eea#diff-9ad8e290180451a2d6eacbd3d1ca7966R354 - // https://lab.civicrm.org/dev/core/issues/1245 - $values['is_email_receipt'] = $recurContrib->is_email_receipt; - } - if ($contributionParams['contribution_status_id'] === $completedContributionStatusID) { self::updateMembershipBasedOnCompletionOfContribution( $contribution, - $primaryContributionID, $changeDate ); } @@ -4532,10 +4537,9 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $contributionParams['id'] = $contribution->id; $contributionParams['is_post_payment_create'] = $isPostPaymentCreate; - // CRM-19309 - if you update the contribution here with financial_type_id it can/will mess with $lineItem - // unsetting it here does NOT cause any other contribution test to fail! - unset($contributionParams['financial_type_id']); - $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); + if (!$contributionResult) { + $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); + } // Add new soft credit against current $contribution. if (!empty($objects['contributionRecur']) && $objects['contributionRecur']->id) { @@ -4550,13 +4554,15 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } $contribution->contribution_status_id = $contributionParams['contribution_status_id']; - CRM_Core_Error::debug_log_message("Contribution record updated successfully"); + CRM_Core_Error::debug_log_message('Contribution record updated successfully'); $transaction->commit(); + // @todo - check if Contribution::create does this, test, remove. CRM_Contribute_BAO_ContributionRecur::updateRecurLinkedPledge($contribution->id, $recurringContributionID, $contributionParams['contribution_status_id'], $input['amount']); // create an activity record + // @todo - check if Contribution::create does this, test, remove. if ($input['component'] == 'contribute') { //CRM-4027 $targetContactID = NULL; @@ -4567,11 +4573,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac CRM_Activity_BAO_Activity::addActivity($contribution, NULL, $targetContactID); } - // CRM-9132 legacy behaviour was that receipts were sent out in all instances. Still sending - // when array_key 'is_email_receipt doesn't exist in case some instances where is needs setting haven't been set - if (!array_key_exists('is_email_receipt', $values) || - $values['is_email_receipt'] == 1 - ) { + if (self::isEmailReceipt($input, $contribution->contribution_page_id, $recurringContributionID)) { civicrm_api3('Contribution', 'sendconfirmation', [ 'id' => $contribution->id, 'payment_processor_id' => $paymentProcessorId, @@ -4596,8 +4598,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @param array $ids * Related object IDs. * @param int $contributionID - * @param array $values - * Values related to objects that have already been loaded. * @param bool $returnMessageText * Should text be returned instead of sent. This. * is because the function is also used to generate pdfs @@ -4607,9 +4607,8 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @throws \CiviCRM_API3_Exception * @throws \Exception */ - public static function sendMail(&$input, &$ids, $contributionID, &$values, - $returnMessageText = FALSE) { - + public static function sendMail($input, $ids, $contributionID, $returnMessageText = FALSE) { + $values = []; $contribution = new CRM_Contribute_BAO_Contribution(); $contribution->id = $contributionID; if (!$contribution->find(TRUE)) { @@ -5211,13 +5210,12 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co * load them in this function. Code clean up would compensate for any minor performance implication. * * @param \CRM_Contribute_BAO_Contribution $contribution - * @param int $primaryContributionID * @param string $changeDate * * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public static function updateMembershipBasedOnCompletionOfContribution($contribution, $primaryContributionID, $changeDate) { + public static function updateMembershipBasedOnCompletionOfContribution($contribution, $changeDate) { $memberships = self::getRelatedMemberships($contribution->id); foreach ($memberships as $membership) { $membershipParams = [ @@ -5254,10 +5252,11 @@ LIMIT 1;"; // Passing num_terms to the api triggers date calculations, but for pending memberships these may be already calculated. // sigh - they should be consistent but removing the end date check causes test failures & maybe UI too? // The api assumes num_terms is a special sauce for 'is_renewal' so we need to not pass it when updating a pending to completed. + // ... except testCompleteTransactionMembershipPriceSetTwoTerms hits this line so the above is obviously not true.... // @todo once apiv4 ships with core switch to that & find sanity. $membershipParams['num_terms'] = $contribution->getNumTermsByContributionAndMembershipType( $membershipParams['membership_type_id'], - $primaryContributionID + $contribution->id ); } // @todo remove all this stuff in favour of letting the api call further down handle in @@ -5273,6 +5272,8 @@ LIMIT 1;"; * In BAO/Membership.php(renewMembership function), we skip the extend membership date and status * when Contribution mode is notify and membership is for renewal ) */ + // Test cover for this is in testRepeattransactionRenewMembershipOldMembership + // Be afraid. CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, $changeDate); // @todo - we should pass membership_type_id instead of null here but not @@ -5707,23 +5708,6 @@ LIMIT 1;"; } } - /** - * Should an email receipt be sent for this contribution when complete. - * - * @param array $input - * - * @return mixed - */ - protected function isEmailReceipt($input) { - if (isset($input['is_email_receipt'])) { - return $input['is_email_receipt']; - } - if (!empty($this->_relatedObjects['contribution_page_id'])) { - return $this->_relatedObjects['contribution_page_id']->is_email_receipt; - } - return TRUE; - } - /** * Function to replace contribution tokens. * diff --git a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php index a9e84fac1e3401c9a4a72a09d4d831945120dd61..21fd4716d431307f02977235c4cf32ecd7dafea0 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php +++ b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php @@ -83,6 +83,9 @@ class CRM_Contribute_BAO_Contribution_Utils { $form->_values['amount'] = $form->_params['amount']; } + if (isset($paymentParams['contribution_source'])) { + $paymentParams['source'] = $paymentParams['contribution_source']; + } if ($isPaymentTransaction) { $contributionParams = [ 'id' => $paymentParams['contribution_id'] ?? NULL, @@ -142,9 +145,6 @@ class CRM_Contribute_BAO_Contribution_Utils { $paymentParams['contributionID'] = $contribution->id; $paymentParams['contributionPageID'] = $contribution->contribution_page_id; - if (isset($paymentParams['contribution_source'])) { - $paymentParams['source'] = $paymentParams['contribution_source']; - } if (!empty($form->_params['is_recur']) && $contribution->contribution_recur_id) { $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id; @@ -485,7 +485,7 @@ LIMIT 1 /** * Format monetary amount: round and return to desired decimal place - * CRM-20145 + * @see https://issues.civicrm.org/jira/browse/CRM-20145 * * @param float $amount * Monetary amount diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php index f149957fe6f9c48d9d18fe3c0a8bef9eaabb8d4e..2e4ccbf75873c9cd5df42a4fe35a004b2f260624 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php @@ -842,8 +842,7 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm $tsLocale = CRM_Core_I18n::getLocale(); $config = CRM_Core_Config::singleton(); $json = $jsonDecode = NULL; - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); + $multilingual = CRM_Core_I18n::isMultilingual(); $moduleDataFormat = [ 'soft_credit' => [ @@ -866,7 +865,7 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm if ($setDefault) { $jsonDecode = json_decode($params); $jsonDecode = (array) $jsonDecode->$module; - if (!$domain->locales && !empty($jsonDecode['default'])) { + if (!$multilingual && !empty($jsonDecode['default'])) { //monolingual state $jsonDecode += (array) $jsonDecode['default']; unset($jsonDecode['default']); @@ -882,7 +881,7 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm } //check and handle multilingual honoree params - if (!$domain->locales) { + if (!$multilingual) { //if in singlelingual state simply return the array format $json = [$module => NULL]; foreach ($moduleDataFormat[$module] as $key => $attribute) { @@ -904,9 +903,9 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm $json = [$module => NULL]; foreach ($moduleDataFormat[$module] as $key => $attribute) { if ($key === 'multilingual') { - $json[$module][$config->lcMessages] = []; + $json[$module][$tsLocale] = []; foreach ($attribute as $attr) { - $json[$module][$config->lcMessages][$attr] = $params[$attr]; + $json[$module][$tsLocale][$attr] = $params[$attr]; } } else { diff --git a/civicrm/CRM/Contribute/BAO/ContributionRecur.php b/civicrm/CRM/Contribute/BAO/ContributionRecur.php index 5862d4b777ba9ac39187b05eb707c5fcf69f0867..63d7799768d38a08042dd551330d69ca35be5fdd 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionRecur.php +++ b/civicrm/CRM/Contribute/BAO/ContributionRecur.php @@ -424,8 +424,7 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) 'id' => $id, ]); // First look for new-style template contribution with is_template=1 - $templateContributions = \Civi\Api4\Contribution::get() - ->setCheckPermissions(FALSE) + $templateContributions = \Civi\Api4\Contribution::get(FALSE) ->addWhere('contribution_recur_id', '=', $id) ->addWhere('is_template', '=', 1) ->addWhere('is_test', '=', $is_test) @@ -434,8 +433,7 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) ->execute(); if (!$templateContributions->count()) { // Fall back to old style template contributions - $templateContributions = \Civi\Api4\Contribution::get() - ->setCheckPermissions(FALSE) + $templateContributions = \Civi\Api4\Contribution::get(FALSE) ->addWhere('contribution_recur_id', '=', $id) ->addWhere('is_test', '=', $is_test) ->addOrderBy('id', 'DESC') @@ -444,8 +442,15 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) } if ($templateContributions->count()) { $templateContribution = $templateContributions->first(); - $result = array_merge($templateContribution, $overrides); $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($templateContribution['id']); + // We only permit the financial type to be overridden for single line items. + // Otherwise we need to figure out a whole lot of extra complexity. + // It's not UI-possible to alter financial_type_id for recurring contributions + // with more than one line item. + if (count($lineItems) > 1 && isset($overrides['financial_type_id'])) { + unset($overrides['financial_type_id']); + } + $result = array_merge($templateContribution, $overrides); $result['line_item'] = self::reformatLineItemsForRepeatContribution($result['total_amount'], $result['financial_type_id'], $lineItems, (array) $templateContribution); return $result; } @@ -547,6 +552,8 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) /** * Copy custom data of the initial contribution into its recurring contributions. * + * @deprecated + * * @param int $recurId * @param int $targetContributionId */ @@ -835,7 +842,6 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) */ public static function updateOnNewPayment($recurringContributionID, $paymentStatus, $effectiveDate) { - $effectiveDate = $effectiveDate ? date('Y-m-d', strtotime($effectiveDate)) : date('Y-m-d'); if (!in_array($paymentStatus, ['Completed', 'Failed'])) { return; } @@ -864,12 +870,18 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) if (!empty($existing['installments']) && self::isComplete($recurringContributionID, $existing['installments'])) { $params['contribution_status_id'] = 'Completed'; + $params['next_sched_contribution_date'] = 'null'; } else { - // Only update next sched date if it's empty or 'just now' because payment processors may be managing - // the scheduled date themselves as core did not previously provide any help. - if (empty($existing['next_sched_contribution_date']) || strtotime($existing['next_sched_contribution_date']) == - strtotime($effectiveDate)) { + // Only update next sched date if it's empty or up to 48 hours away because payment processors may be managing + // the scheduled date themselves as core did not previously provide any help. This check can possibly be removed + // as it's unclear if it actually is helpful... + // We should allow payment processors to pass this value into repeattransaction in future. + // Note 48 hours is a bit aribtrary but means that we can hopefully ignore the time being potentially + // rounded down to midnight. + $upperDateToConsiderProcessed = strtotime('+ 48 hours', ($effectiveDate ? strtotime($effectiveDate) : time())); + if (empty($existing['next_sched_contribution_date']) || strtotime($existing['next_sched_contribution_date']) <= + $upperDateToConsiderProcessed) { $params['next_sched_contribution_date'] = date('Y-m-d', strtotime('+' . $existing['frequency_interval'] . ' ' . $existing['frequency_unit'], strtotime($effectiveDate))); } } diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 435c2398139c5005500f97b51c2df4de5616b3e6..cdf5b2f6a1e95ead61d4e2096086438533373826 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -718,7 +718,7 @@ WHERE contribution_id = {$id} $title .= " - {$info['title']}"; } $this->assign('transaction', TRUE); - $this->assign('payments', $paymentInfo['transaction']); + $this->assign('payments', $paymentInfo['transaction'] ?? NULL); $this->assign('paymentLinks', $paymentInfo['payment_links']); return $title; } diff --git a/civicrm/CRM/Contribute/Form/CancelSubscription.php b/civicrm/CRM/Contribute/Form/CancelSubscription.php index 3d0003796ef17921d23f333df25dc55405ba80d6..ecb18817c51b8a088ef19da5eeaeb10622cd0fd7 100644 --- a/civicrm/CRM/Contribute/Form/CancelSubscription.php +++ b/civicrm/CRM/Contribute/Form/CancelSubscription.php @@ -10,15 +10,16 @@ */ use Civi\Payment\PropertyBag; +use Civi\Payment\Exception\PaymentProcessorException; /** * This class provides support for canceling recurring subscriptions. */ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_ContributionRecur { - protected $_userContext = NULL; + protected $_userContext; - protected $_mode = NULL; + protected $_mode; /** * The contributor email @@ -135,16 +136,7 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib $this->buildQuickEntityForm(); // Determine if we can cancel recurring contribution via API with this processor if ($this->_paymentProcessorObj->supports('CancelRecurringNotifyOptional')) { - $searchRange = []; - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('Yes'), '1'); - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('No'), '0'); - - $this->addGroup( - $searchRange, - 'send_cancel_request', - ts('Send cancellation request to %1 ?', - [1 => $this->_paymentProcessorObj->getTitle()]) - ); + $this->addRadio('send_cancel_request', ts('Send cancellation request to %1 ?', [1 => $this->_paymentProcessorObj->getTitle()]), [ts('No'), ts('Yes')]); } else { $this->assign('cancelRecurNotSupportedText', $this->_paymentProcessorObj->getText('cancelRecurNotSupportedText', [])); @@ -196,10 +188,10 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib * Process the form submission. * * @throws \CRM_Core_Exception + * @throws \API_Exception */ public function postProcess() { $message = NULL; - $cancelSubscription = TRUE; $params = $this->controller->exportValues($this->_name); if ($this->isSelfService()) { @@ -222,112 +214,104 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib $propertyBag->setRecurProcessorID($this->getSubscriptionDetails()->processor_id); $message = $this->_paymentProcessorObj->doCancelRecurring($propertyBag)['message']; } - catch (\Civi\Payment\Exception\PaymentProcessorException $e) { + catch (PaymentProcessorException $e) { CRM_Core_Error::statusBounce($e->getMessage()); } - if ($cancelSubscription) { - try { - civicrm_api3('ContributionRecur', 'cancel', [ - 'id' => $this->getSubscriptionDetails()->recur_id, - 'membership_id' => $this->_mid, - 'processor_message' => $message, - 'cancel_reason' => $params['cancel_reason'], - ]); - - $tplParams = []; - if ($this->_mid) { - $inputParams = ['id' => $this->_mid]; - CRM_Member_BAO_Membership::getValues($inputParams, $tplParams); - $tplParams = $tplParams[$this->_mid]; - $tplParams['membership_status'] - = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $tplParams['status_id']); - $tplParams['membershipType'] - = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $tplParams['membership_type_id']); - $status = ts('The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.', [1 => $tplParams['membershipType']]); - $msgTitle = 'Membership Renewal Cancelled'; - $msgType = 'info'; - } - else { - $tplParams['recur_frequency_interval'] = $this->getSubscriptionDetails()->frequency_interval; - $tplParams['recur_frequency_unit'] = $this->getSubscriptionDetails()->frequency_unit; - $tplParams['amount'] = CRM_Utils_Money::format($this->getSubscriptionDetails()->amount, $this->getSubscriptionDetails()->currency); - $tplParams['contact'] = ['display_name' => $this->_donorDisplayName]; - $status = ts('The recurring contribution of %1, every %2 %3 has been cancelled.', - [ - 1 => $tplParams['amount'], - 2 => $tplParams['recur_frequency_interval'], - 3 => $tplParams['recur_frequency_unit'], - ] - ); - $msgTitle = 'Contribution Cancelled'; - $msgType = 'success'; - } - - if (CRM_Utils_Array::value('is_notify', $params) == 1) { - if ($this->getSubscriptionDetails()->contribution_page_id) { - CRM_Core_DAO::commonRetrieveAll( - 'CRM_Contribute_DAO_ContributionPage', - 'id', - $this->getSubscriptionDetails()->contribution_page_id, - $value, - ['title', 'receipt_from_name', 'receipt_from_email'] - ); - $receiptFrom - = '"' . CRM_Utils_Array::value('receipt_from_name', $value[$this->getSubscriptionDetails()->contribution_page_id]) . - '" <' . - $value[$this->getSubscriptionDetails()->contribution_page_id]['receipt_from_email'] . - '>'; - } - else { - $domainValues = CRM_Core_BAO_Domain::getNameAndEmail(); - $receiptFrom = "$domainValues[0] <$domainValues[1]>"; - } - - // send notification - $sendTemplateParams - = [ - 'groupName' => $this->_mode == 'auto_renew' ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution', - 'valueName' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled', - 'contactId' => $this->getSubscriptionDetails()->contact_id, - 'tplParams' => $tplParams, - //'isTest' => $isTest, set this from _objects - 'PDFFilename' => 'receipt.pdf', - 'from' => $receiptFrom, - 'toName' => $this->_donorDisplayName, - 'toEmail' => $this->_donorEmail, - ]; - list($sent) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); - } + try { + civicrm_api3('ContributionRecur', 'cancel', [ + 'id' => $this->getSubscriptionDetails()->recur_id, + 'membership_id' => $this->_mid, + 'processor_message' => $message, + 'cancel_reason' => $params['cancel_reason'], + ]); + + $tplParams = []; + if ($this->_mid) { + $inputParams = ['id' => $this->_mid]; + CRM_Member_BAO_Membership::getValues($inputParams, $tplParams); + $tplParams = $tplParams[$this->_mid]; + $tplParams['membership_status'] + = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $tplParams['status_id']); + $tplParams['membershipType'] + = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $tplParams['membership_type_id']); + $status = ts('The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.', [1 => $tplParams['membershipType']]); + $msgTitle = 'Membership Renewal Cancelled'; + $msgType = 'info'; } - catch (CiviCRM_API3_Exception $e) { - $msgType = 'error'; - $msgTitle = ts('Error'); - if ($params['send_cancel_request'] == 1) { - $status = ts('Recurring contribution was cancelled successfully by the processor, but could not be marked as cancelled in the database.'); + else { + $tplParams['recur_frequency_interval'] = $this->getSubscriptionDetails()->frequency_interval; + $tplParams['recur_frequency_unit'] = $this->getSubscriptionDetails()->frequency_unit; + $tplParams['amount'] = CRM_Utils_Money::format($this->getSubscriptionDetails()->amount, $this->getSubscriptionDetails()->currency); + $tplParams['contact'] = ['display_name' => $this->_donorDisplayName]; + $status = ts('The recurring contribution of %1, every %2 %3 has been cancelled.', + [ + 1 => $tplParams['amount'], + 2 => $tplParams['recur_frequency_interval'], + 3 => $tplParams['recur_frequency_unit'], + ] + ); + $msgTitle = 'Contribution Cancelled'; + $msgType = 'success'; + } + + if (CRM_Utils_Array::value('is_notify', $params) == 1) { + if ($this->getSubscriptionDetails()->contribution_page_id) { + CRM_Core_DAO::commonRetrieveAll( + 'CRM_Contribute_DAO_ContributionPage', + 'id', + $this->getSubscriptionDetails()->contribution_page_id, + $value, + ['title', 'receipt_from_name', 'receipt_from_email'] + ); + $receiptFrom + = '"' . CRM_Utils_Array::value('receipt_from_name', $value[$this->getSubscriptionDetails()->contribution_page_id]) . + '" <' . + $value[$this->getSubscriptionDetails()->contribution_page_id]['receipt_from_email'] . + '>'; } else { - $status = ts('Recurring contribution could not be cancelled in the database.'); + $domainValues = CRM_Core_BAO_Domain::getNameAndEmail(); + $receiptFrom = "$domainValues[0] <$domainValues[1]>"; } + + // send notification + $sendTemplateParams + = [ + 'groupName' => $this->_mode == 'auto_renew' ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution', + 'valueName' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled', + 'contactId' => $this->getSubscriptionDetails()->contact_id, + 'tplParams' => $tplParams, + //'isTest' => $isTest, set this from _objects + 'PDFFilename' => 'receipt.pdf', + 'from' => $receiptFrom, + 'toName' => $this->_donorDisplayName, + 'toEmail' => $this->_donorEmail, + ]; + list($sent) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); } } - else { - $status = ts('The recurring contribution could not be cancelled.'); - $msgTitle = 'Error Cancelling Contribution'; + catch (CiviCRM_API3_Exception $e) { $msgType = 'error'; + $msgTitle = ts('Error'); + if ($params['send_cancel_request'] == 1) { + $status = ts('Recurring contribution was cancelled successfully by the processor, but could not be marked as cancelled in the database.'); + } + else { + $status = ts('Recurring contribution could not be cancelled in the database.'); + } } - $session = CRM_Core_Session::singleton(); - $userID = $session->get('userID'); + $userID = CRM_Core_Session::getLoggedInContactID(); if ($userID && $status) { - $session->setStatus($status, $msgTitle, $msgType); + CRM_Core_Session::singleton()->setStatus($status, $msgTitle, $msgType); } elseif (!$userID) { if ($status) { CRM_Utils_System::setUFMessage($status); // keep result as 1, since we not displaying anything on the redirected page anyway - return CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/subscriptionstatus', - "reset=1&task=cancel&result=1")); + CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/subscriptionstatus', + 'reset=1&task=cancel&result=1')); } } } diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index b063ed269d3cfde58d086887abcb5d1ee17dd91e..d453df3a7c9e482fbf5ab3310130541979402172 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -951,30 +951,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP CRM_Core_Error::statusBounce($e->getMessage(), $urlParams, ts('Payment Processor Error')); } - $session = CRM_Core_Session::singleton(); - $buttonName = $this->controller->getButtonName(); - if ($this->_context == 'standalone') { - if ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contribute/add', - 'reset=1&action=add&context=standalone' - )); - } - else { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', - "reset=1&cid={$this->_contactID}&selectedChild=contribute" - )); - } - } - elseif ($this->_context == 'contribution' && $this->_mode && $buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', - "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}&mode={$this->_mode}" - )); - } - elseif ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', - "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}" - )); - } + $this->setUserContext(); //store contribution ID if not yet set (on create) if (empty($this->_id) && !empty($contribution->id)) { @@ -1737,7 +1714,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP /** * Calculate non deductible amount. * - * CRM-11956 + * @see https://issues.civicrm.org/jira/browse/CRM-11956 * if non_deductible_amount exists i.e. Additional Details field set was opened [and staff typed something] - * if non_deductible_amount does NOT exist - then calculate it depending on: * $financialType->is_deductible and whether there is a product (premium). @@ -1814,4 +1791,34 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } + /** + * Set context in session + */ + public function setUserContext(): void { + $session = CRM_Core_Session::singleton(); + $buttonName = $this->controller->getButtonName(); + if ($this->_context == 'standalone') { + if ($buttonName == $this->getButtonName('upload', 'new')) { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contribute/add', + 'reset=1&action=add&context=standalone' + )); + } + else { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', + "reset=1&cid={$this->_contactID}&selectedChild=contribute" + )); + } + } + elseif ($this->_context == 'contribution' && $this->_mode && $buttonName == $this->getButtonName('upload', 'new')) { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', + "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}&mode={$this->_mode}" + )); + } + elseif ($buttonName == $this->getButtonName('upload', 'new')) { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', + "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}" + )); + } + } + } diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php index f478e80e708e3530ca2b2fee3962e677c4077719..228e285dfdee18ffeef735d6bf931e6d444bc852 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php @@ -201,7 +201,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr * * This is a bit too much about wierd form interpretation to be this deep. * - * CRM-11885 + * @see https://issues.civicrm.org/jira/browse/CRM-11885 * if non_deductible_amount exists i.e. Additional Details fieldset was opened [and staff typed something] -> keep * it. * @@ -954,7 +954,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } $smarty = CRM_Core_Smarty::singleton(); $smarty->assign('dataArray', $dataArray); - $smarty->assign('totalTaxAmount', $params['tax_amount']); + $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL); } // lets store it in the form variable so postProcess hook can get to this and use it diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index c8e0ccfddc681d49b9395f2a7321b5314c73471f..d215092d92b42976236475f2c438b5872f2f5a51 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -444,10 +444,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"] ); $extraOption = ['onclick' => "return pcpAnonymous( );"]; - $elements = []; - $elements[] = &$this->createElement('radio', NULL, '', ts('Include my name and message'), 0, $extraOption); - $elements[] = &$this->createElement('radio', NULL, '', ts('List my contribution anonymously'), 1, $extraOption); - $this->addGroup($elements, 'pcp_is_anonymous', NULL, ' '); + $this->addRadio('pcp_is_anonymous', NULL, [ts('Include my name and message'), ts('List my contribution anonymously')], [], ' ', FALSE, [$extraOption, $extraOption]); $this->add('text', 'pcp_roll_nickname', ts('Name'), ['maxlength' => 30]); $this->addField('pcp_personal_note', ['entity' => 'ContributionSoft', 'context' => 'create', 'style' => 'height: 3em; width: 40em;']); diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index ca2805d551eb1e0849df356b4d6be2f3501cc2a3..6822a355f6f560c8009ab857d72a366839da5c50 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -222,7 +222,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->_emailExists = $this->get('emailExists'); // this was used prior to the cleverer this_>getContactID - unsure now - $this->_userID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $this->_userID = CRM_Core_Session::getLoggedInContactID(); $this->_contactID = $this->_membershipContactID = $this->getContactID(); $this->_mid = NULL; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php index 1d7d518ce362a7610fbcd966568bca8e978da887..dc96867c0aee53f1a74c8d1d3bfd249f106d7770 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php @@ -157,10 +157,7 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $this->addProfileSelector('onbehalf_profile_id', ts('Organization Profile'), $allowCoreTypes, $allowSubTypes, $entities); - $options = []; - $options[] = $this->createElement('radio', NULL, NULL, ts('Optional'), 1); - $options[] = $this->createElement('radio', NULL, NULL, ts('Required'), 2); - $this->addGroup($options, 'is_for_organization', ''); + $this->addRadio('is_for_organization', '', [1 => ts('Optional'), 2 => ts('Required')]); $this->add('textarea', 'for_organization', ts('On behalf of Label'), ['rows' => 2, 'cols' => 50]); // collect goal amount @@ -349,8 +346,17 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ foreach ($ufJoinParams as $index => $ufJoinParam) { if (!empty($params[$index])) { - // first delete all past entries - CRM_Core_BAO_UFJoin::deleteAll($ufJoinParam); + // Look for an existing entry + $ufJoinDAO = new CRM_Core_DAO_UFJoin(); + $ufJoinDAO->module = $ufJoinParam['module']; + $ufJoinDAO->entity_table = 'civicrm_contribution_page'; + $ufJoinDAO->entity_id = $ufJoinParam['entity_id']; + $ufJoinDAO->find(TRUE); + + if (!empty($ufJoinDAO->id)) { + $ufJoinParam['id'] = $ufJoinDAO->id; + } + $ufJoinParam['uf_group_id'] = $params[$index]; $ufJoinParam['weight'] = 1; $ufJoinParam['is_active'] = 1; diff --git a/civicrm/CRM/Contribute/Form/ContributionRecur.php b/civicrm/CRM/Contribute/Form/ContributionRecur.php index ce6ae68a07b552398217be900da313ea3836dd8d..ef6a633f45e6393c1c465255a02245eacb91699b 100644 --- a/civicrm/CRM/Contribute/Form/ContributionRecur.php +++ b/civicrm/CRM/Contribute/Form/ContributionRecur.php @@ -87,7 +87,7 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { /** * Details of the subscription (recurring contribution) to be altered. * - * @var array + * @var \CRM_Core_DAO */ protected $subscriptionDetails = []; @@ -179,7 +179,7 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { /** * Get details for the recurring contribution being altered. * - * @return array + * @return \CRM_Core_DAO */ public function getSubscriptionDetails() { return $this->subscriptionDetails; diff --git a/civicrm/CRM/Contribute/Form/Search.php b/civicrm/CRM/Contribute/Form/Search.php index 3eef9ebb6e397592dc178293582b7d8768c7ccdf..4f1009b41a07fc20f24c348d8ab1322c80f6111b 100644 --- a/civicrm/CRM/Contribute/Form/Search.php +++ b/civicrm/CRM/Contribute/Form/Search.php @@ -307,9 +307,6 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search { } } - // @todo - stop changing formValues - respect submitted form values, change a working array. - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - // @todo - stop changing formValues - respect submitted form values, change a working array. $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php index d189158cd8a0402c128c2309da5751b33bc0e47c..b2087a6474622c69e45469aa23d3e36017085efd 100644 --- a/civicrm/CRM/Contribute/Form/Task/Invoice.php +++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php @@ -9,9 +9,6 @@ +--------------------------------------------------------------------+ */ -use Dompdf\Dompdf; -use Dompdf\Options; - /** * * @package CRM @@ -479,7 +476,11 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { 'metric' => 'px', ]); // functions call for adding activity with attachment - $fileName = self::putFile($html, $pdfFileName); + $fileName = self::putFile($html, $pdfFileName, [ + 'margin_top' => 10, + 'margin_left' => 65, + 'metric' => 'px', + ]); self::addActivities($subject, $contactIds, $fileName, $params); CRM_Utils_System::civiExit(); @@ -554,22 +555,13 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { * Content for pdf in html format. * * @param string $name + * @param array $format * * @return string * Name of file which is in pdf format */ - public static function putFile($html, $name = 'Invoice.pdf') { - $options = new Options(); - $options->set('isRemoteEnabled', TRUE); - - $doc = new DOMPDF($options); - $doc->load_html($html); - $doc->render(); - $html = $doc->output(); - $config = CRM_Core_Config::singleton(); - $fileName = $config->uploadDir . $name; - file_put_contents($fileName, $html); - return $fileName; + public static function putFile($html, $name = 'Invoice.pdf', $format = NULL) { + return CRM_Utils_Mail::appendPDF($name, $html, $format)['fullPath'] ?? ''; } /** diff --git a/civicrm/CRM/Contribute/Form/Task/PDF.php b/civicrm/CRM/Contribute/Form/Task/PDF.php index 76dac1989fb10104e73d07fed177da16684294bb..e05ebab9d5a8b5619228e67cda7e7dc9f7a21df0 100644 --- a/civicrm/CRM/Contribute/Form/Task/PDF.php +++ b/civicrm/CRM/Contribute/Form/Task/PDF.php @@ -184,7 +184,6 @@ AND {$this->_componentClause}"; // CRM_Contribute_BAO_Contribution::composeMessageArray expects mysql formatted date $objects['contribution']->receive_date = CRM_Utils_Date::isoToMysql($objects['contribution']->receive_date); - $values = []; if (isset($params['from_email_address']) && !$elements['createPdf']) { // If a logged in user from email is used rather than a domain wide from email address // the from_email_address params key will be numerical and we need to convert it to be @@ -196,8 +195,7 @@ AND {$this->_componentClause}"; $input['receipt_from_name'] = str_replace('"', '', $fromDetails[0]); } - $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $objects['contribution']->id, $values, - $elements['createPdf']); + $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $objects['contribution']->id, $elements['createPdf']); if ($mail['html']) { $message[] = $mail['html']; @@ -253,7 +251,7 @@ AND {$this->_componentClause}"; $pdfElements['contribIDs'] = implode(',', $contribIds); - $pdfElements['details'] = CRM_Contribute_Form_Task_Status::getDetails($pdfElements['contribIDs']); + $pdfElements['details'] = self::getDetails($pdfElements['contribIDs']); $pdfElements['baseIPN'] = new CRM_Core_Payment_BaseIPN(); @@ -295,4 +293,47 @@ AND {$this->_componentClause}"; return $pdfElements; } + /** + * @param string $contributionIDs + * + * @return array + */ + private static function getDetails($contributionIDs) { + if (empty($contributionIDs)) { + return []; + } + $query = " +SELECT c.id as contribution_id, + c.contact_id as contact_id , + mp.membership_id as membership_id , + pp.participant_id as participant_id , + p.event_id as event_id +FROM civicrm_contribution c +LEFT JOIN civicrm_membership_payment mp ON mp.contribution_id = c.id +LEFT JOIN civicrm_participant_payment pp ON pp.contribution_id = c.id +LEFT JOIN civicrm_participant p ON pp.participant_id = p.id +WHERE c.id IN ( $contributionIDs )"; + + $rows = []; + $dao = CRM_Core_DAO::executeQuery($query); + + while ($dao->fetch()) { + $rows[$dao->contribution_id]['component'] = $dao->participant_id ? 'event' : 'contribute'; + $rows[$dao->contribution_id]['contact'] = $dao->contact_id; + if ($dao->membership_id) { + if (!array_key_exists('membership', $rows[$dao->contribution_id])) { + $rows[$dao->contribution_id]['membership'] = []; + } + $rows[$dao->contribution_id]['membership'][] = $dao->membership_id; + } + if ($dao->participant_id) { + $rows[$dao->contribution_id]['participant'] = $dao->participant_id; + } + if ($dao->event_id) { + $rows[$dao->contribution_id]['event'] = $dao->event_id; + } + } + return $rows; + } + } diff --git a/civicrm/CRM/Contribute/Form/Task/Status.php b/civicrm/CRM/Contribute/Form/Task/Status.php index e3c2a6e7daa1b769f2e689ddc4efc3b55755c9dc..496ca718dd4c15c1dac8e79af86568fc58947a77 100644 --- a/civicrm/CRM/Contribute/Form/Task/Status.php +++ b/civicrm/CRM/Contribute/Form/Task/Status.php @@ -68,21 +68,6 @@ AND {$this->_componentClause}"; * Build the form object. */ public function buildQuickForm() { - $status = CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses( - 'contribution', $this->_contributionIds[0] - ); - $byName = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - // FIXME: if it's invalid to transition from Pending to - // In Progress or Overdue, we should move that logic to - // CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses. - foreach (['Pending', 'In Progress', 'Overdue'] as $suppress) { - unset($status[CRM_Utils_Array::key($suppress, $byName)]); - } - $this->add('select', 'contribution_status_id', - ts('Contribution Status'), - $status, - TRUE - ); $this->add('checkbox', 'is_email_receipt', ts('Send e-mail receipt')); $this->setDefaults(['is_email_receipt' => 1]); @@ -106,7 +91,7 @@ AND co.id IN ( $contribIDs )"; $this->_rows = []; $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_Contribution'); $defaults = []; - $now = date("Y-m-d"); + $now = date('Y-m-d'); $paidByOptions = ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::paymentInstrument(); while ($dao->fetch()) { @@ -131,10 +116,10 @@ AND co.id IN ( $contribIDs )"; $row['trxn_date'] = $this->add('datepicker', "trxn_date_{$row['contribution_id']}", ts('Transaction Date'), [], FALSE, ['time' => FALSE]); $defaults["trxn_date_{$row['contribution_id']}"] = $now; - $this->add("text", "check_number_{$row['contribution_id']}", ts('Check Number')); + $this->add('text', "check_number_{$row['contribution_id']}", ts('Check Number')); $defaults["check_number_{$row['contribution_id']}"] = $dao->check_no; - $this->add("select", "payment_instrument_id_{$row['contribution_id']}", ts('Payment Method'), $paidByOptions); + $this->add('select', "payment_instrument_id_{$row['contribution_id']}", ts('Payment Method'), $paidByOptions); $defaults["payment_instrument_id_{$row['contribution_id']}"] = $dao->paid_by; $this->_rows[] = $row; @@ -145,7 +130,7 @@ AND co.id IN ( $contribIDs )"; $this->addButtons([ [ 'type' => 'next', - 'name' => ts('Update Pending Status'), + 'name' => ts('Record Payments'), 'isDefault' => TRUE, ], [ @@ -182,7 +167,7 @@ AND co.id IN ( $contribIDs )"; $contribID = substr($name, 13); if ($fields["payment_instrument_id_{$contribID}"] != CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'payment_instrument_id', 'Check')) { - $errors["payment_instrument_id_{$contribID}"] = ts("Payment Method should be Check when a check number is entered for a contribution."); + $errors["payment_instrument_id_{$contribID}"] = ts('Payment Method should be Check when a check number is entered for a contribution.'); } } } @@ -198,7 +183,7 @@ AND co.id IN ( $contribIDs )"; // submit the form with values. self::processForm($this, $params); - CRM_Core_Session::setStatus(ts('Contribution status has been updated for selected record(s).'), ts('Status Updated'), 'success'); + CRM_Core_Session::setStatus(ts('Payments have been recorded for selected record(s).'), ts('Payments recorded'), 'success'); } /** @@ -212,124 +197,26 @@ AND co.id IN ( $contribIDs )"; * @throws \Exception */ public static function processForm($form, $params) { - $statusID = $params['contribution_status_id'] ?? NULL; - $baseIPN = new CRM_Core_Payment_BaseIPN(); - - // get the missing pieces for each contribution - $contribIDs = implode(',', $form->_contributionIds); - $details = self::getDetails($contribIDs); - $template = CRM_Core_Smarty::singleton(); - - // for each contribution id, we just call the baseIPN stuff foreach ($form->_rows as $row) { - $input = $ids = $objects = []; - $input['component'] = $details[$row['contribution_id']]['component']; - - $ids['contact'] = $row['contact_id']; - $ids['contribution'] = $row['contribution_id']; - $ids['contributionRecur'] = NULL; - $ids['contributionPage'] = NULL; - $ids['membership'] = $details[$row['contribution_id']]['membership'] ?? NULL; - $ids['participant'] = $details[$row['contribution_id']]['participant'] ?? NULL; - $ids['event'] = $details[$row['contribution_id']]['event'] ?? NULL; - - if (!$baseIPN->validateData($input, $ids, $objects, FALSE)) { - CRM_Core_Error::statusBounce('Supplied data was not able to be validated'); - } - - $contribution = &$objects['contribution']; - - $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, - 'name' - ); - - if ($statusID == array_search('Cancelled', $contributionStatuses)) { - $transaction = new CRM_Core_Transaction(); - $baseIPN->cancelled($objects, $transaction); - $transaction->commit(); - continue; - } - elseif ($statusID == array_search('Failed', $contributionStatuses)) { - $transaction = new CRM_Core_Transaction(); - $baseIPN->failed($objects, $transaction); - $transaction->commit(); - continue; - } - - // status is not pending - if ($contribution->contribution_status_id != array_search('Pending', - $contributionStatuses - ) - ) { - continue; - } - - // set some fake input values so we can reuse IPN code - $input['amount'] = $contribution->total_amount; - $input['is_test'] = $contribution->is_test; - $input['fee_amount'] = $params["fee_amount_{$row['contribution_id']}"]; - $input['check_number'] = $params["check_number_{$row['contribution_id']}"]; - $input['payment_instrument_id'] = $params["payment_instrument_id_{$row['contribution_id']}"]; - $input['net_amount'] = $contribution->total_amount - $input['fee_amount']; - - if (!empty($params["trxn_id_{$row['contribution_id']}"])) { - $input['trxn_id'] = trim($params["trxn_id_{$row['contribution_id']}"]); - } - else { - $input['trxn_id'] = $contribution->invoice_id; - } - $input['trxn_date'] = $params["trxn_date_{$row['contribution_id']}"] . ' ' . date('H:i:s'); - $input['is_email_receipt'] = !empty($params['is_email_receipt']); - - // @todo calling CRM_Contribute_BAO_Contribution::completeOrder like this is a pattern in it's last gasps. Call contribute.completetransaction api. - CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects); - - // reset template values before processing next transactions - $template->clearTemplateVars(); - } - } - - /** - * @param string $contributionIDs - * - * @return array - */ - public static function &getDetails($contributionIDs) { - if (empty($contributionIDs)) { - return []; - } - $query = " -SELECT c.id as contribution_id, - c.contact_id as contact_id , - mp.membership_id as membership_id , - pp.participant_id as participant_id , - p.event_id as event_id -FROM civicrm_contribution c -LEFT JOIN civicrm_membership_payment mp ON mp.contribution_id = c.id -LEFT JOIN civicrm_participant_payment pp ON pp.contribution_id = c.id -LEFT JOIN civicrm_participant p ON pp.participant_id = p.id -WHERE c.id IN ( $contributionIDs )"; - - $rows = []; - $dao = CRM_Core_DAO::executeQuery($query); - - while ($dao->fetch()) { - $rows[$dao->contribution_id]['component'] = $dao->participant_id ? 'event' : 'contribute'; - $rows[$dao->contribution_id]['contact'] = $dao->contact_id; - if ($dao->membership_id) { - if (!array_key_exists('membership', $rows[$dao->contribution_id])) { - $rows[$dao->contribution_id]['membership'] = []; - } - $rows[$dao->contribution_id]['membership'][] = $dao->membership_id; - } - if ($dao->participant_id) { - $rows[$dao->contribution_id]['participant'] = $dao->participant_id; - } - if ($dao->event_id) { - $rows[$dao->contribution_id]['event'] = $dao->event_id; - } + $contribData = civicrm_api3('Contribution', 'getSingle', ['id' => $row['contribution_id']]); + $trxnParams = [ + 'contribution_id' => $row['contribution_id'], + // We are safe assuming that payments will be for the total amount of + // the contribution because the contributions must be in "Pending" + // status. + 'total_amount' => $contribData['total_amount'], + 'fee_amount' => $params["fee_amount_{$row['contribution_id']}"], + 'check_number' => $params["check_number_{$row['contribution_id']}"], + 'payment_instrument_id' => $params["payment_instrument_id_{$row['contribution_id']}"], + 'net_amount' => $contribData['total_amount'] - $params["fee_amount_{$row['contribution_id']}"], + // Not sure why to default to invoice_id, but that's what the form has + // been doing historically + 'trxn_id' => $params["trxn_id_{$row['contribution_id']}"] ?? $contribData['invoice_id'], + 'trxn_date' => $params["trxn_date_{$row['contribution_id']}"] ?? 'now', + 'is_send_contribution_notification' => !empty($params['is_email_receipt']), + ]; + $result = civicrm_api3('Payment', 'create', $trxnParams); } - return $rows; } } diff --git a/civicrm/CRM/Contribute/Import/Form/DataSource.php b/civicrm/CRM/Contribute/Import/Form/DataSource.php index bdb1e521cc9fa50bc0d64f2ccad96a62eecf9415..f1c72357c7bf9c41b5158909bff8c4db3262f816 100644 --- a/civicrm/CRM/Contribute/Import/Form/DataSource.php +++ b/civicrm/CRM/Contribute/Import/Form/DataSource.php @@ -31,15 +31,10 @@ class CRM_Contribute_Import_Form_DataSource extends CRM_Import_Form_DataSource { parent::buildQuickForm(); $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Insert new contributions'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update existing contributions'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('Import mode') - ); + $this->addRadio('onDuplicate', ts('Import mode'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Insert new contributions'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update existing contributions'), + ]); $this->setDefaults(['onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP]); diff --git a/civicrm/CRM/Contribute/Page/AJAX.php b/civicrm/CRM/Contribute/Page/AJAX.php index 84a7a68c017430ff599f1d3b4f68eb1a51aeb70b..19f7c7ee80cbeb743ff6a852d1eac0e4f3499fb0 100644 --- a/civicrm/CRM/Contribute/Page/AJAX.php +++ b/civicrm/CRM/Contribute/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Contribute/Task.php b/civicrm/CRM/Contribute/Task.php index 9a88cfc6d51ad802e97268955d6a8e6e82d02a0b..24feae8a8797bf4ffe93389c0a468782a6e46544 100644 --- a/civicrm/CRM/Contribute/Task.php +++ b/civicrm/CRM/Contribute/Task.php @@ -81,7 +81,7 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'result' => TRUE, ], self::UPDATE_STATUS => [ - 'title' => ts('Update pending contribution status'), + 'title' => ts('Record payments for contributions'), 'class' => 'CRM_Contribute_Form_Task_Status', 'result' => TRUE, ], diff --git a/civicrm/CRM/Core/BAO/ActionLog.php b/civicrm/CRM/Core/BAO/ActionLog.php index 877c88b8ae5aa9173fd847ddfb37ae2429ad15b1..33fffada1db4cff592ec4dc736549802034a7588 100644 --- a/civicrm/CRM/Core/BAO/ActionLog.php +++ b/civicrm/CRM/Core/BAO/ActionLog.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php index a53e0e623278acb7ba7a1eb4b8f4df4aa58b8267..47fdd617ca17d8a5331c6339464548dd40fc1568 100644 --- a/civicrm/CRM/Core/BAO/ActionSchedule.php +++ b/civicrm/CRM/Core/BAO/ActionSchedule.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php index c0f6561c8a41c624b622d2725403b33c9bbb304d..ea7da9440c15adeb8cf30a5c1d73ce4dfc23e5ba 100644 --- a/civicrm/CRM/Core/BAO/Address.php +++ b/civicrm/CRM/Core/BAO/Address.php @@ -142,10 +142,14 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address { } $address->copyValues($params); - $address->save(); if ($address->id) { + // first get custom field from master address if any + if (isset($params['master_id']) && !CRM_Utils_System::isNull($params['master_id'])) { + $address->copyCustomFields($params['master_id'], $address->id); + } + if (isset($params['custom'])) { $addressCustom = $params['custom']; } @@ -1060,6 +1064,7 @@ SELECT is_primary, $addressDAO->copyValues($params); $addressDAO->id = $dao->id; $addressDAO->save(); + $addressDAO->copyCustomFields($addressId, $addressDAO->id); } } diff --git a/civicrm/CRM/Core/BAO/Block.php b/civicrm/CRM/Core/BAO/Block.php index 876cd323c5b2d8024ea3d2de1e68afba3bfc2b95..0689b0a495bdad7d84dd45ad77f59ac45a2385e1 100644 --- a/civicrm/CRM/Core/BAO/Block.php +++ b/civicrm/CRM/Core/BAO/Block.php @@ -10,11 +10,10 @@ */ /** + * Add static functions to include some common functionality used across location sub object BAO classes. * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * - * Add static functions to include some common functionality used across location sub object BAO classes. */ class CRM_Core_BAO_Block { @@ -440,7 +439,7 @@ class CRM_Core_BAO_Block { /* * If the only existing email is the one we are editing then we must set * is_primary to 1 - * CRM-10451 + * @see https://issues.civicrm.org/jira/browse/CRM-10451 */ if ($existingEntities->N == 1 && $existingEntities->id == CRM_Utils_Array::value('id', $params)) { $params['is_primary'] = 1; diff --git a/civicrm/CRM/Core/BAO/Cache.php b/civicrm/CRM/Core/BAO/Cache.php index a13a6fee8588cfa91a32a185e93cc35e45477f6a..c7534119308217a3588a0a93000e25b9706d70f3 100644 --- a/civicrm/CRM/Core/BAO/Cache.php +++ b/civicrm/CRM/Core/BAO/Cache.php @@ -33,225 +33,10 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { */ const DEFAULT_SESSION_TTL = 172800; - /** - * Cache. - * - * Format is ($cacheKey => $cacheValue) - * - * @var array - */ - public static $_cache = NULL; - - /** - * Retrieve an item from the DB cache. - * - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @return object - * The data if present in cache, else null - * @deprecated - */ - public static function &getItem($group, $path, $componentID = NULL) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::getItem is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - $value = $adapter::getItem($group, $path, $componentID); - return $value; - } - - if (self::$_cache === NULL) { - self::$_cache = []; - } - - $argString = "CRM_CT_{$group}_{$path}_{$componentID}"; - if (!array_key_exists($argString, self::$_cache)) { - $cache = CRM_Utils_Cache::singleton(); - $cleanKey = self::cleanKey($argString); - self::$_cache[$argString] = $cache->get($cleanKey); - if (self::$_cache[$argString] === NULL) { - $table = self::getTableName(); - $where = self::whereCache($group, $path, $componentID); - $rawData = CRM_Core_DAO::singleValueQuery("SELECT data FROM $table WHERE $where"); - $data = $rawData ? self::decode($rawData) : NULL; - - self::$_cache[$argString] = $data; - if ($data !== NULL) { - // Do not cache 'null' as that is most likely a cache miss & we shouldn't then cache it. - $cache->set($cleanKey, self::$_cache[$argString]); - } - } - } - return self::$_cache[$argString]; - } - - /** - * Retrieve all items in a group. - * - * @param string $group - * (required) The group name of the item. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @return object - * The data if present in cache, else null - * @deprecated - */ - public static function &getItems($group, $componentID = NULL) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::getItems is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - return $adapter::getItems($group, $componentID); - } - - if (self::$_cache === NULL) { - self::$_cache = []; - } - - $argString = "CRM_CT_CI_{$group}_{$componentID}"; - if (!array_key_exists($argString, self::$_cache)) { - $cache = CRM_Utils_Cache::singleton(); - $cleanKey = self::cleanKey($argString); - self::$_cache[$argString] = $cache->get($cleanKey); - if (!self::$_cache[$argString]) { - $table = self::getTableName(); - $where = self::whereCache($group, NULL, $componentID); - $dao = CRM_Core_DAO::executeQuery("SELECT path, data FROM $table WHERE $where"); - - $result = []; - while ($dao->fetch()) { - $result[$dao->path] = self::decode($dao->data); - } - - self::$_cache[$argString] = $result; - $cache->set($cleanKey, self::$_cache[$argString]); - } - } - - return self::$_cache[$argString]; - } - - /** - * Store an item in the DB cache. - * - * @param object $data - * (required) A reference to the data that will be serialized and stored. - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * @deprecated - * @throws CRM_Core_Exception - */ - public static function setItem(&$data, $group, $path, $componentID = NULL) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::setItem is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - return $adapter::setItem($data, $group, $path, $componentID); - } - - if (self::$_cache === NULL) { - self::$_cache = []; - } - - // get a lock so that multiple ajax requests on the same page - // dont trample on each other - // CRM-11234 - $lock = Civi::lockManager()->acquire("cache.{$group}_{$path}._{$componentID}"); - if (!$lock->isAcquired()) { - throw new CRM_Core_Exception('Cannot acquire database lock'); - } - - $table = self::getTableName(); - $where = self::whereCache($group, $path, $componentID); - $dataExists = CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM $table WHERE {$where}"); - // FIXME - Use SQL NOW() or CRM_Utils_Time? - $now = date('Y-m-d H:i:s'); - $dataSerialized = self::encode($data); - - // This table has a wonky index, so we cannot use REPLACE or - // "INSERT ... ON DUPE". Instead, use SELECT+(INSERT|UPDATE). - if ($dataExists) { - $sql = "UPDATE $table SET data = %1, created_date = %2 WHERE {$where}"; - $args = [ - 1 => [$dataSerialized, 'String'], - 2 => [$now, 'String'], - ]; - $dao = CRM_Core_DAO::executeQuery($sql, $args, TRUE, NULL, FALSE, FALSE); - } - else { - $insert = CRM_Utils_SQL_Insert::into($table) - ->row([ - 'group_name' => $group, - 'path' => $path, - 'component_id' => $componentID, - 'data' => $dataSerialized, - 'created_date' => $now, - ]); - $dao = CRM_Core_DAO::executeQuery($insert->toSQL(), [], TRUE, NULL, FALSE, FALSE); - } - - $lock->release(); - - // cache coherency - refresh or remove dependent caches - - $argString = "CRM_CT_{$group}_{$path}_{$componentID}"; - $cache = CRM_Utils_Cache::singleton(); - $data = self::decode($dataSerialized); - self::$_cache[$argString] = $data; - $cache->set(self::cleanKey($argString), $data); - - $argString = "CRM_CT_CI_{$group}_{$componentID}"; - unset(self::$_cache[$argString]); - $cache->delete(self::cleanKey($argString)); - } - - /** - * Delete all the cache elements that belong to a group OR delete the entire cache if group is not specified. - * - * @param string $group - * The group name of the entries to be deleted. - * @param string $path - * Path of the item that needs to be deleted. - * @param bool $clearAll clear all caches - * @deprecated - */ - public static function deleteGroup($group = NULL, $path = NULL, $clearAll = TRUE) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::deleteGroup is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - return $adapter::deleteGroup($group, $path); - } - else { - $table = self::getTableName(); - $where = self::whereCache($group, $path, NULL); - CRM_Core_DAO::executeQuery("DELETE FROM $table WHERE $where"); - } - - if ($clearAll) { - self::resetCaches(); - } - } - /** * Cleanup ACL and System Level caches */ public static function resetCaches() { - // also reset ACL Cache - // @todo why is this called when CRM_Utils_System::flushCache() does it as well. - CRM_ACL_BAO_Cache::resetCache(); - - // also reset memory cache if any CRM_Utils_System::flushCache(); } @@ -476,6 +261,7 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { * @see CRM_Utils_Cache::cleanKey() */ public static function cleanKey($key) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Utils_Cache::cleanKey'); return CRM_Utils_Cache::cleanKey($key); } diff --git a/civicrm/CRM/Core/BAO/Cache/Psr16.php b/civicrm/CRM/Core/BAO/Cache/Psr16.php deleted file mode 100644 index 1255f6d8a91376fc41af95775e9edb0d8c171a92..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Core/BAO/Cache/Psr16.php +++ /dev/null @@ -1,215 +0,0 @@ -<?php - -/* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - -/** - * Class CRM_Core_BAO_Cache_Psr16 - * - * This optional adapter to help phase-out CRM_Core_BAO_Cache. - * - * In effect, it changes the default behavior of legacy cache-consumers - * (CRM_Core_BAO_Cache) so that they store in the best-available tier - * (Reds/Memcache or SQL or array) rather than being hard-coded to SQL. - * - * It basically just calls "CRM_Utils_Cache::create()" for each $group and - * maps the getItem/setItem to get()/set(). - */ -class CRM_Core_BAO_Cache_Psr16 { - - /** - * Original BAO behavior did not do expiration. PSR-16 providers have - * diverse defaults. To provide some consistency, we'll pick a long(ish) - * TTL for everything that goes through the adapter. - */ - const TTL = 86400; - - /** - * @param string $group - * @return CRM_Utils_Cache_Interface - */ - protected static function getGroup($group) { - if (!isset(Civi::$statics[__CLASS__][$group])) { - if (!in_array($group, self::getLegacyGroups())) { - Civi::log() - ->warning('Unrecognized BAO cache group ({group}). This should work generally, but data may not be flushed in some edge-cases. Consider migrating explicitly to PSR-16.', [ - 'group' => $group, - ]); - } - - $cache = CRM_Utils_Cache::create([ - 'name' => "bao_$group", - 'type' => ['*memory*', 'SqlGroup', 'ArrayCache'], - // We're replacing CRM_Core_BAO_Cache, which traditionally used a front-cache - // that was not aware of TTLs. So it seems more consistent/performant to - // use 'fast' here. - 'withArray' => 'fast', - ]); - Civi::$statics[__CLASS__][$group] = $cache; - } - return Civi::$statics[__CLASS__][$group]; - } - - /** - * Retrieve an item from the DB cache. - * - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @return object - * The data if present in cache, else null - */ - public static function getItem($group, $path, $componentID = NULL) { - // TODO: Generate a general deprecation notice. - if ($componentID) { - Civi::log() - ->warning('getItem({group},{path},...) uses unsupported componentID. Consider migrating explicitly to PSR-16.', [ - 'group' => $group, - 'path' => $path, - ]); - } - return self::getGroup($group)->get(CRM_Utils_Cache::cleanKey($path)); - } - - /** - * Retrieve all items in a group. - * - * @param string $group - * (required) The group name of the item. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @throws CRM_Core_Exception - */ - public static function &getItems($group, $componentID = NULL) { - // Based on grepping universe, this function is not currently used. - // Moreover, it's hard to implement in PSR-16. (We'd have to extend the - // interface.) Let's wait and see if anyone actually needs this... - throw new \CRM_Core_Exception('Not implemented: CRM_Core_BAO_Cache_Psr16::getItems'); - } - - /** - * Store an item in the DB cache. - * - * @param object $data - * (required) A reference to the data that will be serialized and stored. - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - */ - public static function setItem(&$data, $group, $path, $componentID = NULL) { - // TODO: Generate a general deprecation notice. - - if ($componentID) { - Civi::log() - ->warning('setItem({group},{path},...) uses unsupported componentID. Consider migrating explicitly to PSR-16.', [ - 'group' => $group, - 'path' => $path, - ]); - } - self::getGroup($group) - ->set(CRM_Utils_Cache::cleanKey($path), $data, self::TTL); - } - - /** - * Delete all the cache elements that belong to a group OR delete the entire cache if group is not specified. - * - * @param string $group - * The group name of the entries to be deleted. - * @param string $path - * Path of the item that needs to be deleted. - */ - public static function deleteGroup($group = NULL, $path = NULL) { - // FIXME: Generate a general deprecation notice. - - if ($path) { - self::getGroup($group)->delete(CRM_Utils_Cache::cleanKey($path)); - } - else { - self::getGroup($group)->clear(); - } - } - - /** - * Cleanup any caches that we've mapped. - * - * Traditional SQL-backed caches are cleared as a matter of course during a - * system flush (by way of "TRUNCATE TABLE civicrm_cache"). This provides - * a spot where the adapter can - */ - public static function clearDBCache() { - foreach (self::getLegacyGroups() as $groupName) { - $group = self::getGroup($groupName); - $group->clear(); - } - } - - /** - * Get a list of known cache-groups - * - * @return array - */ - public static function getLegacyGroups() { - $groups = [ - // Universe - - // biz.jmaconsulting.lineitemedit - 'lineitem-editor', - - // civihr/uk.co.compucorp.civicrm.hrcore - 'HRCore_Info', - - ]; - // Handle Legacy Multisite caching group. - $extensions = CRM_Extension_System::singleton()->getManager(); - $multisiteExtensionStatus = $extensions->getStatus('org.civicrm.multisite'); - if ($multisiteExtensionStatus == $extensions::STATUS_INSTALLED) { - $extension_version = civicrm_api3('Extension', 'get', ['key' => 'org.civicrm.multisite'])['values'][0]['version']; - if (version_compare($extension_version, '2.7', '<')) { - Civi::log()->warning( - 'CRM_Core_BAO_Cache_PSR is deprecated for multisite extension, you should upgrade to the latest version to avoid this warning, this code will be removed at the end of 2019', - ['civi.tag' => 'deprecated'] - ); - $groups[] = 'descendant groups for an org'; - } - } - $entitySettingExtensionStatus = $extensions->getStatus('nz.co.fuzion.entitysetting'); - if ($multisiteExtensionStatus == $extensions::STATUS_INSTALLED) { - $extension_version = civicrm_api3('Extension', 'get', ['key' => 'nz.co.fuzion.entitysetting'])['values'][0]['version']; - if (version_compare($extension_version, '1.3', '<')) { - Civi::log()->warning( - 'CRM_Core_BAO_Cache_PSR is deprecated for entity setting extension, you should upgrade to the latest version to avoid this warning, this code will be removed at the end of 2019', - ['civi.tag' => 'deprecated'] - ); - $groups[] = 'CiviCRM setting Spec'; - } - } - $atomFeedsSettingExtensionStatus = $extensions->getStatus('be.chiro.civi.atomfeeds'); - if ($atomFeedsSettingExtensionStatus == $extensions::STATUS_INSTALLED) { - $extension_version = civicrm_api3('Extension', 'get', ['key' => 'be.chiro.civi.atomfeeds'])['values'][0]['version']; - if (version_compare($extension_version, '0.1-alpha2', '<')) { - Civi::log()->warning( - 'CRM_Core_BAO_Cache_PSR is deprecated for Atomfeeds extension, you should upgrade to the latest version to avoid this warning, this code will be removed at the end of 2019', - ['civi.tag' => 'deprecated'] - ); - $groups[] = 'dashboard'; - } - } - return $groups; - } - -} diff --git a/civicrm/CRM/Core/BAO/ConfigSetting.php b/civicrm/CRM/Core/BAO/ConfigSetting.php index c462bae66426c3692bd8010734eee1752b5dc3b1..45e0378974903192132872b49f14eaaffaa01525 100644 --- a/civicrm/CRM/Core/BAO/ConfigSetting.php +++ b/civicrm/CRM/Core/BAO/ConfigSetting.php @@ -119,105 +119,120 @@ class CRM_Core_BAO_ConfigSetting { } /** - * Evaluate locale preferences and activate a chosen locale by - * updating session+global variables. + * Activate a chosen locale. + * + * The locale is set by updating the session and global variables. + * + * When there is a choice of permitted languages (set on the "Administer" -> + * "Localisation" -> "Languages, Currency, Locations" screen) the locale to + * be applied can come from a variety of sources. The list below is the order + * of priority for deciding which of the sources "wins": + * + * - The request - when the "lcMessages" query variable is present in the URL. + * - The session - when the "lcMessages" session variable has been set. + * - Inherited from the CMS - when the "inheritLocale" setting is set. + * - CiviCRM settings - the fallback when none of the above set the locale. + * + * Single-language installs skip this and always set the default locale. * * @param \Civi\Core\SettingsBag $settings * @param string $activatedLocales * Imploded list of locales which are supported in the DB. */ public static function applyLocale($settings, $activatedLocales) { - // are we in a multi-language setup? - $multiLang = (bool) $activatedLocales; - // set the current language - $chosenLocale = NULL; + // Declare access to locale globals. + global $dbLocale, $tsLocale; + // Grab session reference. $session = CRM_Core_Session::singleton(); - $permittedLanguages = CRM_Core_I18n::uiLanguages(TRUE); + // Set flag for multi-language setup. + $multiLang = (bool) $activatedLocales; + + // Initialise the default and chosen locales. + $defaultLocale = $settings->get('lcMessages'); + $chosenLocale = NULL; - // The locale to be used can come from various places: - // - the request (url) - // - the session - // - civicrm_uf_match - // - inherited from the CMS - // Only look at this if there is actually a choice of permitted languages + // When there is a choice of permitted languages. + $permittedLanguages = CRM_Core_I18n::uiLanguages(TRUE); if (count($permittedLanguages) >= 2) { + + // Is the "lcMessages" query variable present in the URL? $requestLocale = CRM_Utils_Request::retrieve('lcMessages', 'String'); if (in_array($requestLocale, $permittedLanguages)) { $chosenLocale = $requestLocale; - - //CRM-8559, cache navigation do not respect locale if it is changed, so reseting cache. - // Ed: This doesn't sound good. - // Civi::cache('navigation')->flush(); - } - else { - $requestLocale = NULL; } - if (!$requestLocale) { + // Check the session if the chosen locale hasn't been set yet. + if (empty($chosenLocale)) { $sessionLocale = $session->get('lcMessages'); if (in_array($sessionLocale, $permittedLanguages)) { $chosenLocale = $sessionLocale; } - else { - $sessionLocale = NULL; - } } - if ($requestLocale) { - $ufm = new CRM_Core_DAO_UFMatch(); - $ufm->contact_id = $session->get('userID'); - if ($ufm->find(TRUE)) { - $ufm->language = $chosenLocale; - $ufm->save(); + /* + * Maybe inherit the language from the CMS. + * + * If the language is specified via "lcMessages" we skip this, since the + * intention of the URL query var is to override all other sources. + */ + if ($settings->get('inheritLocale') && empty($chosenLocale)) { + + /* + * FIXME: On multi-language installs, CRM_Utils_System::getUFLocale() in + * many cases returns nothing if $dbLocale is not set, so set it to the + * default - even if it's overridden later. + */ + $dbLocale = $multiLang && $defaultLocale ? "_{$defaultLocale}" : ''; + + // Retrieve locale as reported by CMS. + $cmsLocale = CRM_Utils_System::getUFLocale(); + if (in_array($cmsLocale, $permittedLanguages)) { + $chosenLocale = $cmsLocale; } - $session->set('lcMessages', $chosenLocale); - } - if (!$chosenLocale and $session->get('userID')) { - $ufm = new CRM_Core_DAO_UFMatch(); - $ufm->contact_id = $session->get('userID'); - if ($ufm->find(TRUE) && - in_array($ufm->language, $permittedLanguages) - ) { - $chosenLocale = $ufm->language; + // Clear chosen locale if not activated in multi-language CiviCRM. + if ($activatedLocales && !in_array($chosenLocale, explode(CRM_Core_DAO::VALUE_SEPARATOR, $activatedLocales))) { + $chosenLocale = NULL; } - $session->set('lcMessages', $chosenLocale); + } - } - global $dbLocale; - - // try to inherit the language from the hosting CMS - // If the language is specified in the session (ie. via lcMessages) we still allow it to be overridden. - if ($settings->get('inheritLocale') && empty($sessionLocale)) { - // FIXME: On multilanguage installs, CRM_Utils_System::getUFLocale() in many cases returns nothing if $dbLocale is not set - $lcMessages = $settings->get('lcMessages'); - $dbLocale = $multiLang && $lcMessages ? "_{$lcMessages}" : ''; - $chosenLocale = CRM_Utils_System::getUFLocale(); - if ($activatedLocales and !in_array($chosenLocale, explode(CRM_Core_DAO::VALUE_SEPARATOR, $activatedLocales))) { - $chosenLocale = NULL; + + // Assign the system default if the chosen locale hasn't been set. + if (empty($chosenLocale)) { + $chosenLocale = $defaultLocale; } + + // Always assign the chosen locale to the session. + $session->set('lcMessages', $chosenLocale); + } + else { + + // CRM-11993 - Use default when it's a single-language install. + $chosenLocale = $defaultLocale; - if (empty($chosenLocale)) { - //CRM-11993 - if a single-lang site, use default - $chosenLocale = $settings->get('lcMessages'); } - // set suffix for table names - use views if more than one language + /* + * Set suffix for table names in multi-language installs. + * Use views if more than one language. + */ $dbLocale = $multiLang && $chosenLocale ? "_{$chosenLocale}" : ''; - // FIXME: an ugly hack to fix CRM-4041 - global $tsLocale; + // FIXME: an ugly hack to fix CRM-4041. $tsLocale = $chosenLocale; - // FIXME: as bad aplace as any to fix CRM-5428 - // (to be moved to a sane location along with the above) + /* + * FIXME: as bad a place as any to fix CRM-5428. + * (to be moved to a sane location along with the above) + */ if (function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } + } /** diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 9278a9755e9aa41cc94999cabe66f83bd4eaab26..66871a7d5d8ea88bad7a04fdaaa1186d653607f7 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -822,12 +822,13 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { // Add and/or option for fields that store multiple values if ($search && self::isSerialized($field)) { - - $operators = [ - $qf->createElement('radio', NULL, '', ts('Any'), 'or', ['title' => ts('Results may contain any of the selected options')]), - $qf->createElement('radio', NULL, '', ts('All'), 'and', ['title' => ts('Results must have all of the selected options')]), - ]; - $qf->addGroup($operators, $elementName . '_operator'); + $qf->addRadio($elementName . '_operator', '', [ + 'or' => ts('Any'), + 'and' => ts('All'), + ], [], NULL, FALSE, [ + 'or' => ['title' => ts('Results may contain any of the selected options')], + 'and' => ['title' => ts('Results must have all of the selected options')], + ]); $qf->setDefaults([$elementName . '_operator' => 'or']); } } @@ -1814,9 +1815,9 @@ WHERE id IN ( %1, %2 ) $add->custom_group_id = $newGroup->id; self::createField($add, 'add'); - $sql = "INSERT INTO {$newGroup->table_name} (entity_id, {$field->column_name}) - SELECT entity_id, {$field->column_name} FROM {$oldGroup->table_name} - ON DUPLICATE KEY UPDATE {$field->column_name} = {$oldGroup->table_name}.{$field->column_name} + $sql = "INSERT INTO {$newGroup->table_name} (entity_id, `{$field->column_name}`) + SELECT entity_id, `{$field->column_name}` FROM {$oldGroup->table_name} + ON DUPLICATE KEY UPDATE `{$field->column_name}` = {$oldGroup->table_name}.`{$field->column_name}` "; CRM_Core_DAO::executeQuery($sql); @@ -2066,10 +2067,10 @@ WHERE id IN ( %1, %2 ) } if (in_array($field['data_type'], $fieldTypesNotHandledInMergeAttempt) && !$isMultiple) { CRM_Core_DAO::executeQuery( - "INSERT INTO {$field['custom_group_id.table_name']} (entity_id, {$field['column_name']}) + "INSERT INTO {$field['custom_group_id.table_name']} (entity_id, `{$field['column_name']}`) VALUES ($newContactID, {$oldContact['custom_' . $field['id']]}) ON DUPLICATE KEY UPDATE - {$field['column_name']} = {$oldContact['custom_' . $field['id']]} + `{$field['column_name']}` = {$oldContact['custom_' . $field['id']]} "); } } diff --git a/civicrm/CRM/Core/BAO/CustomValue.php b/civicrm/CRM/Core/BAO/CustomValue.php index 3a64cdb29d3b57c3f1a09e9120664b726c1433ae..555077b0428c190e93c682eec1395a860316373b 100644 --- a/civicrm/CRM/Core/BAO/CustomValue.php +++ b/civicrm/CRM/Core/BAO/CustomValue.php @@ -175,6 +175,9 @@ class CRM_Core_BAO_CustomValue extends CRM_Core_DAO { ) { $formValues[$key] = ['LIKE' => $formValues[$key]]; } + elseif ($htmlType == 'Autocomplete-Select' && !empty($formValues[$key]) && is_string($formValues[$key]) && (strpos($formValues[$key], ',') != FALSE)) { + $formValues[$key] = ['IN' => explode(',', $formValues[$key])]; + } } } diff --git a/civicrm/CRM/Core/BAO/CustomValueTable.php b/civicrm/CRM/Core/BAO/CustomValueTable.php index 14fe2848f61b8249a6643cfc75a94cc55a6f7c0e..8bfc4fb8add995528e032d0cadb2657caf402177 100644 --- a/civicrm/CRM/Core/BAO/CustomValueTable.php +++ b/civicrm/CRM/Core/BAO/CustomValueTable.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_CustomValueTable { @@ -238,7 +236,7 @@ class CRM_Core_BAO_CustomValueTable { if (!empty($set)) { $setClause = []; foreach ($set as $n => $v) { - $setClause[] = "$n = $v"; + $setClause[] = "`$n` = $v"; } $setClause = implode(',', $setClause); if (!$where) { diff --git a/civicrm/CRM/Core/BAO/Discount.php b/civicrm/CRM/Core/BAO/Discount.php index 812747eb42466b68edfc2893c488e73535e688bd..fee698c05d1b44c9ad50333a41c3b7c1d64d4dfd 100644 --- a/civicrm/CRM/Core/BAO/Discount.php +++ b/civicrm/CRM/Core/BAO/Discount.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_Discount extends CRM_Core_DAO_Discount { diff --git a/civicrm/CRM/Core/BAO/Domain.php b/civicrm/CRM/Core/BAO/Domain.php index 14e885a6e2eaa2da6d62d9e566182998b764bd7c..d65de0c187a154f4efad9cbf120e55459b150dd5 100644 --- a/civicrm/CRM/Core/BAO/Domain.php +++ b/civicrm/CRM/Core/BAO/Domain.php @@ -20,18 +20,22 @@ */ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { - /** - * Cache for the current domain object. - * @var object - */ - public static $_domain = NULL; - /** * Cache for a domain's location array * @var array */ private $_location = NULL; + /** + * Flushes the cache set by getDomain. + * + * @see CRM_Core_BAO_Domain::getDomain() + * @param CRM_Core_DAO_Domain $domain + */ + public static function onPostSave($domain) { + Civi::$statics[__CLASS__]['current'] = NULL; + } + /** * Fetch object based on array of properties. * @@ -47,21 +51,20 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { } /** - * Get the domain BAO. - * - * @param bool $reset + * Get the current domain. * * @return \CRM_Core_BAO_Domain * @throws \CRM_Core_Exception */ - public static function getDomain($reset = NULL) { - static $domain = NULL; - if (!$domain || $reset) { + public static function getDomain() { + $domain = Civi::$statics[__CLASS__]['current'] ?? NULL; + if (!$domain) { $domain = new CRM_Core_BAO_Domain(); $domain->id = CRM_Core_Config::domainID(); if (!$domain->find(TRUE)) { throw new CRM_Core_Exception('No domain in DB'); } + Civi::$statics[__CLASS__]['current'] = $domain; } return $domain; } @@ -69,17 +72,16 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { /** * @param bool $skipUsingCache * - * @return null|string + * @return string * * @throws \CRM_Core_Exception */ public static function version($skipUsingCache = FALSE) { - return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', - CRM_Core_Config::domainID(), - 'version', - 'id', - $skipUsingCache - ); + if ($skipUsingCache) { + Civi::$statics[__CLASS__]['current'] = NULL; + } + + return self::getDomain()->version; } /** @@ -90,7 +92,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { * @throws \CRM_Core_Exception */ public static function isDBUpdateRequired() { - $dbVersion = CRM_Core_BAO_Domain::version(); + $dbVersion = self::version(); $codeVersion = CRM_Utils_System::version(); return version_compare($dbVersion, $codeVersion) < 0; } @@ -108,16 +110,12 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { /** * Get the location values of a domain. * - * @return array - * Location::getValues - * - * @throws \CRM_Core_Exception + * @return CRM_Core_BAO_Location[]|NULL */ - public function &getLocationValues() { + public function getLocationValues() { if ($this->_location == NULL) { - $domain = self::getDomain(NULL); $params = [ - 'contact_id' => $domain->contact_id, + 'contact_id' => $this->contact_id, ]; $this->_location = CRM_Core_BAO_Location::getValues($params, TRUE); @@ -242,9 +240,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { } elseif ($multisite) { // create a group with that of domain name - $title = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', - CRM_Core_Config::domainID(), 'name' - ); + $title = self::getDomain()->name; $groupID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $title, 'id', 'title', TRUE ); @@ -328,7 +324,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { return [$userName, $userEmail]; } - $userID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $userID = CRM_Core_Session::getLoggedInContactID(); if (!empty($userID)) { list($userName, $userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($userID); } diff --git a/civicrm/CRM/Core/BAO/Email.php b/civicrm/CRM/Core/BAO/Email.php index 3ec6dea97f3ba6d973929f168d2f755878a9f774..0dd1bca05a49d314cd910b8415f2e82aa4cba4ba 100644 --- a/civicrm/CRM/Core/BAO/Email.php +++ b/civicrm/CRM/Core/BAO/Email.php @@ -305,7 +305,7 @@ AND reset_date IS NULL $contactFromEmails = []; // add logged in user's active email ids - $contactID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $contactID = CRM_Core_Session::getLoggedInContactID(); if ($contactID) { $contactEmails = self::allEmails($contactID); $fromDisplayName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName(); diff --git a/civicrm/CRM/Core/BAO/FinancialTrxn.php b/civicrm/CRM/Core/BAO/FinancialTrxn.php index e4aeae7bd23d41900fdbc47d1dc39bb60af8e00a..0e1499e208094dd118e7f9b75f941184351aa402 100644 --- a/civicrm/CRM/Core/BAO/FinancialTrxn.php +++ b/civicrm/CRM/Core/BAO/FinancialTrxn.php @@ -415,7 +415,7 @@ WHERE ceft.entity_id = %1"; $fItemParams = [ 'financial_account_id' => $financialAccount, - 'contact_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'contact_id'), + 'contact_id' => CRM_Core_BAO_Domain::getDomain()->contact_id, 'created_date' => date('YmdHis'), 'transaction_date' => $params['trxnParams']['trxn_date'], 'amount' => $amount, diff --git a/civicrm/CRM/Core/BAO/IM.php b/civicrm/CRM/Core/BAO/IM.php index 50cbc5e516489c5fedbb2d33fd96b8c62d0ad9db..3a950122dd68a3318ee5871e4d9a112f5656c91e 100644 --- a/civicrm/CRM/Core/BAO/IM.php +++ b/civicrm/CRM/Core/BAO/IM.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/Job.php b/civicrm/CRM/Core/BAO/Job.php index c4214e60b5263f2dac6cd91be14521c30dbe85b7..e78458fd2c7212b110d0d0aae64a7bdd4b610d55 100644 --- a/civicrm/CRM/Core/BAO/Job.php +++ b/civicrm/CRM/Core/BAO/Job.php @@ -109,7 +109,7 @@ class CRM_Core_BAO_Job extends CRM_Core_DAO_Job { /** * Trim job table on a regular basis to keep it at a good size. * - * CRM-10513 + * @see https://issues.civicrm.org/jira/browse/CRM-10513 * * @param int $maxEntriesToKeep * @param int $minDaysToKeep diff --git a/civicrm/CRM/Core/BAO/Location.php b/civicrm/CRM/Core/BAO/Location.php index e2d393976cf114715d0b1406dcd6bf0edfcfda6e..6af1d85bc8cf9cf639737ff56d3f7dc66d953944 100644 --- a/civicrm/CRM/Core/BAO/Location.php +++ b/civicrm/CRM/Core/BAO/Location.php @@ -226,10 +226,9 @@ WHERE e.id = %1"; * @param array $entityBlock * @param bool $microformat * - * @return array - * array of objects(CRM_Core_BAO_Location) + * @return CRM_Core_BAO_Location[]|NULL */ - public static function &getValues($entityBlock, $microformat = FALSE) { + public static function getValues($entityBlock, $microformat = FALSE) { if (empty($entityBlock)) { return NULL; } diff --git a/civicrm/CRM/Core/BAO/LocationType.php b/civicrm/CRM/Core/BAO/LocationType.php index 54cdf07352c9d016a16b8de28ba3b9bc3cbcd4f0..ae3b83d068e187dc685bbdb8b7b4ee41d8ed9308 100644 --- a/civicrm/CRM/Core/BAO/LocationType.php +++ b/civicrm/CRM/Core/BAO/LocationType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_LocationType extends CRM_Core_DAO_LocationType { diff --git a/civicrm/CRM/Core/BAO/MailSettings.php b/civicrm/CRM/Core/BAO/MailSettings.php index 173dd3457d8fcdfc311f3750572150aa8176d190..e7ea7b196b93d97afa7386f3d5781450c092445d 100644 --- a/civicrm/CRM/Core/BAO/MailSettings.php +++ b/civicrm/CRM/Core/BAO/MailSettings.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { diff --git a/civicrm/CRM/Core/BAO/Mapping.php b/civicrm/CRM/Core/BAO/Mapping.php index 309972bb6aaf35c420a29862b5c77056d3506823..e2e0e7057a29de51be7091621772fe334e24e630 100644 --- a/civicrm/CRM/Core/BAO/Mapping.php +++ b/civicrm/CRM/Core/BAO/Mapping.php @@ -871,6 +871,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { * @return array */ protected static function loadSavedMapping($mappingLocation, int $x, int $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, array $specialFields, $mappingPhoneType, array $defaults, array $noneArray, $mappingImProvider, $mappingOperator, $mappingValue) { + $jsSet = FALSE; $locationId = $mappingLocation[$x][$i] ?? 0; if (isset($mappingName[$x][$i])) { if (is_array($mapperFields[$mappingContactType[$x][$i]])) { diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php index 3348da19a50f57d975abc3f02aedbffd2fe14123..fbbb96709e01a0d6eec20ae875a7bc012c35195f 100644 --- a/civicrm/CRM/Core/BAO/MessageTemplate.php +++ b/civicrm/CRM/Core/BAO/MessageTemplate.php @@ -416,8 +416,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate { throw new CRM_Core_Exception(ts("Message template's option value or ID missing.")); } - $apiCall = MessageTemplate::get() - ->setCheckPermissions(FALSE) + $apiCall = MessageTemplate::get(FALSE) ->addSelect('msg_subject', 'msg_text', 'msg_html', 'pdf_format_id', 'id') ->addWhere('is_default', '=', 1); diff --git a/civicrm/CRM/Core/BAO/Note.php b/civicrm/CRM/Core/BAO/Note.php index e2ed3102e73b56e008715d5bf06de174bb41298d..c93215d235208acfa61f42e703e0ee12e06541f1 100644 --- a/civicrm/CRM/Core/BAO/Note.php +++ b/civicrm/CRM/Core/BAO/Note.php @@ -169,7 +169,7 @@ class CRM_Core_BAO_Note extends CRM_Core_DAO_Note { $noteActions = FALSE; - $loggedInContactID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $loggedInContactID = CRM_Core_Session::getLoggedInContactID(); if ($loggedInContactID) { if ($loggedInContactID == $note->entity_id) { $noteActions = TRUE; diff --git a/civicrm/CRM/Core/BAO/OpenID.php b/civicrm/CRM/Core/BAO/OpenID.php index cb67184647b7d998a502e7faead0e004dc53bc2b..34326a7562578ccf60250ec4f8a3b18227ea7f1b 100644 --- a/civicrm/CRM/Core/BAO/OpenID.php +++ b/civicrm/CRM/Core/BAO/OpenID.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/OptionGroup.php b/civicrm/CRM/Core/BAO/OptionGroup.php index 41b8b5b525ccb463b0c4d31b6351d9fc68d0d1ee..ff972d984227fbdf3f2e02bcd263a84028ff3e86 100644 --- a/civicrm/CRM/Core/BAO/OptionGroup.php +++ b/civicrm/CRM/Core/BAO/OptionGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_OptionGroup extends CRM_Core_DAO_OptionGroup { diff --git a/civicrm/CRM/Core/BAO/Query.php b/civicrm/CRM/Core/BAO/Query.php index 4d608d50537fc1fe0144fe11d058a7beb07b1ed9..173273bc5b369abde742de9ae0ff3c102651bea8 100644 --- a/civicrm/CRM/Core/BAO/Query.php +++ b/civicrm/CRM/Core/BAO/Query.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_Query { diff --git a/civicrm/CRM/Core/BAO/SchemaHandler.php b/civicrm/CRM/Core/BAO/SchemaHandler.php index b9f3bad91f356e530f8dc01ec8a3331e7d168fb5..5523858d6ac9fa69be7ed35e13f216d9b41daa68 100644 --- a/civicrm/CRM/Core/BAO/SchemaHandler.php +++ b/civicrm/CRM/Core/BAO/SchemaHandler.php @@ -335,10 +335,8 @@ ALTER TABLE {$tableName} else { CRM_Core_DAO::executeQuery($sql, [], TRUE, NULL, FALSE, FALSE); } - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, NULL, $isUpgradeMode); } } @@ -385,9 +383,7 @@ ADD UNIQUE INDEX `unique_entity_id` ( `entity_id` )"; */ public static function createIndexes($tables, $createIndexPrefix = 'index', $substrLengths = []) { $queries = []; - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); // if we're multilingual, cache the information on internationalised fields static $columns = NULL; @@ -883,6 +879,23 @@ MODIFY {$columnName} varchar( $length ) return CRM_Core_DAO::singleValueQuery('SELECT @@collation_database'); } + /** + * Get the collation actually being used by the tables in the database. + * + * The db collation may not match the collation used by the tables, get what is + * set on the tables (represented by civicrm_contact). + * + * @return string + */ + public static function getInUseCollation() { + if (!isset(\Civi::$statics[__CLASS__][__FUNCTION__])) { + $dao = CRM_Core_DAO::executeQuery('SHOW TABLE STATUS LIKE \'civicrm_contact\''); + $dao->fetch(); + \Civi::$statics[__CLASS__][__FUNCTION__] = $dao->Collation; + } + return \Civi::$statics[__CLASS__][__FUNCTION__]; + } + /** * Get the database collation. * diff --git a/civicrm/CRM/Core/BAO/StatusPreference.php b/civicrm/CRM/Core/BAO/StatusPreference.php index d4e182eadc31ad5f76900919f303299451233e39..044a538d046c5780fc4a75c5e63a03abdc6e8f43 100644 --- a/civicrm/CRM/Core/BAO/StatusPreference.php +++ b/civicrm/CRM/Core/BAO/StatusPreference.php @@ -10,11 +10,8 @@ */ /** - * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -27,16 +24,15 @@ class CRM_Core_BAO_StatusPreference extends CRM_Core_DAO_StatusPreference { * * @param array $params * - * @return array + * @return CRM_Core_DAO_StatusPreference * @throws CRM_Core_Exception */ public static function create($params) { - $statusPreference = new CRM_Core_BAO_StatusPreference(); + $statusPreference = new CRM_Core_DAO_StatusPreference(); // Default severity level to ignore is 0 (DEBUG). - if (!isset($params['ignore_severity'])) { - $params['ignore_severity'] = 0; - } + $params['ignore_severity'] = $params['ignore_severity'] ?? 0; + // Severity can be either text ('critical') or an integer <= 7. // It's a magic number, but based on PSR-3 standards. if (!CRM_Utils_Rule::integer($params['ignore_severity'])) { @@ -50,32 +46,25 @@ class CRM_Core_BAO_StatusPreference extends CRM_Core_DAO_StatusPreference { throw new CRM_Core_Exception(ts('Invalid string passed as severity level.')); } - // Check if this StatusPreference already exists. + // Set default domain when creating (or updating by name) + if (empty($params['id']) && empty($params['domain_id'])) { + $params['domain_id'] = CRM_Core_Config::domainID(); + } + + // Enforce unique status pref names. Update if a duplicate name is found in the same domain. if (empty($params['id']) && !empty($params['name'])) { - $statusPreference->domain_id = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); + $statusPreference->domain_id = $params['domain_id']; $statusPreference->name = $params['name']; - $statusPreference->find(TRUE); } - $statusPreference->copyValues($params); - - $edit = (bool) $statusPreference->id; - if ($edit) { - CRM_Utils_Hook::pre('edit', 'StatusPreference', $statusPreference->id, $statusPreference); - } - else { - CRM_Utils_Hook::pre('create', 'StatusPreference', NULL, $statusPreference); - } + $op = $statusPreference->id ? 'edit' : 'create'; + CRM_Utils_Hook::pre($op, 'StatusPreference', $statusPreference->id, $params); + $statusPreference->copyValues($params); $statusPreference->save(); - if ($edit) { - CRM_Utils_Hook::post('edit', 'StatusPreference', $statusPreference->id, $statusPreference); - } - else { - CRM_Utils_Hook::post('create', 'StatusPreference', NULL, $statusPreference); - } + CRM_Utils_Hook::post($op, 'StatusPreference', $statusPreference->id, $statusPreference); return $statusPreference; } diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index 5841ab0d72451a4c9b3585fb0e582a30fc7ce960..34490de330646be9af9eb12d06d5bdf8a2aa1a3a 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -1663,12 +1663,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) * array of ufgroups for a module */ public static function getModuleUFGroup($moduleName = NULL, $count = 0, $skipPermission = TRUE, $op = CRM_Core_Permission::VIEW, $returnFields = NULL) { - $selectFields = ['id', 'title', 'created_id', 'is_active', 'is_reserved', 'group_type']; - - if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_uf_group', 'description')) { - // CRM-13555, since description field was added later (4.4), and to avoid any problems with upgrade - $selectFields[] = 'description'; - } + $selectFields = ['id', 'title', 'created_id', 'is_active', 'is_reserved', 'group_type', 'description']; if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_uf_group', 'frontend_title')) { $selectFields[] = 'frontend_title'; @@ -1945,16 +1940,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) elseif (in_array($fieldName, ['gender_id', 'communication_style_id'])) { $options = []; $pseudoValues = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', $fieldName); - foreach ($pseudoValues as $key => $var) { - $options[$key] = $form->createElement('radio', NULL, ts($title), $var, $key); - } - $group = $form->addGroup($options, $name, $title); - if ($required) { - $form->addRule($name, ts('%1 is a required field.', [1 => $title]), 'required'); - } - else { - $group->setAttribute('allowClear', TRUE); - } + $form->addRadio($name, ts('%1', [1 => $title]), $pseudoValues, ['allowClear' => !$required], NULL, $required); } elseif ($fieldName === 'prefix_id' || $fieldName === 'suffix_id') { $form->addSelect($name, [ @@ -2340,6 +2326,14 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) } elseif (CRM_Core_BAO_CustomField::getKeyID($name)) { $defaults[$fldName] = self::formatCustomValue($field, $details[$name]); + if (!$singleProfile && $field['html_type'] === 'CheckBox') { + // For batch update profile there needs to be a key lik + // $defaults['field[166]['custom_8'][2]'] => 1 where + // 166 is the conntact id, 8 is the field id and 2 is the checkbox option. + foreach ($defaults[$fldName] as $itemKey => $itemValue) { + $defaults[$fldName . '[' . $itemKey . ']'] = $itemValue; + } + } } else { $defaults[$fldName] = $details[$name]; @@ -3599,6 +3593,7 @@ SELECT group_id if (CRM_Core_BAO_CustomField::isSerialized($field)) { $value = CRM_Utils_Array::explodePadded($value); + // This may not be required now. if ($field['html_type'] === 'CheckBox') { $checkboxes = []; foreach (array_filter($value) as $item) { diff --git a/civicrm/CRM/Core/BAO/UFJoin.php b/civicrm/CRM/Core/BAO/UFJoin.php index ebc21f037dcaffa2d0f51250eec251955b251b20..b3514d9f983540f8560cb1428333d05c1dd8c187 100644 --- a/civicrm/CRM/Core/BAO/UFJoin.php +++ b/civicrm/CRM/Core/BAO/UFJoin.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php index b7dd9b2c80187275e9022d123fe3c6f4d9038b07..9e61b990b3ce6c9ee5c9318913ecda59504f8226 100644 --- a/civicrm/CRM/Core/BAO/UFMatch.php +++ b/civicrm/CRM/Core/BAO/UFMatch.php @@ -93,7 +93,6 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { $userIds = self::getUFValues(); $session->set('ufID', CRM_Utils_Array::value('uf_id', $userIds, '')); $session->set('userID', CRM_Utils_Array::value('contact_id', $userIds, '')); - $session->set('ufUniqID', CRM_Utils_Array::value('uf_name', $userIds, '')); } } @@ -110,7 +109,6 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { //make sure we have session w/ consistent ids. $ufID = $ufmatch->uf_id; $userID = $ufmatch->contact_id; - $ufUniqID = ''; if ($isUserLoggedIn) { $loggedInUserUfID = CRM_Utils_System::getLoggedInUfID(); //are we processing logged in user. @@ -118,14 +116,12 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { $userIds = self::getUFValues($loggedInUserUfID); $ufID = CRM_Utils_Array::value('uf_id', $userIds, ''); $userID = CRM_Utils_Array::value('contact_id', $userIds, ''); - $ufUniqID = CRM_Utils_Array::value('uf_name', $userIds, ''); } } //set user ids to session. $session->set('ufID', $ufID); $session->set('userID', $userID); - $session->set('ufUniqID', $ufUniqID); // add current contact to recently viewed if ($ufmatch->contact_id) { @@ -171,12 +167,6 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { */ public static function &synchronizeUFMatch(&$user, $userKey, $uniqId, $uf, $status = NULL, $ctype = NULL, $isLogin = FALSE) { $config = CRM_Core_Config::singleton(); - - if (!CRM_Utils_Rule::email($uniqId)) { - $retVal = $status ? NULL : FALSE; - return $retVal; - } - $newContact = FALSE; // make sure that a contact id exists for this user id @@ -191,6 +181,12 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { if (!empty($_POST) && !$isLogin) { $params = $_POST; $params['email'] = $uniqId; + // dev/core#1858 Ensure that if we have a contactID parameter which is set in the Create user Record contact task form + // That this contacID value is passed through as the contact_id to the get duplicate contacts function. This is necessary because for Drupal 8 this function gets invoked + // Before the civicrm_uf_match record is added where as in D7 it isn't called until the user tries to actually login. + if (!empty($params['contactID'])) { + $params['contact_id'] = $params['contactID']; + } $ids = CRM_Contact_BAO_Contact::getDuplicateContacts($params, 'Individual', 'Unsupervised', [], FALSE); diff --git a/civicrm/CRM/Core/BAO/WordReplacement.php b/civicrm/CRM/Core/BAO/WordReplacement.php index ba4f09d7fa43d4d8dc3a3807728a8305eb4fb87d..818e0b2ec8cd9c77f97fec2bcd635dbe4a5051b8 100644 --- a/civicrm/CRM/Core/BAO/WordReplacement.php +++ b/civicrm/CRM/Core/BAO/WordReplacement.php @@ -152,8 +152,6 @@ WHERE domain_id = %1 } } $config = CRM_Core_Config::singleton(); - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); // So. Weird. Some bizarre/probably-broken multi-lingual thing where // data isn't really stored in civicrm_word_replacements. Probably diff --git a/civicrm/CRM/Core/CodeGen/Main.php b/civicrm/CRM/Core/CodeGen/Main.php index 88a31222d60ae531b8b2a853d4f3178ebfdd9ace..1b754b959fb4274020eb631489e845d4b0ee9fcc 100644 --- a/civicrm/CRM/Core/CodeGen/Main.php +++ b/civicrm/CRM/Core/CodeGen/Main.php @@ -132,25 +132,6 @@ Alternatively you can get a version of CiviCRM that matches your PHP version return $tasks; } - /** - * Compute a digest based on the GenCode logic (PHP/tpl). - * - * @return string - */ - public function getSourceDigest() { - if ($this->sourceDigest === NULL) { - $srcDir = CRM_Core_CodeGen_Util_File::findCoreSourceDir(); - $files = CRM_Core_CodeGen_Util_File::findManyFiles([ - ["$srcDir/CRM/Core/CodeGen", '*.php'], - ["$srcDir/xml", "*.php"], - ["$srcDir/xml", "*.tpl"], - ]); - - $this->sourceDigest = CRM_Core_CodeGen_Util_File::digestAll($files); - } - return $this->sourceDigest; - } - /** * @return static */ diff --git a/civicrm/CRM/Core/CodeGen/Specification.php b/civicrm/CRM/Core/CodeGen/Specification.php index 67d057f09609dbe7dd4c7e9c13ab7e85553256db..0f4678d74acde15fe778eb0305bcd17b30471d37 100644 --- a/civicrm/CRM/Core/CodeGen/Specification.php +++ b/civicrm/CRM/Core/CodeGen/Specification.php @@ -192,6 +192,7 @@ class CRM_Core_CodeGen_Specification { $sourceFile = "xml/schema/{$base}/{$klass}.xml"; $daoPath = "{$base}/DAO/"; $baoPath = __DIR__ . '/../../../' . str_replace(' ', '', "{$base}/BAO/"); + $useBao = $this->value('useBao', $tableXML, file_exists($baoPath . $klass . '.php')); $pre = str_replace('/', '_', $daoPath); $this->classNames[$name] = $pre . $klass; @@ -213,7 +214,7 @@ class CRM_Core_CodeGen_Specification { 'icon' => $tableXML->icon ?? NULL, 'labelName' => substr($name, 8), 'className' => $this->classNames[$name], - 'bao' => (file_exists($baoPath . $klass . '.php') ? str_replace('DAO', 'BAO', $this->classNames[$name]) : $this->classNames[$name]), + 'bao' => ($useBao ? str_replace('DAO', 'BAO', $this->classNames[$name]) : $this->classNames[$name]), 'entity' => $klass, 'attributes_simple' => trim($database['tableAttributes_simple']), 'attributes_modern' => trim($database['tableAttributes_modern']), diff --git a/civicrm/CRM/Core/CodeGen/Util/File.php b/civicrm/CRM/Core/CodeGen/Util/File.php index 1e77801a7004836cae28e15add4e27f24d2730d8..3fa8b97b560aa41aeb27ac3eaab9c126bb5b1f43 100644 --- a/civicrm/CRM/Core/CodeGen/Util/File.php +++ b/civicrm/CRM/Core/CodeGen/Util/File.php @@ -45,54 +45,4 @@ class CRM_Core_CodeGen_Util_File { return $newTempDir; } - /** - * Calculate a cumulative digest based on a collection of files. - * - * @param array $files - * List of file names (strings). - * @param callable|string $digest a one-way hash function (string => string) - * - * @return string - */ - public static function digestAll($files, $digest = 'md5') { - $buffer = ''; - foreach ($files as $file) { - $buffer .= $digest(file_get_contents($file)); - } - return $digest($buffer); - } - - /** - * Find the path to the main Civi source tree. - * - * @return string - * @throws RuntimeException - */ - public static function findCoreSourceDir() { - $path = str_replace(DIRECTORY_SEPARATOR, '/', __DIR__); - if (!preg_match(':(.*)/CRM/Core/CodeGen/Util:', $path, $matches)) { - throw new RuntimeException("Failed to determine path of code-gen"); - } - - return $matches[1]; - } - - /** - * Find files in several directories using several filename patterns. - * - * @param array $pairs - * Each item is an array(0 => $searchBaseDir, 1 => $filePattern). - * @return array - * Array of file paths - */ - public static function findManyFiles($pairs) { - $files = []; - foreach ($pairs as $pair) { - list ($dir, $pattern) = $pair; - $files = array_merge($files, CRM_Utils_File::findFiles($dir, $pattern)); - } - sort($files); - return $files; - } - } diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php index a27d424d6ae38b68cf1dd6ac346e2d0270fd71af..1785fa9a93ad020da9ca3443db1328e031cab589 100644 --- a/civicrm/CRM/Core/Config.php +++ b/civicrm/CRM/Core/Config.php @@ -271,7 +271,7 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { /** * Do general cleanup of caches, temp directories and temp tables - * CRM-8739 + * @see https://issues.civicrm.org/jira/browse/CRM-8739 * * @param bool $sessionReset */ @@ -349,10 +349,6 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { CRM_Core_DAO::executeQuery($query); } - if ($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) { - return $adapter::clearDBCache(); - } - // also delete all the import and export temp tables self::clearTempTables(); } diff --git a/civicrm/CRM/Core/Config/MagicMerge.php b/civicrm/CRM/Core/Config/MagicMerge.php index 88110b643209d61da95f64316165909ba28c7c92..6050c22a2dacd034cb06d50abce96178b29a55fd 100644 --- a/civicrm/CRM/Core/Config/MagicMerge.php +++ b/civicrm/CRM/Core/Config/MagicMerge.php @@ -170,7 +170,6 @@ class CRM_Core_Config_MagicMerge { 'userFrameworkUsersTableName' => ['setting'], 'verpSeparator' => ['setting'], 'wkhtmltopdfPath' => ['setting'], - 'wpBasePage' => ['setting'], 'wpLoadPhp' => ['setting'], // "path" properties are managed via Civi::paths and $civicrm_paths @@ -204,6 +203,7 @@ class CRM_Core_Config_MagicMerge { // @todo remove geocodeMethod. As of Feb 2018, $config->geocodeMethod works but gives a deprecation warning. 'geocodeMethod' => ['callback', 'CRM_Utils_Geocode', 'getProviderClass'], 'defaultCurrencySymbol' => ['callback', 'CRM_Core_BAO_Country', 'getDefaultCurrencySymbol'], + 'wpBasePage' => ['callback', 'CRM_Utils_System_WordPress', 'getBasePage'], ]; } diff --git a/civicrm/CRM/Core/Controller/Simple.php b/civicrm/CRM/Core/Controller/Simple.php index 174fb6374c57a76719fa190b475b0ec390374b63..0c684a7408e6970af581eac83329667c524efe38 100644 --- a/civicrm/CRM/Core/Controller/Simple.php +++ b/civicrm/CRM/Core/Controller/Simple.php @@ -17,7 +17,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ class CRM_Core_Controller_Simple extends CRM_Core_Controller { diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index 11a990b52db855d5bbd5659d5e0feb5b2f916658..a1cd6f7498915e29b1919cb62dd88662533a633a 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -163,6 +163,11 @@ class CRM_Core_DAO extends DB_DataObject { $options = &PEAR::getStaticProperty('DB_DataObject', 'options'); $options['database'] = $dsn; $options['quote_identifiers'] = TRUE; + if (self::isSSLDSN($dsn)) { + // There are two different options arrays. + $other_options = &PEAR::getStaticProperty('DB', 'options'); + $other_options['ssl'] = TRUE; + } if (defined('CIVICRM_DAO_DEBUG')) { self::DebugLevel(CIVICRM_DAO_DEBUG); } @@ -964,6 +969,7 @@ class CRM_Core_DAO extends DB_DataObject { * true if exists, else false */ public static function checkFieldExists($tableName, $columnName, $i18nRewrite = TRUE) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Core_BAO_SchemaHandler::checkIfFieldExists'); return CRM_Core_BAO_SchemaHandler::checkIfFieldExists($tableName, $columnName, $i18nRewrite); } @@ -3105,4 +3111,21 @@ SELECT contact_id } } + /** + * Does the DSN indicate the connection should use ssl. + * + * @param string $dsn + * + * @return bool + */ + public static function isSSLDSN(string $dsn):bool { + // Note that ssl= below is not an official PEAR::DB option. It doesn't know + // what to do with it. We made it up because it's not required + // to have client-side certificates to use ssl, so here you can specify + // you want that by putting ssl=1 in the DSN string. + // + // Cast to bool in case of error which we interpret as no ssl. + return (bool) preg_match('/[\?&](key|cert|ca|capath|cipher|ssl)=/', $dsn); + } + } diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.data.php b/civicrm/CRM/Core/DAO/AllCoreTables.data.php index cf649fb224f84de0d938bf6c78bed5322901428c..fcf35a9eed48de57689ec135ddc6eab43153c15c 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.data.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.data.php @@ -567,6 +567,11 @@ return [ 'class' => 'CRM_Contact_DAO_Relationship', 'table' => 'civicrm_relationship', ], + 'CRM_Contact_DAO_RelationshipCache' => [ + 'name' => 'RelationshipCache', + 'class' => 'CRM_Contact_DAO_RelationshipCache', + 'table' => 'civicrm_relationship_cache', + ], 'CRM_Mailing_DAO_Mailing' => [ 'name' => 'Mailing', 'class' => 'CRM_Mailing_DAO_Mailing', diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.php b/civicrm/CRM/Core/DAO/AllCoreTables.php index 225f5530c236075f3b7a810f55b2533a437de7cb..5b9ffe5ef671d0e04d169fad4574684851530a57 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.php @@ -117,10 +117,8 @@ class CRM_Core_DAO_AllCoreTables { * index definitions after localization */ public static function multilingualize($class, $originalIndices) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); - if (CRM_Utils_System::isNull($locales)) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!$locales) { return $originalIndices; } $classFields = $class::fields(); diff --git a/civicrm/CRM/Core/Error.php b/civicrm/CRM/Core/Error.php index 31f4a90804d037d94ffd0c2e35d56cccc31cb948..04f7e8cd39fadc2d311ac8824c73b51340ca4034 100644 --- a/civicrm/CRM/Core/Error.php +++ b/civicrm/CRM/Core/Error.php @@ -358,7 +358,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { if (CRM_Utils_Array::value('snippet', $_REQUEST) === CRM_Core_Smarty::PRINT_JSON) { $out = [ 'status' => 'fatal', - 'content' => '<div class="messages status no-popup"><div class="icon inform-icon"></div>' . ts('Sorry but we are not able to provide this at the moment.') . '</div>', + 'content' => '<div class="messages status no-popup">' . CRM_Core_Page::crmIcon('fa-info-circle') . ' ' . ts('Sorry but we are not able to provide this at the moment.') . '</div>', ]; if ($config->backtrace && CRM_Core_Permission::check('view debug output')) { $out['backtrace'] = self::parseBacktrace(debug_backtrace()); diff --git a/civicrm/CRM/Core/Exception/ResourceConflictException.php b/civicrm/CRM/Core/Exception/ResourceConflictException.php index 73f40cc77b8c437b8b08360a5f973821452b933d..7ce5c71dbc842c6d89fe3ecb8f5bd01c159b43ce 100644 --- a/civicrm/CRM/Core/Exception/ResourceConflictException.php +++ b/civicrm/CRM/Core/Exception/ResourceConflictException.php @@ -1,27 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2020 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index 17b30a99865a0222dcb969ac5940fd9114973338..98526b5a8198102ab15a687c1b8f98faed0d2a9f 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -366,6 +366,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $type, $name, $label = '', $attributes = '', $required = FALSE, $extra = NULL ) { + if ($type === 'radio') { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Core_Form::addRadio'); + } // Fudge some extra types that quickform doesn't support $inputType = $type; if ($type == 'wysiwyg' || in_array($type, self::$html5Types)) { @@ -1202,7 +1205,13 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } } - $options[] = $this->createElement('radio', NULL, NULL, $var, $key, $optAttributes); + // We use a class here to avoid html5 issues with collapsed cutsomfield sets. + $optAttributes['class'] = $optAttributes['class'] ?? ''; + if ($required) { + $optAttributes['class'] .= ' required'; + } + $element = $this->createElement('radio', NULL, NULL, $var, $key, $optAttributes); + $options[] = $element; } $group = $this->addGroup($options, $name, $title, $separator); diff --git a/civicrm/CRM/Core/Form/Date.php b/civicrm/CRM/Core/Form/Date.php index 0b2abcf73a69f3ca960ccab8ca7b21c7535c41f8..24ff85f3a363f973178269480f63a30cbda03b2a 100644 --- a/civicrm/CRM/Core/Form/Date.php +++ b/civicrm/CRM/Core/Form/Date.php @@ -38,14 +38,14 @@ class CRM_Core_Form_Date { $dateText = ts('yyyy-mm-dd OR yyyymmdd (1998-12-25 OR 19981225) OR (2008-9-1 OR 20080901)'); } - $dateOptions[] = $form->createElement('radio', NULL, NULL, $dateText, self::DATE_yyyy_mm_dd); - - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('mm/dd/yy OR mm-dd-yy (12/25/98 OR 12-25-98) OR (9/1/08 OR 9-1-08)'), self::DATE_mm_dd_yy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('mm/dd/yyyy OR mm-dd-yyyy (12/25/1998 OR 12-25-1998) OR (9/1/2008 OR 9-1-2008)'), self::DATE_mm_dd_yyyy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('Month dd, yyyy (December 12, 1998)'), self::DATE_Month_dd_yyyy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('dd-mon-yy OR dd/mm/yy (25-Dec-98 OR 25/12/98)'), self::DATE_dd_mon_yy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('dd/mm/yyyy (25/12/1998) OR (1/9/2008)'), self::DATE_dd_mm_yyyy); - $form->addGroup($dateOptions, 'dateFormats', ts('Date Format'), '<br/>'); + $form->addRadio('dateFormats', ts('Date Format'), [ + self::DATE_yyyy_mm_dd => $dateText, + self::DATE_mm_dd_yy => ts('mm/dd/yy OR mm-dd-yy (12/25/98 OR 12-25-98) OR (9/1/08 OR 9-1-08)'), + self::DATE_mm_dd_yyyy => ts('mm/dd/yyyy OR mm-dd-yyyy (12/25/1998 OR 12-25-1998) OR (9/1/2008 OR 9-1-2008)'), + self::DATE_Month_dd_yyyy => ts('Month dd, yyyy (December 12, 1998)'), + self::DATE_dd_mon_yy => ts('dd-mon-yy OR dd/mm/yy (25-Dec-98 OR 25/12/98)'), + self::DATE_dd_mm_yyyy => ts('dd/mm/yyyy (25/12/1998) OR (1/9/2008)'), + ], [], '<br/>'); $form->setDefaults(['dateFormats' => self::DATE_yyyy_mm_dd]); } diff --git a/civicrm/CRM/Core/I18n.php b/civicrm/CRM/Core/I18n.php index ce8175324c3644b27a49da45ffffc5cc102222b9..0c560c872324b4e034831b905682d18b4321b56b 100644 --- a/civicrm/CRM/Core/I18n.php +++ b/civicrm/CRM/Core/I18n.php @@ -586,12 +586,22 @@ class CRM_Core_I18n { /** * Is the current CiviCRM domain in multilingual mode. * - * @return Bool + * @return bool * True if CiviCRM is in multilingual mode. */ public static function isMultilingual() { - $domainId = CRM_Core_Config::domainID(); - return (bool) CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $domainId, 'locales'); + $domain = CRM_Core_BAO_Domain::getDomain(); + return (bool) $domain->locales; + } + + /** + * Returns languages if domain is in multilingual mode. + * + * @return array|bool + */ + public static function getMultilingual() { + $domain = CRM_Core_BAO_Domain::getDomain(); + return $domain->locales ? CRM_Core_DAO::unSerializeField($domain->locales, CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED) : FALSE; } /** @@ -600,7 +610,7 @@ class CRM_Core_I18n { * @param $language * Language (for example 'en_US', or 'fr_CA'). * - * @return Bool + * @return bool * True if it is an RTL language. */ public static function isLanguageRTL($language) { diff --git a/civicrm/CRM/Core/I18n/NativeGettext.php b/civicrm/CRM/Core/I18n/NativeGettext.php index a0d1d106010540f9f4fe526c45529b660f7c66b2..cefd92f0f5406583a05b4359acb521ad86718646 100644 --- a/civicrm/CRM/Core/I18n/NativeGettext.php +++ b/civicrm/CRM/Core/I18n/NativeGettext.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Convenience class for PHP-Gettext compatibility. */ class CRM_Core_I18n_NativeGettext { diff --git a/civicrm/CRM/Core/I18n/Schema.php b/civicrm/CRM/Core/I18n/Schema.php index d3e1adb11d1a5fbfa67512dc546fa1d75e86926f..3a6e763d233c168afe427a5fc20006157339f482 100644 --- a/civicrm/CRM/Core/I18n/Schema.php +++ b/civicrm/CRM/Core/I18n/Schema.php @@ -20,13 +20,11 @@ class CRM_Core_I18n_Schema { * Drop all views (for use by CRM_Core_DAO::dropAllTables() mostly). */ public static function dropAllViews() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if (!$domain->locales) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!$locales) { return; } - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); $tables = CRM_Core_I18n_SchemaStructure::tables(); foreach ($locales as $locale) { @@ -81,6 +79,7 @@ class CRM_Core_I18n_Schema { */ public static function makeSinglelingual($retain) { $domain = new CRM_Core_DAO_Domain(); + $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); @@ -130,6 +129,7 @@ class CRM_Core_I18n_Schema { $triggers = [] ) { $domain = new CRM_Core_DAO_Domain(); + $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); @@ -207,6 +207,7 @@ class CRM_Core_I18n_Schema { public static function addLocale($locale, $source) { // get the current supported locales $domain = new CRM_Core_DAO_Domain(); + $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); @@ -485,13 +486,11 @@ class CRM_Core_I18n_Schema { */ public static function triggerInfo(&$info, $tableName = NULL) { // get the current supported locales - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if (empty($domain->locales)) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!$locales) { return; } - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); $locale = array_pop($locales); // CRM-10027 diff --git a/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php b/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php index 66fe88fc12ce5aff126881181567df865515eb42..dd3d6dc12a5e78e4f7c470d08c5b6260f5504ee1 100644 --- a/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php +++ b/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_I18n_SchemaStructure_4_3_1 { diff --git a/civicrm/CRM/Core/JobManager.php b/civicrm/CRM/Core/JobManager.php index d19e786d4ad19ccc4a12b3e9c99d6b67ba9c206c..604d3ee150ddfeb45e8d2b5d6e0dc51bb4ae015a 100644 --- a/civicrm/CRM/Core/JobManager.php +++ b/civicrm/CRM/Core/JobManager.php @@ -73,6 +73,7 @@ class CRM_Core_JobManager { $statusPref = [ 'name' => 'checkLastCron', 'check_info' => gmdate('U'), + 'prefs' => '', ]; CRM_Core_BAO_StatusPreference::create($statusPref); } diff --git a/civicrm/CRM/Core/Key.php b/civicrm/CRM/Core/Key.php index 05cc58a541410d2df16830a37de12e2e1ac6cc8c..688c0f8cffdc31b5fb71b4f2612d6659bfb39e5d 100644 --- a/civicrm/CRM/Core/Key.php +++ b/civicrm/CRM/Core/Key.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Key { @@ -130,31 +128,20 @@ class CRM_Core_Key { } /** - * @param $key + * The original version of this function, added circa 2010 and untouched + * since then, seemed intended to check for a 32-digit hex string followed + * optionally by an underscore and 4-digit number. But it had a bug where + * the optional part was never checked ever. So have decided to remove that + * second check to keep it simple since it seems like pseudo-security. + * + * @param string $key * * @return bool * TRUE if the signature ($key) is well-formed. */ public static function valid($key) { - // a valid key is a hex number - // followed by an optional _ and a number between 1 and 10000 - if (strpos('_', $key) !== FALSE) { - list($hash, $seq) = explode('_', $key); - - // ensure seq is between 1 and 10000 - if (!is_numeric($seq) || - $seq < 1 || - $seq > 10000 - ) { - return FALSE; - } - } - else { - $hash = $key; - } - // ensure that hash is a hex number (of expected length) - return preg_match('#[0-9a-f]{' . self::HASH_LENGTH . '}#i', $hash) ? TRUE : FALSE; + return preg_match('#[0-9a-f]{' . self::HASH_LENGTH . '}#i', $key) ? TRUE : FALSE; } /** diff --git a/civicrm/CRM/Core/Lock.php b/civicrm/CRM/Core/Lock.php index 45d6c96c8e51ed89f67e1c78ecba7c4760d501a1..da1366b4243a19c27330be702f6e8c19d1413504 100644 --- a/civicrm/CRM/Core/Lock.php +++ b/civicrm/CRM/Core/Lock.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Lock implements \Civi\Core\Lock\LockInterface { diff --git a/civicrm/CRM/Core/Page/AJAX.php b/civicrm/CRM/Core/Page/AJAX.php index ccbcd67251f96ed9b22f62d8821e68791e53b69a..17a0fe8f6ef9e6c86aad5c266646c0cfac6bff29 100644 --- a/civicrm/CRM/Core/Page/AJAX.php +++ b/civicrm/CRM/Core/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Page/AJAX/Location.php b/civicrm/CRM/Core/Page/AJAX/Location.php index 2e1988c61bcbfa3810d6198ebe907332134d9cd5..b5da7455165886239f467e55fac60b85e9ac5d71 100644 --- a/civicrm/CRM/Core/Page/AJAX/Location.php +++ b/civicrm/CRM/Core/Page/AJAX/Location.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Core/Page/File.php b/civicrm/CRM/Core/Page/File.php index 0ad98467e8b5d5b3f510c257375399ffcfa3b2b9..a0a8636c09b5264b088caa0b4323678fed88be1b 100644 --- a/civicrm/CRM/Core/Page/File.php +++ b/civicrm/CRM/Core/Page/File.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Page_File extends CRM_Core_Page { diff --git a/civicrm/CRM/Core/Page/Inline/Help.php b/civicrm/CRM/Core/Page/Inline/Help.php index 773f73b57304cde940829f1d5c13a30b3193e3e2..0e0e01ae0bd9885480b415c8d5a908effebad8ea 100644 --- a/civicrm/CRM/Core/Page/Inline/Help.php +++ b/civicrm/CRM/Core/Page/Inline/Help.php @@ -12,8 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Payment/AuthorizeNet.php b/civicrm/CRM/Core/Payment/AuthorizeNet.php index d7b2249e5ec69a66e85ce032732fa643ca6caed4..5a9fcbc9924bbdb3b129113459c8f2245b160213 100644 --- a/civicrm/CRM/Core/Payment/AuthorizeNet.php +++ b/civicrm/CRM/Core/Payment/AuthorizeNet.php @@ -673,7 +673,7 @@ class CRM_Core_Payment_AuthorizeNet extends CRM_Core_Payment { /** * Process incoming notification. */ - public static function handlePaymentNotification() { + public function handlePaymentNotification() { $ipnClass = new CRM_Core_Payment_AuthorizeNetIPN(array_merge($_GET, $_REQUEST)); $ipnClass->main(); } diff --git a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php index 7946ecacbe493b3d2a2089b57f176b752385fd7c..83697bd338fa7f7da2e3aa99bbc420a78e136ae7 100644 --- a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php +++ b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php @@ -100,22 +100,20 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { * * @return bool */ - public function recur(&$input, &$ids, &$objects, $first) { + public function recur($input, $ids, $objects, $first) { $this->_isRecurring = TRUE; $recur = &$objects['contributionRecur']; $paymentProcessorObject = $objects['contribution']->_relatedObjects['paymentProcessor']['object']; // do a subscription check if ($recur->processor_id != $input['subscription_id']) { - CRM_Core_Error::debug_log_message("Unrecognized subscription."); - echo "Failure: Unrecognized subscription<p>"; + CRM_Core_Error::debug_log_message('Unrecognized subscription.'); + echo 'Failure: Unrecognized subscription<p>'; return FALSE; } $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - $transaction = new CRM_Core_Transaction(); - $now = date('YmdHis'); //load new contribution object if required. @@ -148,18 +146,17 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $recur->trxn_id = $recur->processor_id; $isFirstOrLastRecurringPayment = CRM_Core_Payment::RECURRING_PAYMENT_START; } - $statusName = 'In Progress'; + if (($recur->installments > 0) && ($input['subscription_paynum'] >= $recur->installments) ) { // this is the last payment - $statusName = 'Completed'; $recur->end_date = $now; $isFirstOrLastRecurringPayment = CRM_Core_Payment::RECURRING_PAYMENT_END; + // This end date update should occur in ContributionRecur::updateOnNewPayment + // testIPNPaymentRecurNoReceipt has test cover. + $recur->save(); } - $recur->modified_date = $now; - $recur->contribution_status_id = array_search($statusName, $contributionStatus); - $recur->save(); } else { // Declined @@ -168,7 +165,7 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $recur->cancel_date = $now; $recur->save(); - $message = ts("Subscription payment failed - %1", [1 => htmlspecialchars($input['response_reason_text'])]); + $message = ts('Subscription payment failed - %1', [1 => htmlspecialchars($input['response_reason_text'])]); CRM_Core_Error::debug_log_message($message); // the recurring contribution has declined a payment or has failed @@ -180,13 +177,12 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { // check if contribution is already completed, if so we ignore this ipn if ($objects['contribution']->contribution_status_id == 1) { - $transaction->commit(); CRM_Core_Error::debug_log_message("Returning since contribution has already been handled."); - echo "Success: Contribution has already been handled<p>"; + echo 'Success: Contribution has already been handled<p>'; return TRUE; } - $this->completeTransaction($input, $ids, $objects, $transaction, $recur); + $this->completeTransaction($input, $ids, $objects); // Only Authorize.net does this so it is on the a.net class. If there is a need for other processors // to do this we should make it available via the api, e.g as a parameter, changing the nuance @@ -203,11 +199,10 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { * Get the input from passed in fields. * * @param array $input - * @param array $ids * * @throws \CRM_Core_Exception */ - public function getInput(&$input, &$ids) { + public function getInput(&$input) { $input['amount'] = $this->retrieve('x_amount', 'String'); $input['subscription_id'] = $this->retrieve('x_subscription_id', 'Integer'); $input['response_code'] = $this->retrieve('x_response_code', 'Integer'); @@ -216,7 +211,6 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $input['response_reason_text'] = $this->retrieve('x_response_reason_text', 'String', FALSE); $input['subscription_paynum'] = $this->retrieve('x_subscription_paynum', 'Integer', FALSE, 0); $input['trxn_id'] = $this->retrieve('x_trans_id', 'String', FALSE); - $input['trxn_id'] = $this->retrieve('x_trans_id', 'String', FALSE); $input['receive_date'] = $this->retrieve('receive_date', 'String', FALSE, date('YmdHis', strtotime('now'))); if ($input['trxn_id']) { @@ -229,7 +223,7 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $input['trxn_id'] = md5(uniqid(rand(), TRUE)); } - $billingID = $ids['billing'] = CRM_Core_BAO_LocationType::getBilling(); + $billingID = CRM_Core_BAO_LocationType::getBilling(); $params = [ 'first_name' => 'x_first_name', 'last_name' => 'x_last_name', diff --git a/civicrm/CRM/Core/Payment/BaseIPN.php b/civicrm/CRM/Core/Payment/BaseIPN.php index 973fbd988894b02582d1d483917c7ee91e3e86f8..27b0074814464f3a29b549dff6981386bdb2a272 100644 --- a/civicrm/CRM/Core/Payment/BaseIPN.php +++ b/civicrm/CRM/Core/Payment/BaseIPN.php @@ -214,7 +214,7 @@ class CRM_Core_Payment_BaseIPN { * @return bool * @throws \CiviCRM_API3_Exception */ - public function failed(&$objects, &$transaction, $input = []) { + public function failed(&$objects, $transaction = NULL, $input = []) { $contribution = &$objects['contribution']; $memberships = []; if (!empty($objects['membership'])) { @@ -224,21 +224,9 @@ class CRM_Core_Payment_BaseIPN { } } - $addLineItems = FALSE; - if (empty($contribution->id)) { - $addLineItems = TRUE; - } + $addLineItems = empty($contribution->id); $participant = &$objects['participant']; - - // CRM-15546 - $contributionStatuses = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', [ - 'labelColumn' => 'name', - 'flip' => 1, - ]); - $contribution->contribution_status_id = $contributionStatuses['Failed']; - $contribution->receive_date = CRM_Utils_Date::isoToMysql($contribution->receive_date); - $contribution->receipt_date = CRM_Utils_Date::isoToMysql($contribution->receipt_date); - $contribution->thankyou_date = CRM_Utils_Date::isoToMysql($contribution->thankyou_date); + $contribution->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_DAO_Contribution', 'contribution_status_id', 'Failed'); $contribution->save(); // Add line items for recurring payments. @@ -266,7 +254,9 @@ class CRM_Core_Payment_BaseIPN { } } - $transaction->commit(); + if ($transaction) { + $transaction->commit(); + } Civi::log()->debug("Setting contribution status to Failed"); return TRUE; } @@ -299,7 +289,7 @@ class CRM_Core_Payment_BaseIPN { * @return bool * @throws \CiviCRM_API3_Exception */ - public function cancelled(&$objects, &$transaction, $input = []) { + public function cancelled(&$objects, $transaction = NULL, $input = []) { $contribution = &$objects['contribution']; $memberships = []; if (!empty($objects['membership'])) { @@ -353,7 +343,9 @@ class CRM_Core_Payment_BaseIPN { $this->cancelParticipant($participant->id); } } - $transaction->commit(); + if ($transaction) { + $transaction->commit(); + } Civi::log()->debug("Setting contribution status to Cancelled"); return TRUE; } @@ -477,13 +469,12 @@ class CRM_Core_Payment_BaseIPN { * @param array $input * @param array $ids * @param array $objects - * @param CRM_Core_Transaction $transaction * * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public function completeTransaction(&$input, &$ids, &$objects, $transaction = NULL) { - CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $transaction); + public function completeTransaction(&$input, &$ids, &$objects) { + CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects); } /** @@ -518,21 +509,14 @@ class CRM_Core_Payment_BaseIPN { * @param array $ids * Related object IDs. * @param array $objects - * @param array $values - * Values related to objects that have already been loaded. - * @param bool $recur - * Is it part of a recurring contribution. - * @param bool $returnMessageText - * Should text be returned instead of sent. This. - * is because the function is also used to generate pdfs - * - * @return array - * @throws \CRM_Core_Exception + * * @throws \CiviCRM_API3_Exception */ - public function sendMail(&$input, &$ids, &$objects, &$values, $recur = FALSE, $returnMessageText = FALSE) { - return CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $objects['contribution']->id, $values, - $returnMessageText); + public function sendMail($input, $ids, $objects) { + CRM_Core_Error::deprecatedFunctionWarning('this should be done via completetransaction api'); + civicrm_api3('Contribution', 'sendconfirmation', [ + 'id' => $objects['contribution']->id, + ]); } } diff --git a/civicrm/CRM/Core/Payment/Manual.php b/civicrm/CRM/Core/Payment/Manual.php index a2c7c5dd2593a0d65a0b9f9833a37007cd2a72c9..4c254691cc83d8964223a95717ff3a561423a14c 100644 --- a/civicrm/CRM/Core/Payment/Manual.php +++ b/civicrm/CRM/Core/Payment/Manual.php @@ -238,25 +238,6 @@ class CRM_Core_Payment_Manual extends CRM_Core_Payment { return TRUE; } - /** - * Submit a manual payment. - * - * @param array $params - * Assoc array of input parameters for this transaction. - * - * @return array - */ - public function doDirectPayment(&$params) { - $statuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id'); - if ($params['is_pay_later']) { - $result['payment_status_id'] = array_search('Pending', $statuses); - } - else { - $result['payment_status_id'] = array_search('Completed', $statuses); - } - return $result; - } - /** * Should a receipt be sent out for a pending payment. * diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index be0424f7afd5cb3f3298f575ba970186659ade10..b6948ddbd47b2f10cbea78e55e9e9a6daeff99e6 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { @@ -230,8 +229,10 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { * @param bool $first * * @return void + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - public function single(&$input, &$ids, &$objects, $recur = FALSE, $first = FALSE) { + public function single($input, $ids, $objects, $recur = FALSE, $first = FALSE) { $contribution = &$objects['contribution']; // make sure the invoice is valid and matches what we have in the contribution record @@ -257,18 +258,18 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $contribution->total_amount = $input['amount']; } - $transaction = new CRM_Core_Transaction(); - $status = $input['paymentStatus']; - if ($status == 'Denied' || $status == 'Failed' || $status == 'Voided') { - return $this->failed($objects, $transaction); + if ($status === 'Denied' || $status === 'Failed' || $status === 'Voided') { + $this->failed($objects); + return; } if ($status === 'Pending') { Civi::log()->debug('Returning since contribution status is Pending'); return; } - elseif ($status == 'Refunded' || $status == 'Reversed') { - return $this->cancelled($objects, $transaction); + elseif ($status === 'Refunded' || $status === 'Reversed') { + $this->cancelled($objects); + return; } elseif ($status !== 'Completed') { Civi::log()->debug('Returning since contribution status is not handled'); @@ -278,13 +279,12 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { // check if contribution is already completed, if so we ignore this ipn $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); if ($contribution->contribution_status_id == $completedStatusId) { - $transaction->commit(); Civi::log()->debug('PayPalIPN: Returning since contribution has already been handled. (ID: ' . $contribution->id . ').'); echo 'Success: Contribution has already been handled<p>'; return; } - $this->completeTransaction($input, $ids, $objects, $transaction, $recur); + $this->completeTransaction($input, $ids, $objects); } /** @@ -303,7 +303,7 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $membershipID = $this->retrieve('membershipID', 'Integer', FALSE); $contributionRecurID = $this->retrieve('contributionRecurID', 'Integer', FALSE); - $this->getInput($input, $ids); + $this->getInput($input); if ($component == 'event') { $ids['event'] = $this->retrieve('eventID', 'Integer', TRUE); @@ -371,17 +371,16 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { return; } } - $this->single($input, $ids, $objects, FALSE, FALSE); + $this->single($input, $ids, $objects); } /** * @param array $input - * @param array $ids * * @throws \CRM_Core_Exception */ - public function getInput(&$input, &$ids) { - $billingID = $ids['billing'] = CRM_Core_BAO_LocationType::getBilling(); + public function getInput(&$input) { + $billingID = CRM_Core_BAO_LocationType::getBilling(); $input['txnType'] = $this->retrieve('txn_type', 'String', FALSE); $input['paymentStatus'] = $this->retrieve('payment_status', 'String', FALSE); $input['invoice'] = $this->retrieve('invoice', 'String', TRUE); diff --git a/civicrm/CRM/Core/Payment/PayPalImpl.php b/civicrm/CRM/Core/Payment/PayPalImpl.php index 022067bd98b568294c53c5d23e5763aa600fa93a..79c2ecd9de9989c85452670cd816b98e64cd9d70 100644 --- a/civicrm/CRM/Core/Payment/PayPalImpl.php +++ b/civicrm/CRM/Core/Payment/PayPalImpl.php @@ -690,7 +690,7 @@ class CRM_Core_Payment_PayPalImpl extends CRM_Core_Payment { * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public static function handlePaymentNotification() { + public function handlePaymentNotification() { $params = array_merge($_GET, $_REQUEST); $q = explode('/', CRM_Utils_Array::value('q', $params, '')); $lastParam = array_pop($q); diff --git a/civicrm/CRM/Core/Payment/PayPalProIPN.php b/civicrm/CRM/Core/Payment/PayPalProIPN.php index d249aa0bef30b2d2a494358eda818db76a3c80e2..e5c58d3de7ec8045dbb6e4187fd822b114853a43 100644 --- a/civicrm/CRM/Core/Payment/PayPalProIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalProIPN.php @@ -145,16 +145,19 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { /** * Process recurring contributions. + * * @param array $input * @param array $ids * @param array $objects * @param bool $first - * @return void + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - public function recur(&$input, &$ids, &$objects, $first) { + public function recur($input, $ids, $objects, $first) { if (!isset($input['txnType'])) { Civi::log()->debug('PayPalProIPN: Could not find txn_type in input request.'); - echo "Failure: Invalid parameters<p>"; + echo 'Failure: Invalid parameters<p>'; return; } @@ -165,7 +168,7 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { // the contribution record if ($recur->invoice_id != $input['invoice']) { Civi::log()->debug('PayPalProIPN: Invoice values dont match between database and IPN request recur is ' . $recur->invoice_id . ' input is ' . $input['invoice']); - echo "Failure: Invoice values dont match between database and IPN request recur is " . $recur->invoice_id . " input is " . $input['invoice']; + echo 'Failure: Invoice values dont match between database and IPN request recur is ' . $recur->invoice_id . " input is " . $input['invoice']; return; } @@ -344,19 +347,17 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { $contribution->total_amount = $input['amount']; } - $transaction = new CRM_Core_Transaction(); - $status = $input['paymentStatus']; - if ($status == 'Denied' || $status == 'Failed' || $status == 'Voided') { - $this->failed($objects, $transaction); + if ($status === 'Denied' || $status === 'Failed' || $status === 'Voided') { + $this->failed($objects); return; } if ($status === 'Pending') { Civi::log()->debug('Returning since contribution status is Pending'); return; } - elseif ($status == 'Refunded' || $status == 'Reversed') { - $this->cancelled($objects, $transaction); + elseif ($status === 'Refunded' || $status === 'Reversed') { + $this->cancelled($objects); return; } elseif ($status !== 'Completed') { @@ -367,13 +368,12 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { // check if contribution is already completed, if so we ignore this ipn $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); if ($contribution->contribution_status_id == $completedStatusId) { - $transaction->commit(); Civi::log()->debug('PayPalProIPN: Returning since contribution has already been handled.'); echo 'Success: Contribution has already been handled<p>'; return; } - $this->completeTransaction($input, $ids, $objects, $transaction, $recur); + $this->completeTransaction($input, $ids, $objects); } /** @@ -423,7 +423,7 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { $ids['contact'] = self::getValue('c', TRUE); $ids['contribution'] = self::getValue('b', TRUE); - $this->getInput($input, $ids); + $this->getInput($input); if ($this->_component == 'event') { $ids['event'] = self::getValue('e', TRUE); @@ -487,13 +487,12 @@ INNER JOIN civicrm_membership_payment mp ON m.id = mp.membership_id AND mp.contr /** * @param array $input - * @param array $ids * * @return void * @throws CRM_Core_Exception */ - public function getInput(&$input, &$ids) { - $billingID = $ids['billing'] = CRM_Core_BAO_LocationType::getBilling(); + public function getInput(&$input) { + $billingID = CRM_Core_BAO_LocationType::getBilling(); $input['txnType'] = self::retrieve('txn_type', 'String', 'POST', FALSE); $input['paymentStatus'] = self::retrieve('payment_status', 'String', 'POST', FALSE); diff --git a/civicrm/CRM/Core/Payment/PayflowPro.php b/civicrm/CRM/Core/Payment/PayflowPro.php index 9eef03f0e79d9e25cc9fbe78e945f8118e0a5567..0a06a3300d953c9f279b6ab215c27be05001b12e 100644 --- a/civicrm/CRM/Core/Payment/PayflowPro.php +++ b/civicrm/CRM/Core/Payment/PayflowPro.php @@ -333,18 +333,6 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment { } } - /** - * NOTE: 'doTransferCheckout' not implemented - * - * @param array $params - * @param $component - * - * @throws Exception - */ - public function doTransferCheckout(&$params, $component) { - throw new CRM_Core_Exception(ts('This function is not implemented')); - } - /** * This public function checks to see if we have the right processor config values set * @@ -367,9 +355,7 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment { if (!empty($errorMsg)) { return implode('<p>', $errorMsg); } - else { - return NULL; - } + return NULL; } /** @@ -392,9 +378,10 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment { * Submit transaction using cURL * * @param string $submiturl Url to direct HTTPS GET to - * @param $payflow_query value string to be posted + * @param string $payflow_query value string to be posted * * @return mixed|object + * @throws \Civi\Payment\Exception\PaymentProcessorException */ public function submit_transaction($submiturl, $payflow_query) { // get data ready for API diff --git a/civicrm/CRM/Core/Payment/PaymentExpress.php b/civicrm/CRM/Core/Payment/PaymentExpress.php deleted file mode 100644 index 54ddfa21c6363a4ecd74b204bd5fccdf7367fabd..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Core/Payment/PaymentExpress.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | - | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -/** - * Class CRM_Core_Payment_PaymentExpress - */ -class CRM_Core_Payment_PaymentExpress extends CRM_Core_Payment { - const CHARSET = 'iso-8859-1'; - - protected $_mode = NULL; - - /** - * Constructor. - * - * @param string $mode - * The mode of operation: live or test. - * - * @param $paymentProcessor - * - * @return \CRM_Core_Payment_PaymentExpress - */ - public function __construct($mode, &$paymentProcessor) { - - $this->_mode = $mode; - $this->_paymentProcessor = $paymentProcessor; - } - - /** - * This function checks to see if we have the right config values. - * - * @internal param string $mode the mode we are operating in (live or test) - * - * @return string - * the error message if any - */ - public function checkConfig() { - $config = CRM_Core_Config::singleton(); - - $error = []; - - if (empty($this->_paymentProcessor['user_name'])) { - $error[] = ts('UserID is not set in the Administer » System Settings » Payment Processors'); - } - - if (empty($this->_paymentProcessor['password'])) { - $error[] = ts('pxAccess / pxPay Key is not set in the Administer » System Settings » Payment Processors'); - } - - if (!empty($error)) { - return implode('<p>', $error); - } - else { - return NULL; - } - } - - /** - * This function collects all the information from a web/api form and invokes - * the relevant payment processor specific functions to perform the transaction - * - * @param array $params - * Assoc array of input parameters for this transaction. - */ - public function doDirectPayment(&$params) { - throw new CRM_Core_Exception(ts('This function is not implemented')); - } - - /** - * Main transaction function. - * - * @param array $params - * Name value pair of contribution data. - * - * @param $component - */ - public function doTransferCheckout(&$params, $component) { - $component = strtolower($component); - $config = CRM_Core_Config::singleton(); - if ($component != 'contribute' && $component != 'event') { - throw new CRM_Core_Exception(ts('Component is invalid')); - } - - $url = CRM_Utils_System::externUrl('extern/pxIPN'); - - if ($component == 'event') { - $cancelURL = CRM_Utils_System::url('civicrm/event/register', - "_qf_Confirm_display=true&qfKey={$params['qfKey']}", - FALSE, NULL, FALSE - ); - } - elseif ($component == 'contribute') { - $cancelURL = CRM_Utils_System::url('civicrm/contribute/transact', - "_qf_Confirm_display=true&qfKey={$params['qfKey']}", - FALSE, NULL, FALSE - ); - } - - /* - * Build the private data string to pass to DPS, which they will give back to us with the - * - * transaction result. We are building this as a comma-separated list so as to avoid long URLs. - * - * Parameters passed: a=contactID, b=contributionID,c=contributionTypeID,d=invoiceID,e=membershipID,f=participantID,g=eventID - */ - - $privateData = "a={$params['contactID']},b={$params['contributionID']},c={$params['contributionTypeID']},d={$params['invoiceID']}"; - - if ($component == 'event') { - $merchantRef = substr($params['contactID'] . "-" . $params['contributionID'] . " " . substr($params['description'], 27, 20), 0, 24); - $privateData .= ",f={$params['participantID']},g={$params['eventID']}"; - } - elseif ($component == 'contribute') { - $membershipID = $params['membershipID'] ?? NULL; - if ($membershipID) { - $privateData .= ",e=$membershipID"; - } - $merchantRef = substr($params['contactID'] . "-" . $params['contributionID'] . " " . substr($params['description'], 20, 20), 0, 24); - - } - - $dpsParams = [ - 'AmountInput' => str_replace(",", "", number_format($params['amount'], 2)), - 'CurrencyInput' => $params['currencyID'], - 'MerchantReference' => $merchantRef, - 'TxnData1' => $params['qfKey'], - 'TxnData2' => $privateData, - 'TxnData3' => $component . "," . $this->_paymentProcessor['id'], - 'TxnType' => 'Purchase', - // Leave this empty for now, causes an error with DPS if we populate it - 'TxnId' => '', - 'UrlFail' => $url, - 'UrlSuccess' => $url, - ]; - // Allow further manipulation of params via custom hooks - CRM_Utils_Hook::alterPaymentProcessorParams($this, $params, $dpsParams); - - /* - * determine whether method is pxaccess or pxpay by whether signature (mac key) is defined - */ - - if (empty($this->_paymentProcessor['signature'])) { - /* - * Processor is pxpay - * - * This contains the XML/Curl functions we'll need to generate the XML request - */ - - $dpsParams['PxPayUserId'] = $this->_paymentProcessor['user_name']; - $dpsParams['PxPayKey'] = $this->_paymentProcessor['password']; - // Build a valid XML string to pass to DPS - $generateRequest = CRM_Core_Payment_PaymentExpressUtils::_valueXml($dpsParams); - - $generateRequest = CRM_Core_Payment_PaymentExpressUtils::_valueXml('GenerateRequest', $generateRequest); - // Get the special validated URL back from DPS by sending them the XML we've generated - $curl = CRM_Core_Payment_PaymentExpressUtils::_initCURL($generateRequest, $this->_paymentProcessor['url_site']); - $success = FALSE; - - if ($response = curl_exec($curl)) { - curl_close($curl); - $valid = CRM_Core_Payment_PaymentExpressUtils::_xmlAttribute($response, 'valid'); - if (1 == $valid) { - // the request was validated, so we'll get the URL and redirect to it - $uri = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'URI'); - CRM_Utils_System::redirect($uri); - } - else { - // redisplay confirmation page - CRM_Utils_System::redirect($cancelURL); - } - } - else { - // calling DPS failed - throw new CRM_Core_Exception(ts('Unable to establish connection to the payment gateway.')); - } - } - else { - $processortype = "pxaccess"; - require_once 'PaymentExpress/pxaccess.inc.php'; - // URL - $PxAccess_Url = $this->_paymentProcessor['url_site']; - // User ID - $PxAccess_Userid = $this->_paymentProcessor['user_name']; - // Your DES Key from DPS - $PxAccess_Key = $this->_paymentProcessor['password']; - // Your MAC key from DPS - $Mac_Key = $this->_paymentProcessor['signature']; - - $pxaccess = new PxAccess($PxAccess_Url, $PxAccess_Userid, $PxAccess_Key, $Mac_Key); - $request = new PxPayRequest(); - $request->setAmountInput($dpsParams['AmountInput']); - $request->setTxnData1($dpsParams['TxnData1']); - $request->setTxnData2($dpsParams['TxnData2']); - $request->setTxnData3($dpsParams['TxnData3']); - $request->setTxnType($dpsParams['TxnType']); - $request->setInputCurrency($dpsParams['InputCurrency']); - $request->setMerchantReference($dpsParams['MerchantReference']); - $request->setUrlFail($dpsParams['UrlFail']); - $request->setUrlSuccess($dpsParams['UrlSuccess']); - $request_string = $pxaccess->makeRequest($request); - CRM_Utils_System::redirect($request_string); - } - } - -} diff --git a/civicrm/CRM/Core/Payment/PaymentExpressIPN.php b/civicrm/CRM/Core/Payment/PaymentExpressIPN.php deleted file mode 100644 index 878b948f96cbca6b164700726f893ebd0c7a68ca..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Core/Payment/PaymentExpressIPN.php +++ /dev/null @@ -1,443 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | - | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -/** - * Class CRM_Core_Payment_PaymentExpressIPN - */ -class CRM_Core_Payment_PaymentExpressIPN extends CRM_Core_Payment_BaseIPN { - - /** - * Mode of operation: live or test - * - * @var object - */ - protected $_mode = NULL; - - /** - * @param string $name - * @param $type - * @param $object - * @param bool $abort - * - * @return mixed - */ - public static function retrieve($name, $type, $object, $abort = TRUE) { - $value = $object[$name] ?? NULL; - if ($abort && $value === NULL) { - CRM_Core_Error::debug_log_message("Could not find an entry for $name"); - echo "Failure: Missing Parameter - " . $name . "<p>"; - exit(); - } - - if ($value) { - if (!CRM_Utils_Type::validate($value, $type)) { - CRM_Core_Error::debug_log_message("Could not find a valid entry for $name"); - echo "Failure: Invalid Parameter<p>"; - exit(); - } - } - - return $value; - } - - /** - * Constructor. - * - * @param string $mode - * The mode of operation: live or test. - * - * @param $paymentProcessor - * - * @return \CRM_Core_Payment_PaymentExpressIPN - */ - public function __construct($mode, &$paymentProcessor) { - parent::__construct(); - - $this->_mode = $mode; - $this->_paymentProcessor = $paymentProcessor; - } - - /** - * The function gets called when a new order takes place. - * - * @param $success - * @param array $privateData - * Contains the name value pair of <merchant-private-data>. - * - * @param $component - * @param $amount - * @param $transactionReference - * - * @return bool - * @throws \CRM_Core_Exception - * @throws \CiviCRM_API3_Exception - */ - public function newOrderNotify($success, $privateData, $component, $amount, $transactionReference) { - $ids = $input = $params = []; - - $input['component'] = strtolower($component); - - $ids['contact'] = self::retrieve('contactID', 'Integer', $privateData, TRUE); - $ids['contribution'] = self::retrieve('contributionID', 'Integer', $privateData, TRUE); - - if ($input['component'] == "event") { - $ids['event'] = self::retrieve('eventID', 'Integer', $privateData, TRUE); - $ids['participant'] = self::retrieve('participantID', 'Integer', $privateData, TRUE); - $ids['membership'] = NULL; - } - else { - $ids['membership'] = self::retrieve('membershipID', 'Integer', $privateData, FALSE); - } - $ids['contributionRecur'] = $ids['contributionPage'] = NULL; - - $paymentProcessorID = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType', - 'PayPal_Express', 'id', 'name' - ); - - if (!$this->validateData($input, $ids, $objects, TRUE, $paymentProcessorID)) { - return FALSE; - } - - // make sure the invoice is valid and matches what we have in the contribution record - $input['invoice'] = $privateData['invoiceID']; - $input['newInvoice'] = $transactionReference; - $contribution = &$objects['contribution']; - $input['trxn_id'] = $transactionReference; - - if ($contribution->invoice_id != $input['invoice']) { - CRM_Core_Error::debug_log_message("Invoice values dont match between database and IPN request"); - echo "Failure: Invoice values dont match between database and IPN request<p>"; - return FALSE; - } - - // lets replace invoice-id with Payment Processor -number because thats what is common and unique - // in subsequent calls or notifications sent by google. - $contribution->invoice_id = $input['newInvoice']; - - $input['amount'] = $amount; - - if ($contribution->total_amount != $input['amount']) { - CRM_Core_Error::debug_log_message("Amount values dont match between database and IPN request"); - echo "Failure: Amount values dont match between database and IPN request. " . $contribution->total_amount . "/" . $input['amount'] . "<p>"; - return FALSE; - } - - // check if contribution is already completed, if so we ignore this ipn - - if ($contribution->contribution_status_id == 1) { - CRM_Core_Error::debug_log_message("returning since contribution has already been handled"); - echo "Success: Contribution has already been handled<p>"; - return TRUE; - } - else { - /* Since trxn_id hasn't got any use here, - * lets make use of it by passing the eventID/membershipTypeID to next level. - * And change trxn_id to the payment processor reference before finishing db update */ - - if ($ids['event']) { - $contribution->trxn_id = $ids['event'] . CRM_Core_DAO::VALUE_SEPARATOR . $ids['participant']; - } - else { - $contribution->trxn_id = $ids['membership']; - } - } - CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects); - return TRUE; - } - - /** - * - * /** - * The function returns the component(Event/Contribute..)and whether it is Test or not - * - * @param array $privateData - * Contains the name-value pairs of transaction related data. - * @param int $orderNo - * <order-total> send by google. - * - * @return array - * context of this call (test, component, payment processor id) - */ - public static function getContext($privateData, $orderNo) { - - $component = NULL; - $isTest = NULL; - - $contributionID = $privateData['contributionID']; - $contribution = new CRM_Contribute_DAO_Contribution(); - $contribution->id = $contributionID; - - if (!$contribution->find(TRUE)) { - CRM_Core_Error::debug_log_message("Could not find contribution record: $contributionID"); - echo "Failure: Could not find contribution record for $contributionID<p>"; - exit(); - } - - if (stristr($contribution->source, 'Online Contribution')) { - $component = 'contribute'; - } - elseif (stristr($contribution->source, 'Online Event Registration')) { - $component = 'event'; - } - $isTest = $contribution->is_test; - - $duplicateTransaction = 0; - if ($contribution->contribution_status_id == 1) { - //contribution already handled. (some processors do two notifications so this could be valid) - $duplicateTransaction = 1; - } - - if ($component == 'contribute') { - if (!$contribution->contribution_page_id) { - CRM_Core_Error::debug_log_message("Could not find contribution page for contribution record: $contributionID"); - echo "Failure: Could not find contribution page for contribution record: $contributionID<p>"; - exit(); - } - } - else { - - $eventID = $privateData['eventID']; - - if (!$eventID) { - CRM_Core_Error::debug_log_message("Could not find event ID"); - echo "Failure: Could not find eventID<p>"; - exit(); - } - - // we are in event mode - // make sure event exists and is valid - $event = new CRM_Event_DAO_Event(); - $event->id = $eventID; - if (!$event->find(TRUE)) { - CRM_Core_Error::debug_log_message("Could not find event: $eventID"); - echo "Failure: Could not find event: $eventID<p>"; - exit(); - } - } - - return [$isTest, $component, $duplicateTransaction]; - } - - /** - * Main notification processing method. - * - * hex string from paymentexpress is passed to this function as hex string. Code based on googleIPN - * mac_key is only passed if the processor is pxaccess as it is used for decryption - * $dps_method is either pxaccess or pxpay - * - * @param string $dps_method - * @param array $rawPostData - * @param string $dps_url - * @param string $dps_user - * @param string $dps_key - * @param string $mac_key - * - * @throws \Exception - */ - public static function main($dps_method, $rawPostData, $dps_url, $dps_user, $dps_key, $mac_key) { - - $config = CRM_Core_Config::singleton(); - define('RESPONSE_HANDLER_LOG_FILE', $config->uploadDir . 'CiviCRM.PaymentExpress.log'); - - //Setup the log file - if (!$message_log = fopen(RESPONSE_HANDLER_LOG_FILE, "a")) { - error_func("Cannot open " . RESPONSE_HANDLER_LOG_FILE . " file.\n", 0); - exit(1); - } - - if ($dps_method == "pxpay") { - $processResponse = CRM_Core_Payment_PaymentExpressUtils::_valueXml([ - 'PxPayUserId' => $dps_user, - 'PxPayKey' => $dps_key, - 'Response' => $_GET['result'], - ]); - $processResponse = CRM_Core_Payment_PaymentExpressUtils::_valueXml('ProcessResponse', $processResponse); - - fwrite($message_log, sprintf("\n\r%s:- %s\n", date("D M j G:i:s T Y"), - $processResponse - )); - - // Send the XML-formatted validation request to DPS so that we can receive a decrypted XML response which contains the transaction results - $curl = CRM_Core_Payment_PaymentExpressUtils::_initCURL($processResponse, $dps_url); - - fwrite($message_log, sprintf("\n\r%s:- %s\n", date("D M j G:i:s T Y"), - $curl - )); - $success = FALSE; - if ($response = curl_exec($curl)) { - $info = curl_getinfo($curl); - if ($info['http_code'] < 200 || $info['http_code'] > 299) { - $log_message = "DPS error: HTTP {$info['http_code']} retrieving {$info['url']}."; - throw new CRM_Core_Exception($log_message); - } - else { - fwrite($message_log, sprintf("\n\r%s:- %s\n", date("D M j G:i:s T Y"), $response)); - curl_close($curl); - - // Assign the returned XML values to variables - $valid = CRM_Core_Payment_PaymentExpressUtils::_xmlAttribute($response, 'valid'); - // CRM_Core_Payment_PaymentExpressUtils::_xmlAttribute() returns NULL if preg fails. - if (is_null($valid)) { - throw new CRM_Core_Exception(ts("DPS error: Unable to parse XML response from DPS.", [1 => $valid])); - } - $success = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'Success'); - $txnId = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'TxnId'); - $responseText = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'ResponseText'); - $authCode = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'AuthCode'); - $DPStxnRef = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'DpsTxnRef'); - $qfKey = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "TxnData1"); - $privateData = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "TxnData2"); - list($component, $paymentProcessorID,) = explode(',', CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "TxnData3")); - $amount = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "AmountSettlement"); - $merchantReference = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "MerchantReference"); - } - } - else { - // calling DPS failed - throw new CRM_Core_Exception(ts('Unable to establish connection to the payment gateway to verify transaction response.')); - exit; - } - } - elseif ($dps_method == "pxaccess") { - - require_once 'PaymentExpress/pxaccess.inc.php'; - global $pxaccess; - $pxaccess = new PxAccess($dps_url, $dps_user, $dps_key, $mac_key); - // GetResponse method in PxAccess object returns PxPayResponse object - // which encapsulates all the response data - $rsp = $pxaccess->getResponse($rawPostData); - - $qfKey = $rsp->getTxnData1(); - $privateData = $rsp->getTxnData2(); - list($component, $paymentProcessorID) = explode(',', $rsp->getTxnData3()); - $success = $rsp->getSuccess(); - $authCode = $rsp->getAuthCode(); - $DPStxnRef = $rsp->getDpsTxnRef(); - $amount = $rsp->getAmountSettlement(); - $MerchantReference = $rsp->getMerchantReference(); - } - - $privateData = $privateData ? self::stringToArray($privateData) : ''; - - // Record the current count in array, before we start adding things (for later checks) - $countPrivateData = count($privateData); - - // Private Data consists of : a=contactID, b=contributionID,c=contributionTypeID,d=invoiceID,e=membershipID,f=participantID,g=eventID - $privateData['contactID'] = $privateData['a']; - $privateData['contributionID'] = $privateData['b']; - $privateData['contributionTypeID'] = $privateData['c']; - $privateData['invoiceID'] = $privateData['d']; - - if ($component == "event") { - $privateData['participantID'] = $privateData['f']; - $privateData['eventID'] = $privateData['g']; - } - elseif ($component == "contribute") { - - if ($countPrivateData == 5) { - $privateData["membershipID"] = $privateData['e']; - } - } - - $transactionReference = $authCode . "-" . $DPStxnRef; - - list($mode, $component, $duplicateTransaction) = self::getContext($privateData, $transactionReference); - $mode = $mode ? 'test' : 'live'; - - $paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($paymentProcessorID, - $mode - ); - - $ipn = self::singleton($mode, $component, $paymentProcessor); - - //Check status and take appropriate action - - if ($success == 1) { - if ($duplicateTransaction == 0) { - $ipn->newOrderNotify($success, $privateData, $component, $amount, $transactionReference); - } - - if ($component == "event") { - $finalURL = CRM_Utils_System::url('civicrm/event/register', - "_qf_ThankYou_display=1&qfKey=$qfKey", - FALSE, NULL, FALSE - ); - } - elseif ($component == "contribute") { - $finalURL = CRM_Utils_System::url('civicrm/contribute/transact', - "_qf_ThankYou_display=1&qfKey=$qfKey", - FALSE, NULL, FALSE - ); - } - - CRM_Utils_System::redirect($finalURL); - } - else { - - if ($component == "event") { - $finalURL = CRM_Utils_System::url('civicrm/event/confirm', - "reset=1&cc=fail&participantId=$privateData[participantID]", - FALSE, NULL, FALSE - ); - } - elseif ($component == "contribute") { - $finalURL = CRM_Utils_System::url('civicrm/contribute/transact', - "_qf_Main_display=1&cancel=1&qfKey=$qfKey", - FALSE, NULL, FALSE - ); - } - - CRM_Utils_System::redirect($finalURL); - } - } - - /** - * Converts the comma separated name-value pairs in <TxnData2> to an array of values. - * - * @param string $str - * - * @return array - */ - public static function stringToArray($str) { - $vars = $labels = []; - $labels = explode(',', $str); - foreach ($labels as $label) { - $terms = explode('=', $label); - $vars[$terms[0]] = $terms[1]; - } - return $vars; - } - -} diff --git a/civicrm/CRM/Core/Payment/PaymentExpressUtils.php b/civicrm/CRM/Core/Payment/PaymentExpressUtils.php deleted file mode 100644 index c4a544e29e733e1b086445f3ff1e692e4e32840d..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Core/Payment/PaymentExpressUtils.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | - | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -/** - * Class CRM_Core_Payment_PaymentExpressUtils - */ -class CRM_Core_Payment_PaymentExpressUtils { - - /** - * @param $element - * @param null $value - * - * @return string - */ - public static function _valueXml($element, $value = NULL) { - $nl = "\n"; - - if (is_array($element)) { - $xml = ''; - foreach ($element as $elem => $value) { - $xml .= self::_valueXml($elem, $value); - } - return $xml; - } - return "<" . $element . ">" . $value . "</" . $element . ">" . $nl; - } - - /** - * @param $xml - * @param string $name - * - * @return mixed - */ - public static function _xmlElement($xml, $name) { - $value = preg_replace('/.*<' . $name . '[^>]*>(.*)<\/' . $name . '>.*/', '\1', $xml); - return $value; - } - - /** - * @param $xml - * @param string $name - * - * @return mixed|null - */ - public static function _xmlAttribute($xml, $name) { - $value = preg_replace('/<.*' . $name . '="([^"]*)".*>/', '\1', $xml); - return $value != $xml ? $value : NULL; - } - - /** - * @param $query - * @param $url - * - * @return resource - */ - public static function &_initCURL($query, $url) { - $curl = curl_init(); - - curl_setopt($curl, CURLOPT_URL, $url); - curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE); - curl_setopt($curl, CURLOPT_POST, TRUE); - curl_setopt($curl, CURLOPT_POSTFIELDS, $query); - curl_setopt($curl, CURLOPT_TIMEOUT, 30); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); - if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') { - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, FALSE); - } - curl_setopt($curl, CURLOPT_HEADER, 0); - curl_setopt($curl, CURLOPT_SSLVERSION, 0); - - if (strtoupper(substr(@php_uname('s'), 0, 3)) === 'WIN') { - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, Civi::settings()->get('verifySSL')); - curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, Civi::settings()->get('verifySSL') ? 2 : 0); - } - return $curl; - } - -} diff --git a/civicrm/CRM/Core/Payment/Realex.php b/civicrm/CRM/Core/Payment/Realex.php index 700e43cb11841ee3ae907e0cde27ae267c781cdc..6fa22c9ccd867c3dcaebe88fb6aa1c36f7248fc4 100644 --- a/civicrm/CRM/Core/Payment/Realex.php +++ b/civicrm/CRM/Core/Payment/Realex.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Core/Payment/eWAY.php b/civicrm/CRM/Core/Payment/eWAY.php index 8a7f4f639bea4ee5bf5ea7bc675188eb0dde076d..9c37727053fcf94495047848ceae6b7000d38993 100644 --- a/civicrm/CRM/Core/Payment/eWAY.php +++ b/civicrm/CRM/Core/Payment/eWAY.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Core/Permission/Backdrop.php b/civicrm/CRM/Core/Permission/Backdrop.php index 1dddc5663ec5f3db371884a4cc774dbcf8c1ccdb..8226c45a168fb9ad881647038289cf2c6f2f466e 100644 --- a/civicrm/CRM/Core/Permission/Backdrop.php +++ b/civicrm/CRM/Core/Permission/Backdrop.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Base.php b/civicrm/CRM/Core/Permission/Base.php index b3f5a066f17114eeb6382021a20882e145dda3ea..a49eb88f8a88fdbdc3db9a0698a16e2b38589145 100644 --- a/civicrm/CRM/Core/Permission/Base.php +++ b/civicrm/CRM/Core/Permission/Base.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Drupal.php b/civicrm/CRM/Core/Permission/Drupal.php index 839120520a73254cdb2630ee5a01673e5177b3cd..73179d457505f413b310c6c267f7bc2d2577cf31 100644 --- a/civicrm/CRM/Core/Permission/Drupal.php +++ b/civicrm/CRM/Core/Permission/Drupal.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Drupal6.php b/civicrm/CRM/Core/Permission/Drupal6.php index b98dd28da688bc05013a097d935ebacc7f70db26..2ff671fb09bcedc3a65909151ef3b9f3979bd905 100644 --- a/civicrm/CRM/Core/Permission/Drupal6.php +++ b/civicrm/CRM/Core/Permission/Drupal6.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Drupal8.php b/civicrm/CRM/Core/Permission/Drupal8.php index 7596e15af313829bd8840e932def1bf918511ea8..649ff0c53b9c80b6ee01919aa6ebdb034da73d02 100644 --- a/civicrm/CRM/Core/Permission/Drupal8.php +++ b/civicrm/CRM/Core/Permission/Drupal8.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/DrupalBase.php b/civicrm/CRM/Core/Permission/DrupalBase.php index 2c16e77f6565ce41b510f062b1036b33e22edae7..23db51cae8bc4551406a154c47d0ffa0f255b688 100644 --- a/civicrm/CRM/Core/Permission/DrupalBase.php +++ b/civicrm/CRM/Core/Permission/DrupalBase.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Joomla.php b/civicrm/CRM/Core/Permission/Joomla.php index ce338d1c5ede3b7d9b12bc2655b6297813c338aa..42d551dd194afbb993f92f8d54d269c94c232424 100644 --- a/civicrm/CRM/Core/Permission/Joomla.php +++ b/civicrm/CRM/Core/Permission/Joomla.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Soap.php b/civicrm/CRM/Core/Permission/Soap.php index be856fcbec228dd4765dd18ec35f2a74fd905f80..b6add618a227c2db59905c7054323ef6a4c1445a 100644 --- a/civicrm/CRM/Core/Permission/Soap.php +++ b/civicrm/CRM/Core/Permission/Soap.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Temp.php b/civicrm/CRM/Core/Permission/Temp.php index d8f6af1913cf138718f8e34abc212bb2524b3423..2f7e32850fb1c993a1bc81bcb9032971b76c3dca 100644 --- a/civicrm/CRM/Core/Permission/Temp.php +++ b/civicrm/CRM/Core/Permission/Temp.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/UnitTests.php b/civicrm/CRM/Core/Permission/UnitTests.php index 1a282d99865941e2bfbc4e19c24ede98327a2e7a..24879ab5a343f67a2b989ab78e5e1e008831d274 100644 --- a/civicrm/CRM/Core/Permission/UnitTests.php +++ b/civicrm/CRM/Core/Permission/UnitTests.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/WordPress.php b/civicrm/CRM/Core/Permission/WordPress.php index d310cff5e5b1ac7f75cc83bfbcf6c7ee3d4bf985..9b7f8c9a5be3bfee7c094cd980dd4342f60818f7 100644 --- a/civicrm/CRM/Core/Permission/WordPress.php +++ b/civicrm/CRM/Core/Permission/WordPress.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 2fdc708682357c399b1e6ca87c1831a7150512ee..758db214acba399f5fd3e18c918febbc28a0db37 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -952,6 +952,23 @@ WHERE id = %1"; return self::$relationshipType[$cacheKey]; } + /** + * Name => Label pairs for all relationship types + * + * @return array + */ + public static function relationshipTypeOptions() { + $relationshipTypes = []; + $relationshipLabels = self::relationshipType(); + foreach (self::relationshipType('name') as $id => $type) { + $relationshipTypes[$type['name_a_b']] = $relationshipLabels[$id]['label_a_b']; + if ($type['name_b_a'] && $type['name_b_a'] != $type['name_a_b']) { + $relationshipTypes[$type['name_b_a']] = $relationshipLabels[$id]['label_b_a']; + } + } + return $relationshipTypes; + } + /** * Get all the ISO 4217 currency codes * diff --git a/civicrm/CRM/Core/QuickForm/Action/Jump.php b/civicrm/CRM/Core/QuickForm/Action/Jump.php index 42aefef7efd30c6fd953ca49a8cf8c1236105988..ce819f5c6c6c280be794e433049830a0cc673b0f 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Jump.php +++ b/civicrm/CRM/Core/QuickForm/Action/Jump.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Jump extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Next.php b/civicrm/CRM/Core/QuickForm/Action/Next.php index 8122e141b0707d503a75109a7694907f7b4a7e65..5903f0e708a53be0c0d59e99f1428e4e9c228235 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Next.php +++ b/civicrm/CRM/Core/QuickForm/Action/Next.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Next extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Process.php b/civicrm/CRM/Core/QuickForm/Action/Process.php index 5f37ef6ea21c5115cae5da329cdf08c624f88fa4..33bb74f36cf9238438c88519863ae883406bb4f5 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Process.php +++ b/civicrm/CRM/Core/QuickForm/Action/Process.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Process extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Refresh.php b/civicrm/CRM/Core/QuickForm/Action/Refresh.php index 4068b299525e07d7316d62d492837a401b5a337d..0474a76cd8f156e3a8398321f098700140c4f139 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Refresh.php +++ b/civicrm/CRM/Core/QuickForm/Action/Refresh.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Refresh extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Submit.php b/civicrm/CRM/Core/QuickForm/Action/Submit.php index 233faa68bef9da3ca89fba377ac2979618cdd903..4c4fdfa2c763c360963f55b0b2bb43956ce5fb57 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Submit.php +++ b/civicrm/CRM/Core/QuickForm/Action/Submit.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Submit extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Upload.php b/civicrm/CRM/Core/QuickForm/Action/Upload.php index 130a86a05807100d67f5af99b40a3b162b5ddb9d..fb999305c41ebfd8fbd289e80994a7189d59f674 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Upload.php +++ b/civicrm/CRM/Core/QuickForm/Action/Upload.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ class CRM_Core_QuickForm_Action_Upload extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php b/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php index 35a959ad942b6edf938d6c5bc265e4d87a9ba13b..79fad90e3a31bd8fd5c12cc902cdcef2f54b2f59 100644 --- a/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php +++ b/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php @@ -30,7 +30,6 @@ * * @package CRM * @copyright U.S. PIRG Education Fund 2007 - * $Id$ * */ class CRM_Core_QuickForm_GroupMultiSelect extends CRM_Core_QuickForm_NestedAdvMultiSelect { diff --git a/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php b/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php index 791ef9ef2477c90d5d0abda06e76d42825bc6072..82e8bebbf06274ee1c90b11b356037bc275ad834 100644 --- a/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php +++ b/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php @@ -30,7 +30,6 @@ * * @package CRM * @copyright U.S. PIRG Education Fund 2007 - * $Id$ * */ diff --git a/civicrm/CRM/Core/ScheduledJob.php b/civicrm/CRM/Core/ScheduledJob.php index fbf0bfd5b84814c4c87c37505769ee3a4537aa71..6fac4e195c870e447f82db6c6483f980fb487f09 100644 --- a/civicrm/CRM/Core/ScheduledJob.php +++ b/civicrm/CRM/Core/ScheduledJob.php @@ -15,8 +15,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_ScheduledJob { @@ -61,23 +59,22 @@ class CRM_Core_ScheduledJob { } /** - * @param null $date + * Update the last_run date of this job */ - public function saveLastRun($date = NULL) { + public function saveLastRun() { $dao = new CRM_Core_DAO_Job(); $dao->id = $this->id; - $dao->last_run = ($date == NULL) ? CRM_Utils_Date::currentDBDate() : CRM_Utils_Date::currentDBDate($date); + $dao->last_run = CRM_Utils_Date::currentDBDate(); $dao->save(); } /** - * @return void + * Delete the scheduled_run_date from this job */ public function clearScheduledRunDate() { - CRM_Core_DAO::executeQuery('UPDATE civicrm_job SET scheduled_run_date = NULL WHERE id = %1', - [ - '1' => [$this->id, 'Integer'], - ]); + CRM_Core_DAO::executeQuery('UPDATE civicrm_job SET scheduled_run_date = NULL WHERE id = %1', [ + '1' => [$this->id, 'Integer'], + ]); } /** diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 02d654549993febffbd88ba6e8b56fb5629ddec3..f7d22c826a1d9182fd7a596f98ed7a847640554e 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_SelectValues { @@ -1196,4 +1194,14 @@ class CRM_Core_SelectValues { ]; } + /** + * @return array + */ + public static function relationshipOrientation() { + return [ + 'a_b' => ts('A to B'), + 'b_a' => ts('B to A'), + ]; + } + } diff --git a/civicrm/CRM/Core/Selector/Base.php b/civicrm/CRM/Core/Selector/Base.php index 268f0e584206db6ebaa5c90e200b7421e27d11b6..e962019ac1d4e774189b4865c5af14d673eba478 100644 --- a/civicrm/CRM/Core/Selector/Base.php +++ b/civicrm/CRM/Core/Selector/Base.php @@ -17,8 +17,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Selector_Base { diff --git a/civicrm/CRM/Core/Selector/Controller.php b/civicrm/CRM/Core/Selector/Controller.php index 0f70941e9027274a49e64d4e0489318aebda7675..0fbba210c03bfd6259d06f1c79a6a60ea0e18d00 100644 --- a/civicrm/CRM/Core/Selector/Controller.php +++ b/civicrm/CRM/Core/Selector/Controller.php @@ -20,8 +20,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Selector_Controller { diff --git a/civicrm/CRM/Core/Smarty.php b/civicrm/CRM/Core/Smarty.php index 86fcab419aa1565c46634f7cdddcc6ab71caabb0..1dbfe01434b132f6a5a1cd320f6c490142e3549e 100644 --- a/civicrm/CRM/Core/Smarty.php +++ b/civicrm/CRM/Core/Smarty.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php b/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php index 8c5f573a863020bea1eab8177f6697424ea28fef..390a8e73030e4d039daa89eff48c6c9c05a0502d 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.edit.php b/civicrm/CRM/Core/Smarty/plugins/block.edit.php index 672b3532ea617cdbea30d9add940a14498132c04..d42fe44e039299c877df04123f002085e9fcee68 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.edit.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.edit.php @@ -19,7 +19,6 @@ * @author Piotr Szotkowski <shot@caltha.pl> * @author Michal Mach <mover@artnet.org> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.htxt.php b/civicrm/CRM/Core/Smarty/plugins/block.htxt.php index 3758abc2e8d9938926c1beb0c0e153e7388d6be4..cfd03732c13c80fd04b53230269c86dfee396858 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.htxt.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.htxt.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.localize.php b/civicrm/CRM/Core/Smarty/plugins/block.localize.php index fd64357e7a715e9b0520b0b841ca8de261f02d67..ebb9f08a28c6e342d661b9df5da5b3d9f9fe4ad5 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.localize.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.localize.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.serialize.php b/civicrm/CRM/Core/Smarty/plugins/block.serialize.php index 1a9e9f22292babe27bd491bcb05a53c6a29226cd..e716631050bfb15bed18b943c501fb9d6e099e5b 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.serialize.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.serialize.php @@ -15,7 +15,6 @@ * @package CRM * @author Donald Lobo <lobo@civicrm.org> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.ts.php b/civicrm/CRM/Core/Smarty/plugins/block.ts.php index b7bd379b380347fb54185b2218f6a635145b926b..f3cbd36fe95276980d7d399a15152d825f897d5f 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.ts.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.ts.php @@ -16,7 +16,6 @@ * @author Piotr Szotkowski <shot@caltha.pl> * @author Michal Mach <mover@artnet.org> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php b/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php index c1eae333e22a844f8e7a05d8bc7c5dce2babded3..48e759dd88bb0aeb76bc78ab7a0248e699d7ac7f 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright TTTP - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php b/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php index eabc3384a4275a5f3c12c687dbd50beb1994b959..1b3146c060f603341011e1b19e56b15f8e7478c0 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php b/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php index 40abed3ed735010536dbccee6664cb4098293951..bd13b9ed2b8a7c33fc286133748b4841fcbdfd5a 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php b/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php index 63ec93388ce02419e770e04a601584ec03489289..c0ea4426926210c3913842e87978f877408921ce 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php b/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php index 01b47198a2c38a8f1ce3f093ec7921cac778c078..0ba5c1f93b1761651b5a3a85a384146de824630a 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php b/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php index e73e67ac33ab4b975c4307b9672f3c8adc8c99cf..7a9a9b947df00bfd49b7763a115b893a77652b4a 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php b/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php index edcfd4ec58b746883624e1ec9ef6c975e7dbbb7b..0be209497486e93755aedd084d41b4df67f3a657 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php b/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php index 9360e403f3f7f3b1671b5cb152c81509a96fa101..ddf3f317b625ae72a28f0e10f6ea4cda263b28c8 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright TTTP - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php b/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php index f8ae97ad8a069808a0d91ec39d11249d688b293e..a13229e41cd447094ccf53054565245837db04a2 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php b/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php index 4d87efcec6dc24fee3d80db31e7d100317a7d034..32b5b0a55abaa2a7f643e8726fcfb0e61f57b18c 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php b/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php index 6f9ab7c617055fffd29104b4418b12a8548098a2..11805d92e3a64c0af8aea8f30e011d96eca84500 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright TTTP - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.docURL.php b/civicrm/CRM/Core/Smarty/plugins/function.docURL.php index b5ebcfee451e19d90b8520e382718aec04e83e27..0ca996cd14c961e2b70700480b7345d78dfd931c 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.docURL.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.docURL.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.help.php b/civicrm/CRM/Core/Smarty/plugins/function.help.php index 84a397024525e349c6efea237f126f782c35885c..1a1a8ad8af3247915f7d01723076a0ed97eb528b 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.help.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.help.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php b/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php index 4d01db10b2f4bc70501ece3e3e56be707822182d..7e8a2eeba90fca9311159ac8e904e7113e89a936 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php @@ -17,7 +17,6 @@ * @package CRM * @author Allen Shaw <allen@nswebsolutions.com> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php index 6c02079848ac4d9aafe904d4bfee44b98b4531ed..37e3068652747ff1055be748ca94422becfabf41 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php @@ -17,7 +17,6 @@ * @package CRM * @author Allen Shaw <allen@nswebsolutions.com> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php b/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php index 6f68a3294fea42a225cb7ebec6b460b541fc453b..a4b467a6e1dedea9569be4aa59e69f0da07f646f 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php index 570a853a8a0a82760715ceaf582105d6ea09c061..3dcc5346eadd1f927a48739b64b3fad354eb348c 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php index 75989d871912d846fb37b7fc2767a66d3a7cf134..0062da9ca2f74623f6540b7a16a79892d1300fe9 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php index b01857bd749875fd127386d8f603d33eb6d3a393..bef94f9d971514bbf2d84013c1a285473de9bb8b 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php index 6c8f4c66d2c96470f82f116238e5446462ced569..d466a418b05a0a4918291d65baca9f580ba7d0de 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php index db39f5ec07929db6e6c64d20b8c8d06b1b3fc040..cfc0eee98a940098ceb34754937e9257b1e8b41a 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php index 83687888b55f85fdf566a4895e0a3ea14e83d1a9..0448eefc2ee2ea48e6dae382d16708c9b4758799 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php index 49f10f7a215d08559eecbbacd4eadea8717039af..c2ec12cadf70704a6c6eb00447634c4eaabc1c68 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php index 0e7530f308fbe51d1dc049d3e91f54d9d8b77cdf..1a4009e916ca0453e7453234593041c0d8722d13 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php index 8dc174bd343f540df85e2cf19d767ae64ab8590c..a6ea517e653d6b1d6df776199bba9e9aa3719af2 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php index 43a4dca6eda21d4d8304b6feecffce896216d247..aa23c426c4591d5e1c06e858077a31718823f60d 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php b/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php index 1fb2e5fb386d0b765465d47f66c0635ec5dd7931..23ba922180ff13429a29d4d5851fb9d45d2f05d7 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.json.php b/civicrm/CRM/Core/Smarty/plugins/modifier.json.php index 9155d8623c2a914ae1edf03c76a81e05e1f16645..06e1e3fd88328a7ab4e7e503d2b58b1a339090ab 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.json.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.json.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php b/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php index dd21e018a90ec9f3215c2aa4cec53e55de88a85d..a58909ff0592fa25ce9a5033783fa901558233f2 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php b/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php index dea422d10da342d629d6fb6245534102fb0510b1..58433e08cfd23824f2130ef5e588bdbe16bb80a3 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php @@ -12,7 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php b/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php index 8f03c6e03ab1d10337478a99647b4783e6a4db50..42572ccd50caa5c8274909aa0a074b3867f94873 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/resources/String.php b/civicrm/CRM/Core/Smarty/resources/String.php index 126b7dcde705826b534d7772873e13ced10cd85c..b533b44c785ffddf492103e7459ea984ccc326bb 100644 --- a/civicrm/CRM/Core/Smarty/resources/String.php +++ b/civicrm/CRM/Core/Smarty/resources/String.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * @param $tpl_name * @param $tpl_source * @param $smarty_obj diff --git a/civicrm/CRM/Core/TableHierarchy.php b/civicrm/CRM/Core/TableHierarchy.php index 62195bd0dbe76cc6c34b64001b8dffff16e607a1..835688d0ab0f570c280cab6377608408f5a63e50 100644 --- a/civicrm/CRM/Core/TableHierarchy.php +++ b/civicrm/CRM/Core/TableHierarchy.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_TableHierarchy { diff --git a/civicrm/CRM/Core/Transaction.php b/civicrm/CRM/Core/Transaction.php index a2297bee1f2db42c7164fe64ffc046bc5da6d340..f2030606b6f8e81a62c6c734cc17c059beab3003 100644 --- a/civicrm/CRM/Core/Transaction.php +++ b/civicrm/CRM/Core/Transaction.php @@ -14,7 +14,6 @@ * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing * @copyright David Strauss <david@fourkitchens.com> (c) 2007 - * $Id$ * * (Note: This has been considerably rewritten; the interface is preserved * for backward compatibility.) diff --git a/civicrm/CRM/Custom/Form/ChangeFieldType.php b/civicrm/CRM/Custom/Form/ChangeFieldType.php index e5436ce95d0855df1e8a3a4accb23254b3badc38..8ba794c5cc565655d15c95a405fe76a3371cf375 100644 --- a/civicrm/CRM/Custom/Form/ChangeFieldType.php +++ b/civicrm/CRM/Custom/Form/ChangeFieldType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/DeleteField.php b/civicrm/CRM/Custom/Form/DeleteField.php index 8298ec966065898a21e90b4fed14d733f8d4343b..c713bbdbd115cd25fc58e277af80de7b2e00481f 100644 --- a/civicrm/CRM/Custom/Form/DeleteField.php +++ b/civicrm/CRM/Custom/Form/DeleteField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/DeleteGroup.php b/civicrm/CRM/Custom/Form/DeleteGroup.php index 391bfce6cd0479fa214fee3fa2ed8cec013e983c..a8e69436d430e5891fcdb5c12ea72f0eb0de4395 100644 --- a/civicrm/CRM/Custom/Form/DeleteGroup.php +++ b/civicrm/CRM/Custom/Form/DeleteGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/Field.php b/civicrm/CRM/Custom/Form/Field.php index a2ee643cbe3f9a5bd84c9a35ee996a610a7ac5b5..f5e6096c0e6c687804103b6178a78448dd71c5f4 100644 --- a/civicrm/CRM/Custom/Form/Field.php +++ b/civicrm/CRM/Custom/Form/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -540,11 +538,7 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { ); // is searchable by range? - $searchRange = []; - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('Yes'), '1'); - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('No'), '0'); - - $this->addGroup($searchRange, 'is_search_range', ts('Search by Range?')); + $this->addRadio('is_search_range', ts('Search by Range?'), [ts('No'), ts('Yes')]); // add buttons $this->addButtons([ diff --git a/civicrm/CRM/Custom/Form/Group.php b/civicrm/CRM/Custom/Form/Group.php index dc8836b7037dc91664d16b4ac92c9384b994ddcc..0c37d9037416f3bc3158bc17170bd53eab0d8013 100644 --- a/civicrm/CRM/Custom/Form/Group.php +++ b/civicrm/CRM/Custom/Form/Group.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/MoveField.php b/civicrm/CRM/Custom/Form/MoveField.php index e88a9854dc7ad7e141f2c0b4f67218987aa685a0..3156bb15adf5e02759a9453361ae395d829aab7d 100644 --- a/civicrm/CRM/Custom/Form/MoveField.php +++ b/civicrm/CRM/Custom/Form/MoveField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/Option.php b/civicrm/CRM/Custom/Form/Option.php index 004e1d51a335a5dbfd54e88024c879661fea435f..3bb6a5fb6c0430adc52370d250a4143bfe58cf5d 100644 --- a/civicrm/CRM/Custom/Form/Option.php +++ b/civicrm/CRM/Custom/Form/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/Preview.php b/civicrm/CRM/Custom/Form/Preview.php index e8a6a08dfc62661bb17363eb175578f79c07cad6..102712d94d0d87a49d8f44c4885e6a67c5a7ab5a 100644 --- a/civicrm/CRM/Custom/Form/Preview.php +++ b/civicrm/CRM/Custom/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Import/Form/DataSource.php b/civicrm/CRM/Custom/Import/Form/DataSource.php index b7c9a6df0a8d32c366fc38ea4c7611b00c571bc5..751969385c3174046e9a07ecf856487ac16e96d5 100644 --- a/civicrm/CRM/Custom/Import/Form/DataSource.php +++ b/civicrm/CRM/Custom/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Import/Parser.php b/civicrm/CRM/Custom/Import/Parser.php index c71018bb7956225ce9e31237b2699556b4d26faa..bc934cb0c180029a8bb81dd258215efbafcbf616 100644 --- a/civicrm/CRM/Custom/Import/Parser.php +++ b/civicrm/CRM/Custom/Import/Parser.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ abstract class CRM_Custom_Import_Parser extends CRM_Contact_Import_Parser { diff --git a/civicrm/CRM/Custom/Page/AJAX.php b/civicrm/CRM/Custom/Page/AJAX.php index 3b56de1adba532c231219fb7f267d10eac3e79fa..78e2addf77b6b4af63b74b70dd7ef06447ff5e94 100644 --- a/civicrm/CRM/Custom/Page/AJAX.php +++ b/civicrm/CRM/Custom/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -93,7 +92,6 @@ class CRM_Custom_Page_AJAX { /** * Get list of Multi Record Fields. - * */ public static function getMultiRecordFieldList() { @@ -139,10 +137,6 @@ class CRM_Custom_Page_AJAX { $multiRecordFields['recordsTotal'] = $totalRecords; $multiRecordFields['recordsFiltered'] = $totalRecords; - if (!empty($_GET['is_unit_test'])) { - return $multiRecordFields; - } - CRM_Utils_JSON::output($multiRecordFields); } diff --git a/civicrm/CRM/Custom/Page/Field.php b/civicrm/CRM/Custom/Page/Field.php index d10a73dfa375fefea6e3a829ca2807702bbfb350..58c44f752546f667042048b895c473cd09e01fad 100644 --- a/civicrm/CRM/Custom/Page/Field.php +++ b/civicrm/CRM/Custom/Page/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Page/Group.php b/civicrm/CRM/Custom/Page/Group.php index d8a931e63dce2d7b5014ac9a35015df1b9e62ff7..65a6aac61752d969e55e5611fcce5076ba61ef6f 100644 --- a/civicrm/CRM/Custom/Page/Group.php +++ b/civicrm/CRM/Custom/Page/Group.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Page/Option.php b/civicrm/CRM/Custom/Page/Option.php index 7c409c7d780a265f9cad63ac04867f6e4af3e6bf..855ed99b9ea9032e5a8b3c0e6c7f5179f36b4024 100644 --- a/civicrm/CRM/Custom/Page/Option.php +++ b/civicrm/CRM/Custom/Page/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/Activity.php b/civicrm/CRM/Dashlet/Page/Activity.php index 8e05e0aa93fea0fd9ef23e7855467ca802b06db5..23083bbfe5594da723c35d79d26ea8bc94a96331 100644 --- a/civicrm/CRM/Dashlet/Page/Activity.php +++ b/civicrm/CRM/Dashlet/Page/Activity.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/Blog.php b/civicrm/CRM/Dashlet/Page/Blog.php index dd605811f951c233b3921a916d90deb435713997..6c8cd4e7ac95d37f17e1dc705a9344c053badcf7 100644 --- a/civicrm/CRM/Dashlet/Page/Blog.php +++ b/civicrm/CRM/Dashlet/Page/Blog.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/CaseDashboard.php b/civicrm/CRM/Dashlet/Page/CaseDashboard.php index 3428e2e447506848af2488e205deda48b1d8925b..3e309d1cc46c549e325d6e5776fa78697beb4bd3 100644 --- a/civicrm/CRM/Dashlet/Page/CaseDashboard.php +++ b/civicrm/CRM/Dashlet/Page/CaseDashboard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/GettingStarted.php b/civicrm/CRM/Dashlet/Page/GettingStarted.php index f09a490f7e86944eced5c847ce8ea63f7c8ef586..c032301c7aafeb3ec3e947c1c9b0627860a02a0b 100644 --- a/civicrm/CRM/Dashlet/Page/GettingStarted.php +++ b/civicrm/CRM/Dashlet/Page/GettingStarted.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/MyCases.php b/civicrm/CRM/Dashlet/Page/MyCases.php index 1b643ff72da8f9962e3981d270628f6249852dcb..7f336c9af648d13a219458b611b23d5f1f760afe 100644 --- a/civicrm/CRM/Dashlet/Page/MyCases.php +++ b/civicrm/CRM/Dashlet/Page/MyCases.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dedupe/BAO/Rule.php b/civicrm/CRM/Dedupe/BAO/Rule.php index ab58f123215aaedb7acd16605e1daa6fdabec3e4..0c40a52c58b61d03cf02092828c5e22065eeb1a5 100644 --- a/civicrm/CRM/Dedupe/BAO/Rule.php +++ b/civicrm/CRM/Dedupe/BAO/Rule.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -92,17 +90,6 @@ class CRM_Dedupe_BAO_Rule extends CRM_Dedupe_DAO_Rule { break; case 'civicrm_address': - $id = 'contact_id'; - $on[] = 't1.location_type_id = t2.location_type_id'; - $innerJoinClauses[] = 't1.location_type_id = t2.location_type_id'; - if (!empty($this->params['civicrm_address']['location_type_id'])) { - $locTypeId = CRM_Utils_Type::escape($this->params['civicrm_address']['location_type_id'], 'Integer', FALSE); - if ($locTypeId) { - $where[] = "t1.location_type_id = $locTypeId"; - } - } - break; - case 'civicrm_email': case 'civicrm_im': case 'civicrm_openid': diff --git a/civicrm/CRM/Dedupe/BAO/RuleGroup.php b/civicrm/CRM/Dedupe/BAO/RuleGroup.php index d18c6d5f825aed2fd7185fb3d8c4357f7f485433..5e1258e775311e520f7601362f1a25ea2c47addf 100644 --- a/civicrm/CRM/Dedupe/BAO/RuleGroup.php +++ b/civicrm/CRM/Dedupe/BAO/RuleGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dedupe/Finder.php b/civicrm/CRM/Dedupe/Finder.php index 97e8abcf51bc6aabd98ad945e0cb2b57a8a55ab3..52f6dc4a8172457ede58793f3f10417f4b935882 100644 --- a/civicrm/CRM/Dedupe/Finder.php +++ b/civicrm/CRM/Dedupe/Finder.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -252,7 +250,7 @@ class CRM_Dedupe_Finder { // the -digit to civicrm_address.location_type_id and -Primary to civicrm_address.is_primary foreach ($flat as $key => $value) { $matches = []; - if (preg_match('/(.*)-(Primary-[\d+])$|(.*)-(\d+|Primary)$/', $key, $matches)) { + if (preg_match('/(.*)-(Primary-[\d+])$|(.*)-(\d+-\d+)$|(.*)-(\d+|Primary)$/', $key, $matches)) { $return = array_values(array_filter($matches)); // make sure the first occurrence is kept, not the last $flat[$return[1]] = empty($flat[$return[1]]) ? $value : $flat[$return[1]]; diff --git a/civicrm/CRM/Dedupe/MergeHandler.php b/civicrm/CRM/Dedupe/MergeHandler.php index e48352cfd7e27eacfdfc2cf1db87aa3ea885b545..891bc96c90e1e8148d006f591a17510f25f85381 100644 --- a/civicrm/CRM/Dedupe/MergeHandler.php +++ b/civicrm/CRM/Dedupe/MergeHandler.php @@ -1,38 +1,21 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2020 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | - | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ /** - * - * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * * This class exists primarily for the purposes of supporting code clean up in the Merger class. * * It is expected to be fast-moving and calling it outside the refactoring work is not advised. + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing */ class CRM_Dedupe_MergeHandler { diff --git a/civicrm/CRM/Dedupe/Merger.php b/civicrm/CRM/Dedupe/Merger.php index 56d5d3473b1df63df8a7aaf9946c9a79e3b736e3..c4be7070d9bb2d20e3e660b608c1a09a3263c282 100644 --- a/civicrm/CRM/Dedupe/Merger.php +++ b/civicrm/CRM/Dedupe/Merger.php @@ -616,8 +616,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m * @throws \Civi\API\Exception\UnauthorizedException */ protected static function filterRowBasedCustomDataFromCustomTables(array &$cidRefs) { - $customTables = (array) CustomGroup::get() - ->setCheckPermissions(FALSE) + $customTables = (array) CustomGroup::get(FALSE) ->setSelect(['table_name']) ->addWhere('is_multiple', '=', 0) ->addWhere('extends', 'IN', array_merge(['Contact'], CRM_Contact_BAO_ContactType::contactTypes())) @@ -633,6 +632,30 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } } + /** + * Update the contact with the new parameters. + * + * This function is intended as an interim function, with the intent being + * an apiv4 call. + * + * The function was calling the rather-terrifying createProfileContact. I copied all + * that code into this function and then removed all the parts that have no effect in this scenario. + * + * @param int $contactID + * @param array $params + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception + * @throws \Civi\API\Exception\UnauthorizedException + */ + protected static function createContact($contactID, $params) { + // This parameter causes blank fields to be be emptied out. + // We can probably remove. + $params['updateBlankLocInfo'] = TRUE; + list($data) = CRM_Contact_BAO_Contact::formatProfileContactParams($params, [], $contactID); + CRM_Contact_BAO_Contact::create($data); + } + /** * Given a contact ID, will check if a record exists in given table. * @@ -930,7 +953,8 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m unset($dupePairs[$index]); continue; } - if (($result = self::dedupePair($dupes, $mode, $checkPermissions, $cacheKeyString)) === FALSE) { + CRM_Utils_Hook::merge('flip', $dupes, $dupes['dstID'], $dupes['srcID']); + if (($result = self::dedupePair((int) $dupes['dstID'], (int) $dupes['srcID'], $mode, $checkPermissions, $cacheKeyString)) === FALSE) { unset($dupePairs[$index]); continue; } @@ -1000,7 +1024,11 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } /** - * Compare 2 addresses to see if they are the same. + * Compare 2 addresses to see if they are the effectively the same. + * + * Being the same would mean same location type and any populated fields that describe the locationn match. + * + * Metadata fields such as is_primary, on_hold, manual_geocode may differ. * * @param array $mainAddress * @param array $comparisonAddress @@ -1020,6 +1048,39 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m return TRUE; } + /** + * Does the location array have valid data. + * + * While not UI-creatable some sites wind up with email or address rows with no actual email or address + * through non core-UI processes. + * + * @param array $location + * + * @return bool + */ + public static function locationHasData($location) { + return !empty(self::getLocationDataFields($location)); + } + + /** + * Get the location data from a location array, filtering out metadata. + * + * This returns data like street_address but not metadata like is_primary, on_hold etc. + * + * @param array $location + * + * @return mixed + */ + public static function getLocationDataFields($location) { + $keysToIgnore = array_merge(self::ignoredFields(), ['display', 'location_type_id']); + foreach ($location as $field => $value) { + if (in_array($field, $keysToIgnore, TRUE)) { + unset($location[$field]); + } + } + return $location; + } + /** * A function to build an array of information about location blocks that is * required when merging location fields @@ -1092,9 +1153,6 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m * * elements => An array of form elements for the merge UI * - * rel_table_elements => An array of form elements for the merge UI for - * entities related to the contact (eg: checkbox to move 'mailings') - * * rel_tables => Stores the tables that have related entities for the contact * for example mailings, groups * @@ -1124,7 +1182,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $compareFields = self::retrieveFields($main, $other); - $rows = $elements = $relTableElements = $migrationInfo = []; + $rows = $elements = $migrationInfo = []; foreach ($compareFields['contact'] as $field) { if ($field === 'contact_sub_type') { @@ -1181,7 +1239,6 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $mergeHandler = new CRM_Dedupe_MergeHandler((int) $mainId, (int) $otherId); $relTables = $mergeHandler->getTablesRelatedToTheMergePair(); foreach ($relTables as $name => $null) { - $relTableElements[] = ['checkbox', "move_$name"]; $migrationInfo["move_$name"] = 1; $relTables[$name]['main_url'] = str_replace('$cid', $mainId, $relTables[$name]['url']); @@ -1269,7 +1326,6 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $result = [ 'rows' => $rows, 'elements' => $elements, - 'rel_table_elements' => $relTableElements, 'rel_tables' => $relTables, 'main_details' => $main, 'other_details' => $other, @@ -1469,8 +1525,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m if (!isset($submitted['suffix_id']) && !empty($migrationInfo['main_details']['suffix_id'])) { $submitted['suffix_id'] = $migrationInfo['main_details']['suffix_id']; } - $null = []; - CRM_Contact_BAO_Contact::createProfileContact($submitted, $null, $mainId); + self::createContact($mainId, $submitted); } $transaction->commit(); CRM_Utils_Hook::post('merge', 'Contact', $mainId); @@ -1863,26 +1918,22 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m /** * Dedupe a pair of contacts. * - * @param array $dupes + * @param int $mainId Id of contact to keep. + * @param int $otherId Id of contact to delete. * @param string $mode * @param bool $checkPermissions * @param string $cacheKeyString * * @return bool|array + * @throws \API_Exception * @throws \CRM_Core_Exception + * @throws \CRM_Core_Exception_ResourceConflictException * @throws \CiviCRM_API3_Exception - * @throws \API_Exception + * @throws \Civi\API\Exception\UnauthorizedException */ - protected static function dedupePair($dupes, $mode = 'safe', $checkPermissions = TRUE, $cacheKeyString = NULL) { - CRM_Utils_Hook::merge('flip', $dupes, $dupes['dstID'], $dupes['srcID']); - $mainId = $dupes['dstID']; - $otherId = $dupes['srcID']; + protected static function dedupePair(int $mainId, int $otherId, $mode = 'safe', $checkPermissions = TRUE, $cacheKeyString = NULL) { $resultStats = []; - if (!$mainId || !$otherId) { - // return error - return FALSE; - } $migrationInfo = []; $conflicts = []; // Try to lock the contacts before we load the data as we don't want it changing under us. @@ -2145,13 +2196,19 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m // If it exists on the 'main' contact already, skip it. Otherwise // if the location type exists already, log a conflict. foreach ($migrationInfo['main_details']['location_blocks'][$fieldName] as $mainAddressKey => $mainAddressRecord) { + if (!self::locationHasData($mainAddressRecord)) { + // Go ahead & overwrite the main address - it has no data in it. + // if it is the primary address then pass that honour to the address that actually has data. + $migrationInfo['location_blocks'][$fieldName][$mainAddressKey]['set_other_primary'] = $mainAddressRecord['is_primary']; + continue; + } if (self::locationIsSame($addressRecord, $mainAddressRecord)) { unset($migrationInfo[$key]); - break; + continue; } - elseif ($addressRecordLocTypeId == $mainAddressRecord['location_type_id']) { + if ($addressRecordLocTypeId == $mainAddressRecord['location_type_id']) { $conflicts[$key] = NULL; - break; + continue; } } } diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php index d05b01176df3a5708800f61ecae73c57e1d70969..1f19c32f74b48ffa0907baad6f8910d97578b107 100644 --- a/civicrm/CRM/Event/BAO/Participant.php +++ b/civicrm/CRM/Event/BAO/Participant.php @@ -1769,7 +1769,7 @@ WHERE civicrm_participant.contact_id = {$contactID} AND /** * Delete participants of contact. * - * CRM-12155 + * @see https://issues.civicrm.org/jira/browse/CRM-12155 * * @param int $contactId * Contact id. @@ -1810,7 +1810,7 @@ WHERE civicrm_participant.contact_id = {$contactID} AND ]; // create activity with target contacts - $id = CRM_Core_Session::singleton()->getLoggedInContactID(); + $id = CRM_Core_Session::getLoggedInContactID(); if ($id) { $activityParams['source_contact_id'] = $id; $activityParams['target_contact_id'][] = $contactId; @@ -1877,19 +1877,15 @@ WHERE civicrm_participant.contact_id = {$contactID} AND * Evaluate whether a participant record is eligible for self-service transfer/cancellation. If so, * return additional participant/event details. * - * TODO: BAO-level functions shouldn't set a redirect, and it should be possible to return "false" to the - * calling function. The next refactor will add a fourth param $errors, which can be passed by reference - * from the calling function. Instead of redirecting, we will return the error. - * TODO: This function should always return FALSE when self-service has been disabled on an event. - * TODO: This function fails when the "hours until self-service" is greater than 24 or less than zero. + * TODO: This function fails when the "hours until self-service" is less than zero. * @param int $participantId * @param string $url * @param bool $isBackOffice */ - public static function getSelfServiceEligibility($participantId, $url, $isBackOffice) { + public static function getSelfServiceEligibility(int $participantId, string $url, bool $isBackOffice) : array { $optionGroupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'participant_role', 'id', 'name'); $query = " - SELECT cpst.name as status, cov.name as role, cp.fee_level, cp.fee_amount, cp.register_date, cp.status_id, ce.start_date, ce.title, cp.event_id + SELECT cpst.name as status, cov.name as role, cp.fee_level, cp.fee_amount, cp.register_date, cp.status_id, ce.start_date, ce.title, cp.event_id, ce.allow_selfcancelxfer FROM civicrm_participant cp LEFT JOIN civicrm_participant_status_type cpst ON cpst.id = cp.status_id LEFT JOIN civicrm_option_value cov ON cov.value = cp.role_id and cov.option_group_id = {$optionGroupId} @@ -1897,40 +1893,44 @@ WHERE civicrm_participant.contact_id = {$contactID} AND WHERE cp.id = {$participantId}"; $dao = CRM_Core_DAO::executeQuery($query); while ($dao->fetch()) { + $details['eligible'] = TRUE; $details['status'] = $dao->status; $details['role'] = $dao->role; $details['fee_level'] = trim($dao->fee_level, CRM_Core_DAO::VALUE_SEPARATOR); $details['fee_amount'] = $dao->fee_amount; $details['register_date'] = $dao->register_date; $details['event_start_date'] = $dao->start_date; + $details['allow_selfcancelxfer'] = $dao->allow_selfcancelxfer; $eventTitle = $dao->title; $eventId = $dao->event_id; } + if (!$details['allow_selfcancelxfer']) { + $details['eligible'] = FALSE; + $details['ineligible_message'] = ts('This event registration can not be transferred or cancelled. Contact the event organizer if you have questions.'); + return $details; + } //verify participant status is still Registered if ($details['status'] != 'Registered') { - $status = "You cannot transfer or cancel your registration for " . $eventTitle . ' as you are not currently registered for this event.'; - CRM_Core_Session::setStatus($status, ts('Sorry'), 'alert'); - CRM_Utils_System::redirect($url); + $details['eligible'] = FALSE; + $details['ineligible_message'] = "You cannot transfer or cancel your registration for " . $eventTitle . ' as you are not currently registered for this event.'; + return $details; } + // Determine if it's too late to self-service cancel/transfer. $query = "select start_date as start, selfcancelxfer_time as time from civicrm_event where id = " . $eventId; $dao = CRM_Core_DAO::executeQuery($query); while ($dao->fetch()) { $time_limit = $dao->time; $start_date = $dao->start; } - $start_time = new Datetime($start_date); $timenow = new Datetime(); - if (!$isBackOffice && !empty($start_time) && $start_time < $timenow) { - $status = ts('Registration for this event cannot be cancelled or transferred once the event has begun. Contact the event organizer if you have questions.'); - CRM_Core_Error::statusBounce($status, $url, ts('Sorry')); - } - if (!$isBackOffice && !empty($time_limit) && $time_limit > 0) { - $interval = $timenow->diff($start_time); - $days = $interval->format('%d'); - $hours = $interval->format('%h'); - if ($hours <= $time_limit && $days < 1) { - $status = ts("Registration for this event cannot be cancelled or transferred less than %1 hours prior to the event's start time. Contact the event organizer if you have questions.", [1 => $time_limit]); - CRM_Core_Error::statusBounce($status, $url, ts('Sorry')); + if (!$isBackOffice && !empty($time_limit)) { + $cancelHours = abs($time_limit); + $cancelInterval = new DateInterval("PT${cancelHours}H"); + $cancelInterval->invert = $time_limit < 0 ? 1 : 0; + $cancelDeadline = (new Datetime($start_date))->sub($cancelInterval); + if ($timenow > $cancelDeadline) { + $details['eligible'] = FALSE; + $details['ineligible_message'] = ts("Registration for this event cannot be cancelled or transferred less than %1 hours prior to the event's start time. Contact the event organizer if you have questions.", [1 => $time_limit]); } } return $details; diff --git a/civicrm/CRM/Event/BAO/ParticipantPayment.php b/civicrm/CRM/Event/BAO/ParticipantPayment.php index 754e146e4a8a179261494a6750ee9e9c5e639164..f8ed9a547649ed4da66fd63b145d82a1d6711dca 100644 --- a/civicrm/CRM/Event/BAO/ParticipantPayment.php +++ b/civicrm/CRM/Event/BAO/ParticipantPayment.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_BAO_ParticipantPayment extends CRM_Event_DAO_ParticipantPayment { diff --git a/civicrm/CRM/Event/BAO/ParticipantStatusType.php b/civicrm/CRM/Event/BAO/ParticipantStatusType.php index b0166dbff2f1960461afaa863a8d137257780fd8..9db56d820b5990a58bad5f385414165271fec124 100644 --- a/civicrm/CRM/Event/BAO/ParticipantStatusType.php +++ b/civicrm/CRM/Event/BAO/ParticipantStatusType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatusType { diff --git a/civicrm/CRM/Event/Badge.php b/civicrm/CRM/Event/Badge.php index 4600ff95d00e4fd588fb2cd643bf94c4ba00fa98..8e22a144f5ab59c96ef73e327ad90cb3510fb926 100644 --- a/civicrm/CRM/Event/Badge.php +++ b/civicrm/CRM/Event/Badge.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | - | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ @@ -33,8 +19,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/Location.php b/civicrm/CRM/Event/Form/ManageEvent/Location.php index 5691fa279854789680bd6ef43eb17bf3bd79afa7..61145c3d560b00b514168e2afa1773dbe23726a4 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Location.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Location.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php b/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php index 20e383b22fa2eeece3ed95162172d136a2a44d8d..36b4619f513f55e0e221af7c9df00535935e3e0f 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php +++ b/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php index 6c8b5cbbc2263f7dd47a747450530ae862120d24..ebfba8f0dc39c1fdaca1e36f4bb13e64cf30dcd7 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php +++ b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -85,6 +83,7 @@ class CRM_Event_Form_ManageEvent_TabHeader { unset($tabs['repeat']['class']); } + // @todo Move to eventcart extension // check if we're in shopping cart mode for events if (!(bool) Civi::settings()->get('enable_cart')) { unset($tabs['conference']); diff --git a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php index 9cfa7ce2dab286f30449d8e84dca03e2ecd37c89..876da092c258951cbbb5bfb0535450c6bb8b6214 100644 --- a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php +++ b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ParticipantView.php b/civicrm/CRM/Event/Form/ParticipantView.php index efe72c2e7872038e7fac9537f044006d1a42906f..1d4f0bd454ecfffa228ae968b35808052e03f0dc 100644 --- a/civicrm/CRM/Event/Form/ParticipantView.php +++ b/civicrm/CRM/Event/Form/ParticipantView.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php b/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php index 4a4b95b5c0c58a1bc2daba483157f3b048b1cb72..bf8a79203d6982540f1232c563bfe1c7f899fb8a 100644 --- a/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php +++ b/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -23,10 +21,11 @@ * */ class CRM_Event_Form_Registration_ParticipantConfirm extends CRM_Event_Form_Registration { - // optional credit card return status code + /** - * CRM-6060 + * Optional credit card return status code * @var string + * @see https://issues.civicrm.org/jira/browse/CRM-6060 */ protected $_cc = NULL; diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php index 80e3f7c72f951260a7c18c77f41c358d62bf9383..e44c213172e634a4e817eb5e348849d1e915880a 100644 --- a/civicrm/CRM/Event/Form/Registration/Register.php +++ b/civicrm/CRM/Event/Form/Registration/Register.php @@ -45,9 +45,9 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { * Skip duplicate check. * * This can be set using hook_civicrm_buildForm() to override the registration dupe check. - * CRM-7604 * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-7604 */ public $_skipDupeRegistrationCheck = FALSE; @@ -629,6 +629,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } } } + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $form->_priceSetId; $form->assign('priceSet', $form->_priceSet); } else { diff --git a/civicrm/CRM/Event/Form/Registration/ThankYou.php b/civicrm/CRM/Event/Form/Registration/ThankYou.php index 4f9898b540065ff07aff5cfb1a5d8678f0ea0d0d..12dbd1abfaaccfc83af16694d1c98abb05d4bcf7 100644 --- a/civicrm/CRM/Event/Form/Registration/ThankYou.php +++ b/civicrm/CRM/Event/Form/Registration/ThankYou.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Search.php b/civicrm/CRM/Event/Form/Search.php index 8cb0c341218d031218ba5870779f6b31dbd7f668..30001106871355690a3bc30630499c7825466323 100644 --- a/civicrm/CRM/Event/Form/Search.php +++ b/civicrm/CRM/Event/Form/Search.php @@ -285,8 +285,6 @@ class CRM_Event_Form_Search extends CRM_Core_Form_Search { $this->_formValues["participant_test"] = 0; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, ['event_id']); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Event/Form/SearchEvent.php b/civicrm/CRM/Event/Form/SearchEvent.php index 31f0951192a14a9e7db72b9fb1f48859a3ad54f5..269eeb36507f56d3d4bdfbd2cec13de47c0cd533 100644 --- a/civicrm/CRM/Event/Form/SearchEvent.php +++ b/civicrm/CRM/Event/Form/SearchEvent.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Form_SearchEvent extends CRM_Core_Form { diff --git a/civicrm/CRM/Event/Form/SelfSvcTransfer.php b/civicrm/CRM/Event/Form/SelfSvcTransfer.php index 5d72f2aaa34e02be3e7fc568179372c36fdb8f42..1d5ac36d72101f2f6ed0a37b0db4ec2f93f52984 100644 --- a/civicrm/CRM/Event/Form/SelfSvcTransfer.php +++ b/civicrm/CRM/Event/Form/SelfSvcTransfer.php @@ -137,7 +137,7 @@ class CRM_Event_Form_SelfSvcTransfer extends CRM_Core_Form { $this->_userContext = $session->readUserContext(); $this->_from_participant_id = CRM_Utils_Request::retrieve('pid', 'Positive', $this, FALSE, NULL, 'REQUEST'); $this->_userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this, FALSE, NULL, 'REQUEST'); - $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, NULL, 'REQUEST'); + $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, NULL, 'REQUEST') ?? FALSE; $params = ['id' => $this->_from_participant_id]; $participant = $values = []; $this->_participant = CRM_Event_BAO_Participant::getValues($params, $values, $participant); @@ -165,6 +165,9 @@ class CRM_Event_Form_SelfSvcTransfer extends CRM_Core_Form { $details = CRM_Event_BAO_Participant::participantDetails($this->_from_participant_id); $selfServiceDetails = CRM_Event_BAO_Participant::getSelfServiceEligibility($this->_from_participant_id, $url, $this->isBackoffice); + if (!$selfServiceDetails['eligible']) { + CRM_Core_Error::statusBounce($selfServiceDetails['ineligible_message'], $url, ts('Sorry')); + } $details = array_merge($details, $selfServiceDetails); $this->assign('details', $details); //This participant row will be cancelled. Get line item(s) to cancel diff --git a/civicrm/CRM/Event/Form/SelfSvcUpdate.php b/civicrm/CRM/Event/Form/SelfSvcUpdate.php index 33b9f7f3f87853a0893000e80b1d61ed736e7d97..a87d7aff27c305acd112bbd447e431a5f34a8112 100644 --- a/civicrm/CRM/Event/Form/SelfSvcUpdate.php +++ b/civicrm/CRM/Event/Form/SelfSvcUpdate.php @@ -110,7 +110,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { $participant = $values = []; $this->_participant_id = CRM_Utils_Request::retrieve('pid', 'Positive', $this, FALSE, NULL, 'REQUEST'); $this->_userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this, FALSE, NULL, 'REQUEST'); - $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, NULL, 'REQUEST'); + $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, FALSE, 'REQUEST') ?? FALSE; $params = ['id' => $this->_participant_id]; $this->_participant = CRM_Event_BAO_Participant::getValues($params, $values, $participant); $this->_part_values = $values[$this->_participant_id]; @@ -140,6 +140,9 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { $contributionId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_participant_id, 'contribution_id', 'participant_id'); $this->assign('contributionId', $contributionId); $selfServiceDetails = CRM_Event_BAO_Participant::getSelfServiceEligibility($this->_participant_id, $url, $this->isBackoffice); + if (!$selfServiceDetails['eligible']) { + CRM_Core_Error::statusBounce($selfServiceDetails['ineligible_message'], $url, ts('Sorry')); + } $details = array_merge($details, $selfServiceDetails); $this->assign('details', $details); $this->selfsvcupdateUrl = CRM_Utils_System::url('civicrm/event/selfsvcupdate', "reset=1&id={$this->_participant_id}&id=0"); diff --git a/civicrm/CRM/Event/Form/Task.php b/civicrm/CRM/Event/Form/Task.php index 62773152d9be81b9494e429ed4d214288e638f4f..18962108a61cfc379596c8c0077e2ff1fb4f962d 100644 --- a/civicrm/CRM/Event/Form/Task.php +++ b/civicrm/CRM/Event/Form/Task.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/AddToGroup.php b/civicrm/CRM/Event/Form/Task/AddToGroup.php index 87c47c3fa6ee02f9cc060dd715fa05e30a402b12..11a7f3fca7f58e778123f4d5356881d47d47498b 100644 --- a/civicrm/CRM/Event/Form/Task/AddToGroup.php +++ b/civicrm/CRM/Event/Form/Task/AddToGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Cancel.php b/civicrm/CRM/Event/Form/Task/Cancel.php index d52e55bf93732444e3acf89dc5cb9c10a829bde7..71a29f9d893e819bbfe4fd12921e84721606f047 100644 --- a/civicrm/CRM/Event/Form/Task/Cancel.php +++ b/civicrm/CRM/Event/Form/Task/Cancel.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Delete.php b/civicrm/CRM/Event/Form/Task/Delete.php index d84c977c2f8023bda47511eaea1fa0cedac66d69..a1df319e1bdbbbfa35ebc9288723039e0f5aacb2 100644 --- a/civicrm/CRM/Event/Form/Task/Delete.php +++ b/civicrm/CRM/Event/Form/Task/Delete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/ParticipantStatus.php b/civicrm/CRM/Event/Form/Task/ParticipantStatus.php index 9d16a25cd2d82c8338ccfc63239d28cd1715a665..5c54e6f7820aa9cba5846031ee49bc9d8028c1f3 100644 --- a/civicrm/CRM/Event/Form/Task/ParticipantStatus.php +++ b/civicrm/CRM/Event/Form/Task/ParticipantStatus.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Form_Task_ParticipantStatus extends CRM_Event_Form_Task_Batch { diff --git a/civicrm/CRM/Event/Form/Task/PickProfile.php b/civicrm/CRM/Event/Form/Task/PickProfile.php index 00d4012d9498113ba33e58b54a6a5a0f87f21b79..d120f81b5fd1764721364ddf41101ffcd3d0ddd7 100644 --- a/civicrm/CRM/Event/Form/Task/PickProfile.php +++ b/civicrm/CRM/Event/Form/Task/PickProfile.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Print.php b/civicrm/CRM/Event/Form/Task/Print.php index 207528c5d011b7f790b0621403f69012b4ac0c73..c64e92f9b1f589eed783bfdfbbc9283fca84806c 100644 --- a/civicrm/CRM/Event/Form/Task/Print.php +++ b/civicrm/CRM/Event/Form/Task/Print.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Result.php b/civicrm/CRM/Event/Form/Task/Result.php index a3a5ea00fb5e39f94272eb72ed949dc02c2f68fc..8c692686a1577ccb7b3a57761c6ee594f91b1cec 100644 --- a/civicrm/CRM/Event/Form/Task/Result.php +++ b/civicrm/CRM/Event/Form/Task/Result.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/SaveSearch.php b/civicrm/CRM/Event/Form/Task/SaveSearch.php index 6f32217a7f1264c1e09842fc3ee26a828b015d8c..32f54f67f2f0207432a6e6598ffbc821c9ebf622 100644 --- a/civicrm/CRM/Event/Form/Task/SaveSearch.php +++ b/civicrm/CRM/Event/Form/Task/SaveSearch.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php b/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php index f61fc194db1419c5026cfe23a90b90ac22a22040..4cb6e006f337cce23263c6cedeb9321f3b839dd1 100644 --- a/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php +++ b/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php b/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php index 43d5e6bc730f2424e2a0dd68e45611691cfeb5e5..efc940e57437ebd083af69f2426cad692df59a9e 100644 --- a/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php +++ b/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Controller.php b/civicrm/CRM/Event/Import/Controller.php index 57daa15a0bc0098348a3feb5e68a231c0620dda8..baf5521a8893394eebfbc4a539769182315049e2 100644 --- a/civicrm/CRM/Event/Import/Controller.php +++ b/civicrm/CRM/Event/Import/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Import_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Event/Import/Form/DataSource.php b/civicrm/CRM/Event/Import/Form/DataSource.php index 78b246feea4734f0062a7c7c5fce28fbc0425679..c97c9d7fdbe9f080b5c38cf6666251de15648b18 100644 --- a/civicrm/CRM/Event/Import/Form/DataSource.php +++ b/civicrm/CRM/Event/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -35,19 +33,11 @@ class CRM_Event_Import_Form_DataSource extends CRM_Import_Form_DataSource { parent::buildQuickForm(); $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Skip'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('No Duplicate Checking'), CRM_Import_Parser::DUPLICATE_NOCHECK - ); - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('On Duplicate Entries') - ); - + $this->addRadio('onDuplicate', ts('On Duplicate Entries'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Skip'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update'), + CRM_Import_Parser::DUPLICATE_NOCHECK => ts('No Duplicate Checking'), + ]); $this->setDefaults(['onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP]); $this->addContactTypeSelector(); diff --git a/civicrm/CRM/Event/Import/Form/MapField.php b/civicrm/CRM/Event/Import/Form/MapField.php index f208534d4a304ffb8e8996172c7095f6b3586aa2..8182aa80db4bb7f8f5eb28d91733d3669fd84535 100644 --- a/civicrm/CRM/Event/Import/Form/MapField.php +++ b/civicrm/CRM/Event/Import/Form/MapField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Form/Preview.php b/civicrm/CRM/Event/Import/Form/Preview.php index 71ac2a1719bfa80f773715da0cffda6d6ad5865a..0a7e5ca96d576c7125f519722d8b0d7a5c74ef63 100644 --- a/civicrm/CRM/Event/Import/Form/Preview.php +++ b/civicrm/CRM/Event/Import/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Form/Summary.php b/civicrm/CRM/Event/Import/Form/Summary.php index 917c69c0b84d71e4d9689b288e672904b8861e39..42beb0d37649911c4ab9d082a5c426b80a356845 100644 --- a/civicrm/CRM/Event/Import/Form/Summary.php +++ b/civicrm/CRM/Event/Import/Form/Summary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Parser.php b/civicrm/CRM/Event/Import/Parser.php index c1ec6a7989631010b30cb138f123719f31d63d09..46e74961b971afc785211f7b57e85d69b0160e2d 100644 --- a/civicrm/CRM/Event/Import/Parser.php +++ b/civicrm/CRM/Event/Import/Parser.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ abstract class CRM_Event_Import_Parser extends CRM_Import_Parser { diff --git a/civicrm/CRM/Event/Import/Parser/Participant.php b/civicrm/CRM/Event/Import/Parser/Participant.php index bb1703c83544aaf696679a4e1a810efa03853864..5ed2fecfbc0bfa89a6a4d7fe6dae0afbe152b6b0 100644 --- a/civicrm/CRM/Event/Import/Parser/Participant.php +++ b/civicrm/CRM/Event/Import/Parser/Participant.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ require_once 'CRM/Utils/DeprecatedUtils.php'; diff --git a/civicrm/CRM/Event/Info.php b/civicrm/CRM/Event/Info.php index 6cc453aa20dd8939739f3d240ad64a631f322c89..a468dc51639eca531f41ea6231390cb594f26da8 100644 --- a/civicrm/CRM/Event/Info.php +++ b/civicrm/CRM/Event/Info.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Event/Page/AJAX.php b/civicrm/CRM/Event/Page/AJAX.php index 6d68ed6725218b50ce10e5e043a3679c3f78e988..6de769094745def203e7d71ae8afd38263893245 100644 --- a/civicrm/CRM/Event/Page/AJAX.php +++ b/civicrm/CRM/Event/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index 265b3f5dfeb81ab09a04d8351c591a2fb6fcccdc..83671166ab2e879ac65caf04c91c6bbbef4e50c2 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -272,21 +272,11 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { $registerText = $values['event']['registration_link_text']; } - // check if we're in shopping cart mode for events - $enable_cart = Civi::settings()->get('enable_cart'); - if ($enable_cart) { - $link = CRM_Event_Cart_BAO_EventInCart::get_registration_link($this->_id); - $registerText = $link['label']; - - $url = CRM_Utils_System::url($link['path'], $link['query'] . $action_query, FALSE, NULL, TRUE, TRUE); - } - //Fixed for CRM-4855 $allowRegistration = CRM_Event_BAO_Event::showHideRegistrationLink($values); $this->assign('registerText', $registerText); $this->assign('registerURL', $url); - $this->assign('eventCartEnabled', $enable_cart); } } elseif (CRM_Core_Permission::check('register for events')) { diff --git a/civicrm/CRM/Event/Page/List.php b/civicrm/CRM/Event/Page/List.php index e3f4a086180bc22ffd3c032b68cdc18e975f784f..ffeae8ba922a164e48399784ba0b87aede1fb4e6 100644 --- a/civicrm/CRM/Event/Page/List.php +++ b/civicrm/CRM/Event/Page/List.php @@ -23,13 +23,12 @@ class CRM_Event_Page_List extends CRM_Core_Page { $info = CRM_Event_BAO_Event::getCompleteInfo($start, $type, $id, $end); $this->assign('events', $info); + // @todo Move this to eventcart extension // check if we're in shopping cart mode for events - $enable_cart = (bool) Civi::settings()->get('enable_cart'); - $this->assign('eventCartEnabled', $enable_cart); - - if ($enable_cart) { + if ((bool) Civi::settings()->get('enable_cart')) { $this->assign('registration_links', TRUE); } + return parent::run(); } diff --git a/civicrm/CRM/Event/Page/ManageEvent.php b/civicrm/CRM/Event/Page/ManageEvent.php index bc7badd236d30c9614641857e90209c9a0cbcc96..08dc44dfbba45c68d38820beb6b7a10b629fa524 100644 --- a/civicrm/CRM/Event/Page/ManageEvent.php +++ b/civicrm/CRM/Event/Page/ManageEvent.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -125,13 +123,15 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { /** * Get tab Links for events. * - * @param $enableCart - * * @return array * (reference) of tab links + * @throws \CiviCRM_API3_Exception */ public static function &tabs() { - $enableCart = Civi::settings()->get('enable_cart'); + // @todo Move to eventcart extension + // check if we're in shopping cart mode for events + $enableCart = (bool) Civi::settings()->get('enable_cart'); + $cacheKey = $enableCart ? 1 : 0; if (!(self::$_tabLinks)) { self::$_tabLinks = []; @@ -342,9 +342,6 @@ ORDER BY start_date desc while ($pcpDao->fetch()) { $eventPCPS[$pcpDao->entity_id] = $pcpDao->entity_id; } - // check if we're in shopping cart mode for events - $enableCart = Civi::settings()->get('enable_cart'); - $this->assign('eventCartEnabled', $enableCart); $mapping = CRM_Utils_Array::first(CRM_Core_BAO_ActionSchedule::getMappings([ 'id' => CRM_Event_ActionMapping::EVENT_NAME_MAPPING_ID, ])); @@ -428,7 +425,7 @@ ORDER BY start_date desc } } - $manageEvent['tab'] = self::tabs($enableCart); + $manageEvent['tab'] = self::tabs(); $this->assign('rows', $manageEvent); $statusTypes = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1', 'label'); diff --git a/civicrm/CRM/Event/Page/ParticipantListing.php b/civicrm/CRM/Event/Page/ParticipantListing.php index 6c5ddf07c5e22e98e551402c373208ebb25473c4..6d58554a3724339aef5a7135a86ee7a0492dcd7c 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing.php +++ b/civicrm/CRM/Event/Page/ParticipantListing.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/Name.php b/civicrm/CRM/Event/Page/ParticipantListing/Name.php index f40bf1d9d9877b99615dd923be8a5246271d61b8..1792d2efeef2e543fa751a6b68eb85b09faaa2db 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/Name.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/Name.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_Name extends CRM_Event_Page_ParticipantListing_Simple { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php b/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php index aed4bf5231c4cd8e67b87476a09196104bb60362..c1c1f9838fce4c7e212c76e26bf3d1e92492fe90 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_NameAndEmail extends CRM_Event_Page_ParticipantListing_Simple { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php b/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php index 8277180b5243afa47be7f6f8fe91bf1c0e127547..43b5aff703a7c2fdf149ac6a7f5ca0553b81c85b 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_NameStatusAndDate extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/Simple.php b/civicrm/CRM/Event/Page/ParticipantListing/Simple.php index 1341eb834b8b919335f32b07ef27e1815f4844f5..58368dce2e411329b5f9957ee06619d636bc64a3 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/Simple.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/Simple.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_Simple extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/Tab.php b/civicrm/CRM/Event/Page/Tab.php index c9d1836026392ddd26e5579bd6b19a3022868939..ab29c9ce35770ccf84dc786eea3c438ca0418a91 100644 --- a/civicrm/CRM/Event/Page/Tab.php +++ b/civicrm/CRM/Event/Page/Tab.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_Tab extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/UserDashboard.php b/civicrm/CRM/Event/Page/UserDashboard.php index 0505d610ceb49b2a7e5a333c80942840e396f8ca..39097caa463dcb73d461a60027fa6cb21c6b52d1 100644 --- a/civicrm/CRM/Event/Page/UserDashboard.php +++ b/civicrm/CRM/Event/Page/UserDashboard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/PseudoConstant.php b/civicrm/CRM/Event/PseudoConstant.php index d99496720c849571fe0c1388b267738af71cdc75..2ff32e629e23f4de7b735e756f9d7350b3f38fd5 100644 --- a/civicrm/CRM/Event/PseudoConstant.php +++ b/civicrm/CRM/Event/PseudoConstant.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Selector/Search.php b/civicrm/CRM/Event/Selector/Search.php index adbc83513fcb6b9a4aed1aae85ec440ff14bf21f..fdcaf58df144387b18a3c88e405c4ac36948dc73 100644 --- a/civicrm/CRM/Event/Selector/Search.php +++ b/civicrm/CRM/Event/Selector/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Task.php b/civicrm/CRM/Event/Task.php index 6d54227016157d6cb8f1a2c53964c94ab90f230d..24e2bd6b2620255c8ffebe1d5e78dda09b0ee3c5 100644 --- a/civicrm/CRM/Event/Task.php +++ b/civicrm/CRM/Event/Task.php @@ -12,7 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Event/xml/Menu/Event.xml b/civicrm/CRM/Event/xml/Menu/Event.xml index fda18a1b9221b9bc9f53bbbc4185824fb539e9f9..105ef9c08732e79e6b8bfd2db47352ea221047c6 100644 --- a/civicrm/CRM/Event/xml/Menu/Event.xml +++ b/civicrm/CRM/Event/xml/Menu/Event.xml @@ -128,13 +128,13 @@ <weight>399</weight> </item> <item> - <path>civicrm/admin/options/conference_slot</path> - <title>Conference Slot Labels</title> - <page_callback>CRM_Admin_Page_Options</page_callback> - <desc>Define conference slots and labels.</desc> - <access_arguments>administer CiviCRM,access CiviEvent</access_arguments> - <adminGroup>CiviEvent</adminGroup> - <weight>415</weight> + <path>civicrm/admin/options/conference_slot</path> + <title>Conference Slot Labels</title> + <page_callback>CRM_Admin_Page_Options</page_callback> + <desc>Define conference slots and labels.</desc> + <access_arguments>administer CiviCRM,access CiviEvent</access_arguments> + <adminGroup>CiviEvent</adminGroup> + <weight>415</weight> </item> <item> <path>civicrm/admin/setting/preferences/event</path> @@ -225,12 +225,12 @@ <weight>960</weight> </item> <item> - <path>civicrm/event/manage/conference</path> - <title>Conference Slots</title> - <page_callback>CRM_Event_Form_ManageEvent_Conference</page_callback> - <access_arguments>access CiviEvent</access_arguments> - <is_ssl>true</is_ssl> - <weight>950</weight> + <path>civicrm/event/manage/conference</path> + <title>Conference Slots</title> + <page_callback>CRM_Event_Form_ManageEvent_Conference</page_callback> + <access_arguments>access CiviEvent</access_arguments> + <is_ssl>true</is_ssl> + <weight>950</weight> </item> <item> <path>civicrm/event/add</path> @@ -297,50 +297,6 @@ <page_callback>CRM_Core_Page_AJAX_Location::getLocBlock</page_callback> <access_arguments>access CiviEvent</access_arguments> </item> - <item> - <path>civicrm/ajax/event/add_participant_to_cart</path> - <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::add_participant_to_cart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - </item> - <item> - <path>civicrm/ajax/event/remove_participant_from_cart</path> - <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::remove_participant_from_cart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - </item> - <item> - <path>civicrm/event/add_to_cart</path> - <title>Add Event To Cart</title> - <page_callback>CRM_Event_Cart_Page_AddToCart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>false</is_ssl> - </item> - <item> - <path>civicrm/event/cart_checkout</path> - <title>Cart Checkout</title> - <page_callback>CRM_Event_Cart_Controller_Checkout</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>true</is_ssl> - </item> - <item> - <path>civicrm/event/remove_from_cart</path> - <title>Remove From Cart</title> - <page_callback>CRM_Event_Cart_Page_RemoveFromCart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>false</is_ssl> - </item> - <item> - <path>civicrm/event/view_cart</path> - <title>View Cart</title> - <page_callback>CRM_Event_Cart_Page_ViewCart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>false</is_ssl> - </item> <item> <path>civicrm/event/participant/feeselection</path> <title>Change Registration Selections</title> diff --git a/civicrm/CRM/Export/BAO/Export.php b/civicrm/CRM/Export/BAO/Export.php index 83e2fa5ba2c1ff95472ead42199669bbe68dab58..575aa9af24cd371605850266ca71f8e0ec607566 100644 --- a/civicrm/CRM/Export/BAO/Export.php +++ b/civicrm/CRM/Export/BAO/Export.php @@ -132,7 +132,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c $addPaymentHeader = FALSE; - list($outputColumns, $metadata) = $processor->getExportStructureArrays(); + list($outputColumns) = $processor->getExportStructureArrays(); if ($processor->isMergeSameAddress()) { foreach (array_keys($processor->getAdditionalFieldsForSameAddressMerge()) as $field) { @@ -185,7 +185,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c while ($iterationDAO->fetch()) { $count++; $rowsThisIteration++; - $row = $processor->buildRow($query, $iterationDAO, $outputColumns, $metadata, $paymentDetails, $addPaymentHeader); + $row = $processor->buildRow($query, $iterationDAO, $outputColumns, $paymentDetails, $addPaymentHeader); if ($row === FALSE) { continue; } diff --git a/civicrm/CRM/Export/BAO/ExportProcessor.php b/civicrm/CRM/Export/BAO/ExportProcessor.php index 03e64b31b2a0804ea6f26db1eae56ed4363051a5..1dc733d9fd534a65a9c23826f4612458fc15e9b9 100644 --- a/civicrm/CRM/Export/BAO/ExportProcessor.php +++ b/civicrm/CRM/Export/BAO/ExportProcessor.php @@ -781,7 +781,8 @@ class CRM_Export_BAO_ExportProcessor { $query = new CRM_Contact_BAO_Query($params, $returnProperties, NULL, FALSE, FALSE, $this->getQueryMode(), - FALSE, TRUE, TRUE, NULL, $this->getQueryOperator() + FALSE, TRUE, TRUE, NULL, $this->getQueryOperator(), + NULL, TRUE ); //sort by state @@ -869,8 +870,8 @@ class CRM_Export_BAO_ExportProcessor { // These oddly constructed keys are for legacy reasons. Altering them will affect test success // but in time it may be good to rationalise them. $label = $this->getOutputSpecificationLabel($key, $relationshipType, $locationType, $entityLabel); - $index = $this->getOutputSpecificationIndex($key, $relationshipType, $locationType, $entityLabel); - $fieldKey = $this->getOutputSpecificationFieldKey($key, $relationshipType, $locationType, $entityLabel); + $index = $this->getOutputSpecificationIndex($key, $relationshipType, $locationType, $entityTypeID); + $fieldKey = $this->getOutputSpecificationFieldKey($key, $relationshipType, $locationType, $entityTypeID); $this->outputSpecification[$index]['header'] = $label; $this->outputSpecification[$index]['sql_columns'] = $this->getSqlColumnDefinition($fieldKey, $key); @@ -960,13 +961,12 @@ class CRM_Export_BAO_ExportProcessor { * @param \CRM_Contact_BAO_Query $query * @param CRM_Core_DAO $iterationDAO * @param array $outputColumns - * @param $metadata * @param $paymentDetails * @param $addPaymentHeader * * @return array|bool */ - public function buildRow($query, $iterationDAO, $outputColumns, $metadata, $paymentDetails, $addPaymentHeader) { + public function buildRow($query, $iterationDAO, $outputColumns, $paymentDetails, $addPaymentHeader) { $paymentTableId = $this->getPaymentTableID(); if ($this->isHouseholdToSkip($iterationDAO->contact_id)) { return FALSE; @@ -1020,7 +1020,7 @@ class CRM_Export_BAO_ExportProcessor { $this->buildRelationshipFieldsForRow($row, $iterationDAO->contact_id, $value, $field); } else { - $row[$field] = $this->getTransformedFieldValue($field, $iterationDAO, $fieldValue, $metadata, $paymentDetails); + $row[$field] = $this->getTransformedFieldValue($field, $iterationDAO, $fieldValue, $paymentDetails); } } @@ -1082,12 +1082,13 @@ class CRM_Export_BAO_ExportProcessor { * @param $field * @param $iterationDAO * @param $fieldValue - * @param $metadata * @param $paymentDetails * * @return string + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - public function getTransformedFieldValue($field, $iterationDAO, $fieldValue, $metadata, $paymentDetails) { + public function getTransformedFieldValue($field, $iterationDAO, $fieldValue, $paymentDetails) { $i18n = CRM_Core_I18n::singleton(); if ($field == 'id') { @@ -1145,31 +1146,26 @@ class CRM_Export_BAO_ExportProcessor { return $i18n->crm_translate($fieldValue); default: - if (isset($metadata[$field])) { - // No I don't know why we do it this way & whether we could - // make better use of pseudoConstants. - if (!empty($metadata[$field]['context'])) { - return $i18n->crm_translate($fieldValue, $metadata[$field]); - } - if (!empty($metadata[$field]['pseudoconstant'])) { - if (!empty($metadata[$field]['bao'])) { - return CRM_Core_PseudoConstant::getLabel($metadata[$field]['bao'], $metadata[$field]['name'], $fieldValue); - } - // This is not our normal syntax for pseudoconstants but I am a bit loath to - // call an external function until sure it is not increasing php processing given this - // may be iterated 100,000 times & we already have the $imProvider var loaded. - // That can be next refactor... - // Yes - definitely feeling hatred for this bit of code - I know you will beat me up over it's awfulness - // but I have to reach a stable point.... - $varName = $metadata[$field]['pseudoconstant']['var']; - if ($varName === 'imProviders') { - return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $fieldValue); - } - if ($varName === 'phoneTypes') { - return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Phone', 'phone_type_id', $fieldValue); + $fieldSpec = $this->outputSpecification[$this->getMungedFieldName($field)]['metadata']; + // No I don't know why we do it this way & whether we could + // make better use of pseudoConstants. + if (!empty($fieldSpec['context'])) { + return $i18n->crm_translate($fieldValue, $fieldSpec); + } + if (!empty($fieldSpec['pseudoconstant']) && !empty($fieldSpec['hasLocationType'])) { + if (!empty($fieldSpec['bao'])) { + $transformedValue = CRM_Core_PseudoConstant::getLabel($fieldSpec['bao'], $fieldSpec['name'], $fieldValue); + if ($transformedValue) { + return $transformedValue; } + return $fieldValue; + } + // Yes - definitely feeling hatred for this bit of code - I know you will beat me up over it's awfulness + // but I have to reach a stable point.... + $varName = $fieldSpec['pseudoconstant']['var']; + if ($varName === 'imProviders') { + return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $fieldValue); } - } return $fieldValue; } @@ -1559,12 +1555,6 @@ class CRM_Export_BAO_ExportProcessor { * @return string */ protected function getOutputSpecificationIndex($key, $relationshipType, $locationType, $entityLabel) { - if ($entityLabel || $key === 'im') { - // Just cos that's the history... - if ($key !== 'master_id') { - $key = $this->getHeaderForRow($key); - } - } if (!$relationshipType || $key !== 'id') { $key = $this->getMungedFieldName($key); } @@ -1612,12 +1602,6 @@ class CRM_Export_BAO_ExportProcessor { * @return string */ protected function getOutputSpecificationFieldKey($key, $relationshipType, $locationType, $entityLabel) { - if ($entityLabel || $key === 'im') { - if ($key !== 'state_province' && $key !== 'id') { - // @todo - test removing this - indexing by $key should be fine... - $key = $this->getHeaderForRow($key); - } - } if (!$relationshipType || $key !== 'id') { $key = $this->getMungedFieldName($key); } @@ -1704,7 +1688,7 @@ class CRM_Export_BAO_ExportProcessor { * yet find a way to comment them for posterity. */ public function getExportStructureArrays() { - $outputColumns = $metadata = []; + $outputColumns = []; $queryFields = $this->getQueryFields(); foreach ($this->getReturnProperties() as $key => $value) { if (($key != 'location' || !is_array($value)) && !$this->isRelationshipTypeKey($key)) { @@ -1741,13 +1725,12 @@ class CRM_Export_BAO_ExportProcessor { $daoFieldName .= "-" . $type[1]; } $this->addOutputSpecification($actualDBFieldName, NULL, $locationType, CRM_Utils_Array::value(1, $type)); - $metadata[$daoFieldName] = $this->getMetaDataForField($actualDBFieldName); $outputColumns[$daoFieldName] = TRUE; } } } } - return [$outputColumns, $metadata]; + return [$outputColumns]; } /** @@ -2082,13 +2065,13 @@ WHERE id IN ( $deleteIDString ) */ public function getPreview($limit) { $rows = []; - list($outputColumns, $metadata) = $this->getExportStructureArrays(); + list($outputColumns) = $this->getExportStructureArrays(); $query = $this->runQuery([], ''); CRM_Core_DAO::disableFullGroupByMode(); $result = CRM_Core_DAO::executeQuery($query[1] . ' LIMIT ' . (int) $limit); CRM_Core_DAO::reenableFullGroupByMode(); while ($result->fetch()) { - $rows[] = $this->buildRow($query[0], $result, $outputColumns, $metadata, [], []); + $rows[] = $this->buildRow($query[0], $result, $outputColumns, [], []); } return $rows; } diff --git a/civicrm/CRM/Export/Form/Map.php b/civicrm/CRM/Export/Form/Map.php index 65ada5bc35e52a05a12a20f421a838d40ddb527b..a4f64d533f4d9acb364e53c5d80cae189edf6f0b 100644 --- a/civicrm/CRM/Export/Form/Map.php +++ b/civicrm/CRM/Export/Form/Map.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Export/Form/Select.php b/civicrm/CRM/Export/Form/Select.php index 04ac33617a642ec49dcabbcd458829a673fecf81..3570008e59782944381a96dcbe03ddc4d9c29db0 100644 --- a/civicrm/CRM/Export/Form/Select.php +++ b/civicrm/CRM/Export/Form/Select.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Extension/Manager/Report.php b/civicrm/CRM/Extension/Manager/Report.php index bd8b5d67a7477e42bd72a32bba535506aa84af01..da14a38b2129b8ec916f779442cd9a5861a3a7e5 100644 --- a/civicrm/CRM/Extension/Manager/Report.php +++ b/civicrm/CRM/Extension/Manager/Report.php @@ -24,7 +24,10 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base { */ public function __construct() { parent::__construct(TRUE); - $this->groupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', + } + + public function getGroupId() { + return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', self::REPORT_GROUP_NAME, 'id', 'name' ); } @@ -51,7 +54,7 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base { throw new CRM_Core_Exception(ts('Component for which you are trying to install the extension (%1) is currently disabled.', [1 => $info->typeInfo['component']])); } $weight = CRM_Utils_Weight::getDefaultWeight('CRM_Core_DAO_OptionValue', - ['option_group_id' => $this->groupId] + ['option_group_id' => $this->getGroupId()] ); $params = [ 'label' => $info->label . ' (' . $info->key . ')', @@ -60,7 +63,7 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base { 'weight' => $weight, 'description' => $info->label . ' (' . $info->key . ')', 'component_id' => $compId, - 'option_group_id' => $this->groupId, + 'option_group_id' => $this->getGroupId(), 'is_active' => 1, ]; diff --git a/civicrm/CRM/Extension/Manager/Search.php b/civicrm/CRM/Extension/Manager/Search.php index d498711f528b4c6d0da5c02e861b6be2a7de52d1..13ec3bca1eb42d1bfb7f5b7a9fbfc377d43f5e5c 100644 --- a/civicrm/CRM/Extension/Manager/Search.php +++ b/civicrm/CRM/Extension/Manager/Search.php @@ -24,7 +24,10 @@ class CRM_Extension_Manager_Search extends CRM_Extension_Manager_Base { */ public function __construct() { parent::__construct(TRUE); - $this->groupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', + } + + public function getGroupId() { + return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', self::CUSTOM_SEARCH_GROUP_NAME, 'id', 'name' ); } @@ -42,11 +45,11 @@ class CRM_Extension_Manager_Search extends CRM_Extension_Manager_Base { } $weight = CRM_Utils_Weight::getDefaultWeight('CRM_Core_DAO_OptionValue', - ['option_group_id' => $this->groupId] + ['option_group_id' => $this->getGroupId()] ); $params = [ - 'option_group_id' => $this->groupId, + 'option_group_id' => $this->getGroupId(), 'weight' => $weight, 'description' => $info->label . ' (' . $info->key . ')', 'name' => $info->key, diff --git a/civicrm/CRM/Financial/BAO/FinancialItem.php b/civicrm/CRM/Financial/BAO/FinancialItem.php index 317fb8dadb7a49756b58b090e800bcca5ba711fc..fb5dca3d165535d4c2da780dbf23f0dc8b049a3d 100644 --- a/civicrm/CRM/Financial/BAO/FinancialItem.php +++ b/civicrm/CRM/Financial/BAO/FinancialItem.php @@ -221,7 +221,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { /** * Check if contact is present in financial_item table. * - * CRM-12929 + * @see https://issues.civicrm.org/jira/browse/CRM-12929 * * @param array $contactIds * An array contact id's. diff --git a/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php b/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php index 87ff4c19ac9f47924ff65d28dab3ebef1c2a284e..f7cb9652cb99e3e8b178719c7cf64d4e0f9a5bcd 100644 --- a/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php +++ b/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php @@ -164,7 +164,7 @@ class CRM_Financial_BAO_FinancialTypeAccount extends CRM_Financial_DAO_EntityFin /** * Create default entity financial accounts * for financial type - * CRM-12470 + * @see https://issues.civicrm.org/jira/browse/CRM-12470 * * @param $financialType * @@ -190,7 +190,7 @@ class CRM_Financial_BAO_FinancialTypeAccount extends CRM_Financial_DAO_EntityFin if (!$dao->N) { $params = [ 'name' => $financialType->name, - 'contact_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'contact_id'), + 'contact_id' => CRM_Core_BAO_Domain::getDomain()->contact_id, 'financial_account_type_id' => array_search('Revenue', $financialAccountTypeID), 'description' => $financialType->description, 'account_type_code' => 'INC', diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php index b7f9b834e00cc73052e628fde70a97c7562b9526..43fa9cd2d72a7c81950994a9eee0865686cf614e 100644 --- a/civicrm/CRM/Financial/BAO/Order.php +++ b/civicrm/CRM/Financial/BAO/Order.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Order class. * * This class is intended to become the object to manage orders, including via Order.api. diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php index 1101aab35ed3d9242f0cdaf1f536e5eebf9397a9..f841363f141ff6c8979f67f86e37fb8a99146c80 100644 --- a/civicrm/CRM/Financial/BAO/Payment.php +++ b/civicrm/CRM/Financial/BAO/Payment.php @@ -79,6 +79,21 @@ class CRM_Financial_BAO_Payment { $paymentTrxnParams['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Refunded'); } + //If Payment is recorded on Failed contribution, update it to Pending. + if ($contributionStatus === 'Failed' && $params['total_amount'] > 0) { + //Enter a financial trxn to record a payment in receivable account + //as failed transaction does not insert any trxn values. Hence, if Payment is + //recorded on a failed contribution, the transition happens from Failed -> Pending -> Completed. + $ftParams = array_merge($paymentTrxnParams, [ + 'from_financial_account_id' => NULL, + 'to_financial_account_id' => $accountsReceivableAccount, + 'is_payment' => 0, + 'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'), + ]); + CRM_Core_BAO_FinancialTrxn::create($ftParams); + $contributionStatus = 'Pending'; + self::updateContributionStatus($contribution['id'], $contributionStatus); + } $trxn = CRM_Core_BAO_FinancialTrxn::create($paymentTrxnParams); if ($params['total_amount'] < 0 && !empty($params['cancelled_payment_id'])) { diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessor.php b/civicrm/CRM/Financial/BAO/PaymentProcessor.php index ed37743c5ab4fb746e0b9e90a52ba28fc4208435..a24cde25ea7403ca6e5babfc52aa1cf04dc73deb 100644 --- a/civicrm/CRM/Financial/BAO/PaymentProcessor.php +++ b/civicrm/CRM/Financial/BAO/PaymentProcessor.php @@ -278,11 +278,13 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * @param bool $reset * @param bool $isCurrentDomainOnly * Do we only want to load payment processors associated with the current domain. + * @param bool|NULL $isActive + * Do we only want active processors, only inactive (FALSE) or all processors (NULL) * * @throws CiviCRM_API3_Exception * @return array */ - public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $isCurrentDomainOnly = TRUE) { + public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $isCurrentDomainOnly = TRUE, $isActive = TRUE) { $cacheKey = 'CRM_Financial_BAO_Payment_Processor_' . $mode . '_' . $isCurrentDomainOnly . '_' . CRM_Core_Config::domainID(); if (!$reset) { @@ -293,10 +295,13 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces } $retrievalParameters = [ - 'is_active' => TRUE, 'options' => ['sort' => 'is_default DESC, name', 'limit' => 0], 'api.payment_processor_type.getsingle' => 1, ]; + if (isset($isActive)) { + // We use isset because we don't want to set the is_active parameter at all is $isActive is NULL + $retrievalParameters['is_active'] = $isActive; + } if ($isCurrentDomainOnly) { $retrievalParameters['domain_id'] = CRM_Core_Config::domainID(); } @@ -377,17 +382,19 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * * @return array * available processors + * + * @throws \CiviCRM_API3_Exception */ public static function getPaymentProcessors($capabilities = [], $ids = FALSE) { if (is_array($ids)) { - $testProcessors = in_array('TestMode', $capabilities) ? self::getAllPaymentProcessors('test') : []; - $processors = self::getAllPaymentProcessors('all', FALSE, FALSE); - if (in_array('TestMode', $capabilities)) { + if (in_array('TestMode', $capabilities, TRUE)) { + $testProcessors = in_array('TestMode', $capabilities) ? self::getAllPaymentProcessors('test') : []; + $allProcessors = self::getAllPaymentProcessors('all', FALSE, FALSE, NULL); $possibleLiveIDs = array_diff($ids, array_keys($testProcessors)); foreach ($possibleLiveIDs as $possibleLiveID) { - if (isset($processors[$possibleLiveID]) && ($liveProcessorName = $processors[$possibleLiveID]['name']) != FALSE) { + if (isset($allProcessors[$possibleLiveID]) && ($liveProcessorName = $allProcessors[$possibleLiveID]['name']) != FALSE) { foreach ($testProcessors as $index => $testProcessor) { - if ($testProcessor['name'] == $liveProcessorName) { + if ($testProcessor['name'] === $liveProcessorName) { $ids[] = $testProcessor['id']; } } @@ -395,6 +402,9 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces } $processors = $testProcessors; } + else { + $processors = self::getAllPaymentProcessors('all', FALSE, FALSE); + } } else { $processors = self::getAllPaymentProcessors('all'); @@ -407,7 +417,7 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces } // Invalid processors will store a null value in 'object' (e.g. if not all required config fields are present). // This is determined by calling when loading the processor via the $processorObject->checkConfig() function. - if (!is_a($processor['object'], 'CRM_Core_Payment')) { + if (!$processor['object'] instanceof \CRM_Core_Payment) { unset($processors[$index]); continue; } diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php index a99ed8f9974428ec47b82d44492c23ec4d578be9..860d21003754b90c70984b9334c115cb1ea1bc5d 100644 --- a/civicrm/CRM/Financial/Form/FinancialAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialAccount.php @@ -160,7 +160,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form { public function setDefaultValues() { $defaults = parent::setDefaultValues(); if ($this->_action & CRM_Core_Action::ADD) { - $defaults['contact_id'] = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'contact_id'); + $defaults['contact_id'] = CRM_Core_BAO_Domain::getDomain()->contact_id; } return $defaults; } diff --git a/civicrm/CRM/Friend/BAO/Friend.php b/civicrm/CRM/Friend/BAO/Friend.php index 49cb7b9d882759e97a38d1f6b7bdcf79ff29596a..df14f590826a6394e79c0479e7ea3206441103f0 100644 --- a/civicrm/CRM/Friend/BAO/Friend.php +++ b/civicrm/CRM/Friend/BAO/Friend.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Friend/Form/Contribute.php b/civicrm/CRM/Friend/Form/Contribute.php index 1be8f42c1d44dbb037eeb1675a8ec2b78ada6240..0a85b96a1adab7d164be8063bdde1aca5e988941 100644 --- a/civicrm/CRM/Friend/Form/Contribute.php +++ b/civicrm/CRM/Friend/Form/Contribute.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Friend/Form/Event.php b/civicrm/CRM/Friend/Form/Event.php index a40c68e87440d9e84acf043d708b86bb7ad2fd25..cad46dde25c1a11511e9fecc8a5beb7a2b197bbe 100644 --- a/civicrm/CRM/Friend/Form/Event.php +++ b/civicrm/CRM/Friend/Form/Event.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/BAO/Grant.php b/civicrm/CRM/Grant/BAO/Grant.php index c314802a2b487d2b89f41ac931185fbf0cd1d1cc..d38aeb5c41b418a384ce37a5452e899516c12e05 100644 --- a/civicrm/CRM/Grant/BAO/Grant.php +++ b/civicrm/CRM/Grant/BAO/Grant.php @@ -14,13 +14,6 @@ */ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant { - /** - * Class constructor. - */ - public function __construct() { - parent::__construct(); - } - /** * Get events Summary. * @@ -93,7 +86,7 @@ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant { * @param array $defaults * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Grant_BAO_ManageGrant + * @return CRM_Grant_DAO_Grant */ public static function retrieve(&$params, &$defaults) { $grant = new CRM_Grant_DAO_Grant(); @@ -118,30 +111,6 @@ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant { $hook = $id ? 'edit' : 'create'; CRM_Utils_Hook::pre($hook, 'Grant', $id, $params); - // first clean up all the money fields - $moneyFields = [ - 'amount_total', - 'amount_granted', - 'amount_requested', - ]; - foreach ($moneyFields as $field) { - if (isset($params[$field])) { - $params[$field] = CRM_Utils_Rule::cleanMoney($params[$field]); - } - } - // convert dates to mysql format - $dates = [ - 'application_received_date', - 'decision_date', - 'money_transfer_date', - 'grant_due_date', - ]; - - foreach ($dates as $d) { - if (isset($params[$d])) { - $params[$d] = CRM_Utils_Date::processDate($params[$d], NULL, TRUE); - } - } $grant = new CRM_Grant_DAO_Grant(); $grant->id = $id; diff --git a/civicrm/CRM/Grant/Controller/Search.php b/civicrm/CRM/Grant/Controller/Search.php index 992528ffda895ce5e7ca35d8fd4cbe2eb3c49758..166cb93e9fef96619e9babdb80c07d0eeef204f6 100644 --- a/civicrm/CRM/Grant/Controller/Search.php +++ b/civicrm/CRM/Grant/Controller/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Grant.php b/civicrm/CRM/Grant/Form/Grant.php index 80d4f97b8db5f702c24f97f2b78c00021cd812d8..84125e58d9a39bb9083301c5a38ce3a0bbd9352a 100644 --- a/civicrm/CRM/Grant/Form/Grant.php +++ b/civicrm/CRM/Grant/Form/Grant.php @@ -40,8 +40,6 @@ class CRM_Grant_Form_Grant extends CRM_Core_Form { /** * Set variables up before form is built. - * - * @return void */ public function preProcess() { @@ -263,6 +261,16 @@ class CRM_Grant_Form_Grant extends CRM_Core_Form { 'civicrm_grant', $this->_id ); + $moneyFields = [ + 'amount_total', + 'amount_granted', + 'amount_requested', + ]; + foreach ($moneyFields as $field) { + if (isset($params[$field])) { + $params[$field] = CRM_Utils_Rule::cleanMoney($params[$field]); + } + } $grant = CRM_Grant_BAO_Grant::create($params, $ids); diff --git a/civicrm/CRM/Grant/Form/GrantView.php b/civicrm/CRM/Grant/Form/GrantView.php index 082f6de6e4fbcd00d8f88c2954584254b1dd6f13..672861bcf0b637dab9307fbee7e43a67ef589c0a 100644 --- a/civicrm/CRM/Grant/Form/GrantView.php +++ b/civicrm/CRM/Grant/Form/GrantView.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Search.php b/civicrm/CRM/Grant/Form/Search.php index 1ea774db22173ae52d99754986bdb3cd101ec889..b997f2cab733567b471cff5788943a3db430b974 100644 --- a/civicrm/CRM/Grant/Form/Search.php +++ b/civicrm/CRM/Grant/Form/Search.php @@ -162,8 +162,6 @@ class CRM_Grant_Form_Search extends CRM_Core_Form_Search { $this->_formValues = CRM_Contact_BAO_SavedSearch::getFormValues($this->_ssID); } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Grant/Form/Task/Delete.php b/civicrm/CRM/Grant/Form/Task/Delete.php index 155fe0e584a8bd6c21323bc9943803f09e3f71dd..5a05c0d98cc576500a9ab23ea0829ed4688583e3 100644 --- a/civicrm/CRM/Grant/Form/Task/Delete.php +++ b/civicrm/CRM/Grant/Form/Task/Delete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/Print.php b/civicrm/CRM/Grant/Form/Task/Print.php index 4534f51ec0ba535f737c6ca0e8aa3344741cd8a8..70dcd6493616bdd310de0df82a9344896c52b4f3 100644 --- a/civicrm/CRM/Grant/Form/Task/Print.php +++ b/civicrm/CRM/Grant/Form/Task/Print.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/Result.php b/civicrm/CRM/Grant/Form/Task/Result.php index fe1f932e39f43ccf76c014fde212e2399faffee3..3e03f65536a1e71aa08640fec30a62ef44e9c7da 100644 --- a/civicrm/CRM/Grant/Form/Task/Result.php +++ b/civicrm/CRM/Grant/Form/Task/Result.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php b/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php index 9d31e187147e47f17f9a366341c60aff4e461719..01ce981f45311fc0be590e8f1b059b1c564d7231 100644 --- a/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php +++ b/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/Update.php b/civicrm/CRM/Grant/Form/Task/Update.php index ba62dda100954967d24c4db6af8591c76219f6c6..d8388cb5f29e797c3ffa044fc1ac254bc2b87beb 100644 --- a/civicrm/CRM/Grant/Form/Task/Update.php +++ b/civicrm/CRM/Grant/Form/Task/Update.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -82,9 +80,9 @@ class CRM_Grant_Form_Task_Update extends CRM_Grant_Form_Task { $values[$key] = $value; } foreach ($this->_grantIds as $grantId) { - $ids['grant_id'] = $grantId; + $values['id'] = $grantId; - CRM_Grant_BAO_Grant::add($values, $ids); + CRM_Grant_BAO_Grant::add($values); $updatedGrants++; } } diff --git a/civicrm/CRM/Grant/Info.php b/civicrm/CRM/Grant/Info.php index fea61808aa3ca3c383bad294d4190c2ed603c310..e4093715f3d88962c58a064b1a6199ab6b79ba6d 100644 --- a/civicrm/CRM/Grant/Info.php +++ b/civicrm/CRM/Grant/Info.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Grant_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Grant/Page/Tab.php b/civicrm/CRM/Grant/Page/Tab.php index 450bb76e10dded8ed7dbf08846330cca761143da..4f2219364a9d896e4870c2740426ced784730793 100644 --- a/civicrm/CRM/Grant/Page/Tab.php +++ b/civicrm/CRM/Grant/Page/Tab.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Selector/Search.php b/civicrm/CRM/Grant/Selector/Search.php index 27918d27e585ea4d79117bca3a4214d8ccb5428a..07a2205f8a99744c95f3473f0a8f78b14a0007e3 100644 --- a/civicrm/CRM/Grant/Selector/Search.php +++ b/civicrm/CRM/Grant/Selector/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/StateMachine/Search.php b/civicrm/CRM/Grant/StateMachine/Search.php index eade9bb5b4f586c1b662935c68c1ded0a8aa9193..1fec37f322cea416498438e54d1176a4ae62102f 100644 --- a/civicrm/CRM/Grant/StateMachine/Search.php +++ b/civicrm/CRM/Grant/StateMachine/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Grant_StateMachine_Search extends CRM_Core_StateMachine { diff --git a/civicrm/CRM/Grant/Task.php b/civicrm/CRM/Grant/Task.php index 4778a933b67b7fa7524a337b5df9d52a4f15c22b..0bd104ddbf5de84ddfcbdc54632292d3bbce4945 100644 --- a/civicrm/CRM/Grant/Task.php +++ b/civicrm/CRM/Grant/Task.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Group/Controller.php b/civicrm/CRM/Group/Controller.php index d6a5372181bde9503823954df9cd50b6516ede8d..540ca3ec7350f820242ed6c23437612197acb668 100644 --- a/civicrm/CRM/Group/Controller.php +++ b/civicrm/CRM/Group/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Group_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Group/Form/Search.php b/civicrm/CRM/Group/Form/Search.php index 59b6cd52cbbd75ce749ddd067e6e7614ce116e04..819b061f21d61e1694ab53e4624a00804c6fd5b5 100644 --- a/civicrm/CRM/Group/Form/Search.php +++ b/civicrm/CRM/Group/Form/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Group_Form_Search extends CRM_Core_Form { diff --git a/civicrm/CRM/Group/Page/AJAX.php b/civicrm/CRM/Group/Page/AJAX.php index 55428b5ef6657dab098439f4acbe568556353247..b314d5cb6168562eea15a26845ad82a07fd9318e 100644 --- a/civicrm/CRM/Group/Page/AJAX.php +++ b/civicrm/CRM/Group/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -64,10 +63,6 @@ class CRM_Group_Page_AJAX { } } - if (!empty($_GET['is_unit_test'])) { - return $groups; - } - CRM_Utils_JSON::output($groups); } diff --git a/civicrm/CRM/Group/StateMachine.php b/civicrm/CRM/Group/StateMachine.php index d1408e506dffd5e94ca77d996ef0c32229f54162..2895be5b2879635e8c2b62bf65c14d045dd37ccd 100644 --- a/civicrm/CRM/Group/StateMachine.php +++ b/civicrm/CRM/Group/StateMachine.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Group_StateMachine extends CRM_Core_StateMachine { diff --git a/civicrm/CRM/Import/DataSource.php b/civicrm/CRM/Import/DataSource.php index 2b547608223439447040af6bf5309de70129a021..e7a8cc8459d89e2a0e62ee6c625f3a2f5a2eabe3 100644 --- a/civicrm/CRM/Import/DataSource.php +++ b/civicrm/CRM/Import/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Import/DataSource/CSV.php b/civicrm/CRM/Import/DataSource/CSV.php index e03b5972f7e01c833e6bd07625778e5747c73ec7..9651e47888aecb9b023947367cc1e354d0a22153 100644 --- a/civicrm/CRM/Import/DataSource/CSV.php +++ b/civicrm/CRM/Import/DataSource/CSV.php @@ -43,6 +43,8 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * uploaded to the temporary table in the DB. * * @param CRM_Core_Form $form + * + * @throws \CRM_Core_Exception */ public function buildQuickForm(&$form) { $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_CSV'); @@ -74,6 +76,8 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * @param array $params * @param string $db * @param \CRM_Core_Form $form + * + * @throws \CRM_Core_Exception */ public function postProcess(&$params, &$db, &$form) { $file = $params['uploadFile']['name']; @@ -100,19 +104,20 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * File name to load. * @param bool $headers * Whether the first row contains headers. - * @param string $table + * @param string $tableName * Name of table from which data imported. * @param string $fieldSeparator * Character that separates the various columns in the file. * - * @return string + * @return array * name of the created table + * @throws \CRM_Core_Exception */ private static function _CsvToTable( &$db, $file, $headers = FALSE, - $table = NULL, + $tableName = NULL, $fieldSeparator = ',' ) { $result = []; @@ -182,16 +187,17 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } } - // FIXME: we should regen this table's name if it exists rather than drop it - if (!$table) { - $table = 'civicrm_import_job_' . md5(uniqid(rand(), TRUE)); + if ($tableName) { + // Drop previous table if passed in and create new one. + $db->query("DROP TABLE IF EXISTS $tableName"); } - - $db->query("DROP TABLE IF EXISTS $table"); + $table = CRM_Utils_SQL_TempTable::build()->setDurable(); + $tableName = $table->getName(); + // Do we still need this? + $db->query("DROP TABLE IF EXISTS $tableName"); + $table->createWithColumns(implode(' text, ', $columns) . ' text'); $numColumns = count($columns); - $create = "CREATE TABLE $table (" . implode(' text, ', $columns) . " text) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"; - $db->query($create); // the proper approach, but some MySQL installs do not have this enabled // $load = "LOAD DATA LOCAL INFILE '$file' INTO TABLE $table FIELDS TERMINATED BY '$fieldSeparator' OPTIONALLY ENCLOSED BY '\"'"; @@ -228,7 +234,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { $count++; if ($count >= self::NUM_ROWS_TO_INSERT && !empty($sql)) { - $sql = "INSERT IGNORE INTO $table VALUES $sql"; + $sql = "INSERT IGNORE INTO $tableName VALUES $sql"; $db->query($sql); $sql = NULL; @@ -238,14 +244,14 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } if (!empty($sql)) { - $sql = "INSERT IGNORE INTO $table VALUES $sql"; + $sql = "INSERT IGNORE INTO $tableName VALUES $sql"; $db->query($sql); } fclose($fd); //get the import tmp table name. - $result['import_table_name'] = $table; + $result['import_table_name'] = $tableName; return $result; } diff --git a/civicrm/CRM/Import/DataSource/SQL.php b/civicrm/CRM/Import/DataSource/SQL.php index 7fe07047dc70de24060265958a32b20518639554..26d3e09faa1a9d779cc8b394e7585718d03a5714 100644 --- a/civicrm/CRM/Import/DataSource/SQL.php +++ b/civicrm/CRM/Import/DataSource/SQL.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource { @@ -82,6 +80,8 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource { * @param array $params * @param string $db * @param \CRM_Core_Form $form + * + * @throws \CRM_Core_Exception */ public function postProcess(&$params, &$db, &$form) { $importJob = new CRM_Contact_Import_ImportJob( diff --git a/civicrm/CRM/Import/Form/DataSource.php b/civicrm/CRM/Import/Form/DataSource.php index 0e8fe5a48c20de73f891004d0dc70e72c1b42d75..90e5cd71c73be5f701872de901335f5069472266 100644 --- a/civicrm/CRM/Import/Form/DataSource.php +++ b/civicrm/CRM/Import/Form/DataSource.php @@ -95,26 +95,17 @@ abstract class CRM_Import_Form_DataSource extends CRM_Core_Form { */ protected function addContactTypeSelector() { //contact types option - $contactOptions = []; + $contactTypeOptions = []; if (CRM_Contact_BAO_ContactType::isActive('Individual')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Individual'), CRM_Import_Parser::CONTACT_INDIVIDUAL - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_INDIVIDUAL] = ts('Individual'); } if (CRM_Contact_BAO_ContactType::isActive('Household')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Household'), CRM_Import_Parser::CONTACT_HOUSEHOLD - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_HOUSEHOLD] = ts('Household'); } if (CRM_Contact_BAO_ContactType::isActive('Organization')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Organization'), CRM_Import_Parser::CONTACT_ORGANIZATION - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_ORGANIZATION] = ts('Organization'); } - - $this->addGroup($contactOptions, 'contactType', - ts('Contact Type') - ); + $this->addRadio('contactType', ts('Contact Type'), $contactTypeOptions); $this->setDefaults([ 'contactType' => CRM_Import_Parser::CONTACT_INDIVIDUAL, diff --git a/civicrm/CRM/Logging/Differ.php b/civicrm/CRM/Logging/Differ.php index 2e05cf1d709aefea5659112b236ff85e7b5bad20..a124a4006956bc0689c0ed3bfac5f120a2f5d287 100644 --- a/civicrm/CRM/Logging/Differ.php +++ b/civicrm/CRM/Logging/Differ.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Logging_Differ { private $db; diff --git a/civicrm/CRM/Logging/Schema.php b/civicrm/CRM/Logging/Schema.php index 183af4100ac696a62e314f46dcfcf4a1c56747e4..e9160bbdefe14defd5c7d1d185ca2680644d7d33 100644 --- a/civicrm/CRM/Logging/Schema.php +++ b/civicrm/CRM/Logging/Schema.php @@ -72,11 +72,13 @@ class CRM_Logging_Schema { * @throws API_Exception */ public static function checkLoggingSupport(&$value, $fieldSpec) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); if (!(CRM_Core_DAO::checkTriggerViewPermission(FALSE)) && $value) { throw new API_Exception(ts("In order to use this functionality, the installation's database user must have privileges to create triggers and views (if binary logging is enabled – this means the SUPER privilege). This install does not have the required privilege(s) enabled.")); } + // dev/core#1812 Disable logging in a multilingual environment. + if (CRM_Core_I18n::isMultilingual() && $value) { + throw new API_Exception(ts("Logging is not supported in a multilingual environment!")); + } return TRUE; } diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index 8169513e89a136a0bba1ebb65f9b2fe2240ba900..8a1e9529096e79d8cee9ad72191469f7686b6299 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -1528,6 +1528,12 @@ ORDER BY civicrm_email.is_bulkmail DESC \Civi::log('Parameter $ids is no longer used by Mailing::create. Use the api or just pass $params', ['civi.tag' => 'deprecated']); } + // CRM-#1843 + // If it is a mass sms, set url_tracking to false + if (!empty($params['sms_provider_id'])) { + $params['url_tracking'] = 0; + } + // CRM-12430 // Do the below only for an insert // for an update, we should not set the defaults diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php index 8ebd8908340c34a5ecd22f1f543a39ccd2f28577..4b1d5c6656a4d72ab074dbe8e5c45f570f7f47f1 100644 --- a/civicrm/CRM/Mailing/BAO/MailingJob.php +++ b/civicrm/CRM/Mailing/BAO/MailingJob.php @@ -432,6 +432,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $now = time(); $params = []; $count = 0; + // dev/core#1768 Get the mail sync interval. + $mail_sync_interval = Civi::settings()->get('civimail_sync_interval'); while ($recipients->fetch()) { // CRM-18543: there are situations when both the email and phone are null. // Skip the recipient in this case. @@ -453,7 +455,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $recipients->phone_id, ]; $count++; - if ($count % CRM_Mailing_Config::BULK_MAIL_INSERT_COUNT == 0) { + // dev/core#1768 Mail sync interval is now configurable. + if ($count % $mail_sync_interval == 0) { CRM_Mailing_Event_BAO_Queue::bulkCreate($params, $now); $count = 0; $params = []; @@ -576,6 +579,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $returnProperties = $mailing->getReturnProperties(); $params = $targetParams = $deliveredParams = []; $count = 0; + // dev/core#1768 Get the mail sync interval. + $mail_sync_interval = Civi::settings()->get('civimail_sync_interval'); $retryGroup = FALSE; // CRM-15702: Sending bulk sms to contacts without e-mail address fails. @@ -708,7 +713,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $targetParams[] = $field['contact_id']; $count++; - if ($count % CRM_Mailing_Config::BULK_MAIL_INSERT_COUNT == 0) { + // dev/core#1768 Mail sync interval is now configurable. + if ($count % $mail_sync_interval == 0) { $this->writeToDB( $deliveredParams, $targetParams, diff --git a/civicrm/CRM/Mailing/Config.php b/civicrm/CRM/Mailing/Config.php index afe2f7d2dc380c5e6609b0c1822cd229ef3d2a7d..cc3870222575c6846ef2c334b2fe004fa95d5afa 100644 --- a/civicrm/CRM/Mailing/Config.php +++ b/civicrm/CRM/Mailing/Config.php @@ -27,6 +27,8 @@ class CRM_Mailing_Config { // special value for mail bulk inserts to avoid // potential duplication, assuming a smaller number reduces number of queries // by some factor, so some tradeoff. CRM-8678 + // dev/core#1768 Remove this after Dec 2020. + // Replaced with civimail_sync_interval. const BULK_MAIL_INSERT_COUNT = 10; } diff --git a/civicrm/CRM/Mailing/Event/BAO/Opened.php b/civicrm/CRM/Mailing/Event/BAO/Opened.php index f180fddb500f6f1502d54bc0e668ece8410e706f..1ecc0788399cd27ce551488c073d1530ee8de735 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Opened.php +++ b/civicrm/CRM/Mailing/Event/BAO/Opened.php @@ -112,7 +112,7 @@ class CRM_Mailing_Event_BAO_Opened extends CRM_Mailing_Event_DAO_Opened { } /** - * CRM-12814 + * @see https://issues.civicrm.org/jira/browse/CRM-12814 * Get opened count for each mailing for a given set of mailing IDs * * @param $mailingIDs diff --git a/civicrm/CRM/Mailing/Event/BAO/Reply.php b/civicrm/CRM/Mailing/Event/BAO/Reply.php index 25fb8f4fff5739ce1404faace421c45f2aeaebbe..ed240b720f23ae333b46a82dc23900667d9a6568 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Reply.php +++ b/civicrm/CRM/Mailing/Event/BAO/Reply.php @@ -227,17 +227,15 @@ class CRM_Mailing_Event_BAO_Reply extends CRM_Mailing_Event_DAO_Reply { $component->id = $mailing->reply_id; $component->find(TRUE); - $message = new Mail_Mime("\n"); - $domain = CRM_Core_BAO_Domain::getDomain(); list($domainEmailName, $_) = CRM_Core_BAO_Domain::getNameAndEmail(); - $headers = [ - 'Subject' => $component->subject, - 'To' => $to, - 'From' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', - 'Reply-To' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'toEmail' => $to, + 'from' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', + 'replyTo' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), ]; // TODO: do we need reply tokens? @@ -257,24 +255,19 @@ class CRM_Mailing_Event_BAO_Reply extends CRM_Mailing_Event_DAO_Reply { if ($eq->format == 'HTML' || $eq->format == 'Both') { $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html']); $html = CRM_Utils_Token::replaceMailingTokens($html, $mailing, NULL, $tokens['html']); - $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceMailingTokens($text, $mailing, NULL, $tokens['text']); - $message->setTxtBody($text); } + $params['html'] = $html; + $params['text'] = $text; - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - CRM_Mailing_BAO_Mailing::addMessageIdHeader($h, 'a', $eq->job_id, queue_id, $eq->hash); - - $mailer = \Civi::service('pear_mail'); - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($to, $h, $b); - unset($errorScope); + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 'a', $eq->job_id, queue_id, $eq->hash); + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } /** diff --git a/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php b/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php index e13ee159b613f07c1a69094fcaa331d2c07b538f..3468c533b17bd9c55e70a1730a3158495af315aa 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php @@ -229,8 +229,6 @@ class CRM_Mailing_Event_BAO_Resubscribe { } } - $message = new Mail_mime("\n"); - list($addresses, $urls) = CRM_Mailing_BAO_Mailing::getVerpAndUrls($job, $queue_id, $eq->hash, $eq->email); $bao = new CRM_Mailing_BAO_Mailing(); $bao->body_text = $text; @@ -241,34 +239,28 @@ class CRM_Mailing_Event_BAO_Resubscribe { $html = CRM_Utils_Token::replaceResubscribeTokens($html, $domain, $groups, TRUE, $eq->contact_id, $eq->hash); $html = CRM_Utils_Token::replaceActionTokens($html, $addresses, $urls, TRUE, $tokens['html']); $html = CRM_Utils_Token::replaceMailingTokens($html, $dao, NULL, $tokens['html']); - $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, TRUE, $tokens['text']); $text = CRM_Utils_Token::replaceResubscribeTokens($text, $domain, $groups, FALSE, $eq->contact_id, $eq->hash); $text = CRM_Utils_Token::replaceActionTokens($text, $addresses, $urls, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceMailingTokens($text, $dao, NULL, $tokens['text']); - $message->setTxtBody($text); } - $headers = [ - 'Subject' => $component->subject, - 'From' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', - 'To' => $eq->email, - 'Reply-To' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'from' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', + 'toEmail' => $eq->email, + 'replyTo' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'html' => $html, + 'text' => $text, ]; - CRM_Mailing_BAO_Mailing::addMessageIdHeader($headers, 'e', $job, $queue_id, $eq->hash); - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - - $mailer = \Civi::service('pear_mail'); - - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($eq->email, $h, $b); - unset($errorScope); + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 'e', $job, $queue_id, $eq->hash); + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } } diff --git a/civicrm/CRM/Mailing/Event/BAO/Subscribe.php b/civicrm/CRM/Mailing/Event/BAO/Subscribe.php index 1dfad54a4a4206537704cdb63df456097627c774..71baa417fe75bd3763ec9ad373d697adb801a527 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Subscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/Subscribe.php @@ -205,12 +205,12 @@ SELECT civicrm_email.id as email_id $component->find(TRUE); - $headers = [ - 'Subject' => $component->subject, - 'From' => "\"{$domainEmailName}\" <{$domainEmailAddress}>", - 'To' => $email, - 'Reply-To' => $confirm, - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'from' => "\"{$domainEmailName}\" <{$domainEmailAddress}>", + 'toEmail' => $email, + 'replyTo' => $confirm, + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), ]; $url = CRM_Utils_System::url('civicrm/mailing/confirm', @@ -246,24 +246,17 @@ SELECT civicrm_email.id as email_id // render the & entities in text mode, so that the links work $text = str_replace('&', '&', $text); - $message = new Mail_mime("\n"); - - $message->setHTMLBody($html); - $message->setTxtBody($text); - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - CRM_Mailing_BAO_Mailing::addMessageIdHeader($h, 's', + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 's', $this->contact_id, $this->id, $this->hash ); - $mailer = \Civi::service('pear_mail'); - - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($email, $h, $b); - unset($errorScope); + $params['html'] = $html; + $params['text'] = $text; + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } /** diff --git a/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php b/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php index 6c314f04b68fdb9070e66cbbd1a74cb4faeb035d..856f577edb4ad121b0e04e7e4a8902e2abd98d55 100644 --- a/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php +++ b/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php @@ -169,7 +169,7 @@ class CRM_Mailing_Event_BAO_TrackableURLOpen extends CRM_Mailing_Event_DAO_Track /** * Get tracked url count for each mailing for a given set of mailing IDs. * - * CRM-12814 + * @see https://issues.civicrm.org/jira/browse/CRM-12814 * * @param array $mailingIDs * diff --git a/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php b/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php index 920ae7d3bcfe3c43c2da490d73d009e24d18b5e8..ce92b388e2604c1d55c32b00ba693ea32682ce3e 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php @@ -365,8 +365,6 @@ WHERE email = %2 } } - $message = new Mail_mime("\n"); - list($addresses, $urls) = CRM_Mailing_BAO_Mailing::getVerpAndUrls($job, $queue_id, $eq->hash, $eq->email); $bao = new CRM_Mailing_BAO_Mailing(); $bao->body_text = $text; @@ -377,37 +375,30 @@ WHERE email = %2 $html = CRM_Utils_Token::replaceUnsubscribeTokens($html, $domain, $groups, TRUE, $eq->contact_id, $eq->hash); $html = CRM_Utils_Token::replaceActionTokens($html, $addresses, $urls, TRUE, $tokens['html']); $html = CRM_Utils_Token::replaceMailingTokens($html, $dao, NULL, $tokens['html']); - $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceUnsubscribeTokens($text, $domain, $groups, FALSE, $eq->contact_id, $eq->hash); $text = CRM_Utils_Token::replaceActionTokens($text, $addresses, $urls, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceMailingTokens($text, $dao, NULL, $tokens['text']); - $message->setTxtBody($text); } $emailDomain = CRM_Core_BAO_MailSettings::defaultDomain(); - $headers = [ - 'Subject' => $component->subject, - 'From' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', - 'To' => $eq->email, - 'Reply-To' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'from' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', + 'toEmail' => $eq->email, + 'replyTo' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'html' => $html, + 'text' => $text, ]; - CRM_Mailing_BAO_Mailing::addMessageIdHeader($headers, 'u', $job, $queue_id, $eq->hash); - - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - - $mailer = \Civi::service('pear_mail'); - - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($eq->email, $h, $b); - unset($errorScope); + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 'u', $job, $queue_id, $eq->hash); + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } /** diff --git a/civicrm/CRM/Mailing/Form/Subscribe.php b/civicrm/CRM/Mailing/Form/Subscribe.php index 1be92c12145af51379b8ca4348d67368ebb201d7..97405dce40716e93f8d11136826a457e92aff25c 100644 --- a/civicrm/CRM/Mailing/Form/Subscribe.php +++ b/civicrm/CRM/Mailing/Form/Subscribe.php @@ -105,32 +105,11 @@ ORDER BY title"; $this->addFormRule(['CRM_Mailing_Form_Subscribe', 'formRule']); } - $addCaptcha = TRUE; - - // if recaptcha is not configured, then dont add it - // CRM-11316 Only enable ReCAPTCHA for anonymous visitors - $config = CRM_Core_Config::singleton(); + // CRM-11316 Enable ReCAPTCHA for anonymous visitors $session = CRM_Core_Session::singleton(); $contactID = $session->get('userID'); - if (empty($config->recaptchaPublicKey) || - empty($config->recaptchaPrivateKey) || - $contactID - ) { - $addCaptcha = FALSE; - } - else { - // If this is POST request and came from a block, - // lets add recaptcha only if already present. - // Gross hack for now. - if (!empty($_POST) && - !array_key_exists('recaptcha_challenge_field', $_POST) - ) { - $addCaptcha = FALSE; - } - } - - if ($addCaptcha) { + if (!$contactID) { CRM_Utils_ReCAPTCHA::enableCaptchaOnForm($this); } diff --git a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml index d4cc7d274ae72f7f582c099917f90cc4a78eefdd..78ac7ebe0654962a97646554a690d577b0e21a21 100644 --- a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml +++ b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml @@ -206,10 +206,12 @@ <path>civicrm/mailing/url</path> <page_callback>CRM_Mailing_Page_Url</page_callback> <access_arguments>*always allow*</access_arguments> + <is_public>true</is_public> </item> <item> <path>civicrm/mailing/open</path> <page_callback>CRM_Mailing_Page_Open</page_callback> <access_arguments>*always allow*</access_arguments> + <is_public>true</is_public> </item> </menu> diff --git a/civicrm/CRM/Member/BAO/Membership.php b/civicrm/CRM/Member/BAO/Membership.php index c927be1aff4a24cb6288002bce62e7b033cce411..6640b4b113f87e666feef366c63fb971ee2db92f 100644 --- a/civicrm/CRM/Member/BAO/Membership.php +++ b/civicrm/CRM/Member/BAO/Membership.php @@ -385,42 +385,48 @@ class CRM_Member_BAO_Membership extends CRM_Member_DAO_Membership { self::createRelatedMemberships($params, $membership); - // do not add to recent items for import, CRM-4399 if (empty($params['skipRecentView'])) { - $url = CRM_Utils_System::url('civicrm/contact/view/membership', - "action=view&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" - ); - if (empty($membership->membership_type_id)) { - // ie in an update situation. - $membership->find(TRUE); - } - $membershipTypes = CRM_Member_PseudoConstant::membershipType(); - $title = CRM_Contact_BAO_Contact::displayName($membership->contact_id) . ' - ' . ts('Membership Type:') . ' ' . $membershipTypes[$membership->membership_type_id]; + self::addToRecentItems($membership); + } - $recentOther = []; - if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::UPDATE)) { - $recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', - "action=update&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" - ); - } - if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::DELETE)) { - $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', - "action=delete&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" - ); - } + return $membership; + } - // add the recently created Membership - CRM_Utils_Recent::add($title, - $url, - $membership->id, - 'Membership', - $membership->contact_id, - NULL, - $recentOther + /** + * @param \CRM_Member_DAO_Membership $membership + */ + private static function addToRecentItems($membership) { + $url = CRM_Utils_System::url('civicrm/contact/view/membership', + "action=view&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" + ); + if (empty($membership->membership_type_id)) { + // ie in an update situation. + $membership->find(TRUE); + } + $title = CRM_Contact_BAO_Contact::displayName($membership->contact_id) . ' - ' . ts('Membership Type:') + . ' ' . CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'membership_type_id', $membership->membership_type_id); + + $recentOther = []; + if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::UPDATE)) { + $recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', + "action=update&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" + ); + } + if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::DELETE)) { + $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', + "action=delete&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" ); } - return $membership; + // add the recently created Membership + CRM_Utils_Recent::add($title, + $url, + $membership->id, + 'Membership', + $membership->contact_id, + NULL, + $recentOther + ); } /** @@ -891,13 +897,11 @@ INNER JOIN civicrm_membership_type type ON ( type.id = membership.membership_ty * * @return array * array of importable Fields + * @throws \CRM_Core_Exception */ - public static function &importableFields($contactType = 'Individual', $status = TRUE) { - if (!self::$_importableFields) { - if (!self::$_importableFields) { - self::$_importableFields = []; - } - + public static function importableFields($contactType = 'Individual', $status = TRUE) { + $fields = Civi::cache('fields')->get('membership_importable_fields' . $contactType . $status); + if (!$fields) { if (!$status) { $fields = ['' => ['title' => '- ' . ts('do not import') . ' -']]; } @@ -935,16 +939,16 @@ INNER JOIN civicrm_membership_type type ON ( type.id = membership.membership_ty } } $tmpContactField['external_identifier'] = $contactFields['external_identifier']; - $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . " " . ts('(match to contact)'); + $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)'); - $tmpFields['membership_contact_id']['title'] = $tmpFields['membership_contact_id']['title'] . " " . ts('(match to contact)'); + $tmpFields['membership_contact_id']['title'] .= ' ' . ts('(match to contact)'); $fields = array_merge($fields, $tmpContactField); $fields = array_merge($fields, $tmpFields); $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Membership')); - self::$_importableFields = $fields; + Civi::cache('fields')->set('membership_importable_fields' . $contactType . $status, $fields); } - return self::$_importableFields; + return $fields; } /** @@ -2164,21 +2168,50 @@ INNER JOIN civicrm_contact contact ON ( contact.id = membership.contact_id AND * IMPORTANT: * Sending renewal reminders has been migrated from this job to the Scheduled Reminders function as of 4.3. * + * @param array $params + * only_active_membership_types, exclude_test_memberships, exclude_membership_status_ids + * * @return array * * @throws \CiviCRM_API3_Exception * @throws \CRM_Core_Exception */ - public static function updateAllMembershipStatus() { - // Tests for this function are in api_v3_JobTest. Please add tests for all updates. - - $updateCount = $processCount = self::updateDeceasedMembersStatuses(); - + public static function updateAllMembershipStatus($params = []) { // We want all of the statuses as id => name, even the disabled ones (cf. // CRM-15475), to identify which are Pending, Deceased, Cancelled, and // Expired. $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'validate'); - $allTypes = CRM_Member_PseudoConstant::membershipType(); + if (empty($params['exclude_membership_status_ids'])) { + $params['exclude_membership_status_ids'] = [ + array_search('Pending', $allStatus), + array_search('Cancelled', $allStatus), + array_search('Expired', $allStatus) ?: 0, + array_search('Deceased', $allStatus), + ]; + } + // Deceased is *always* excluded because it is has very specific processing below. + elseif (!in_array(array_search('Deceased', $allStatus), $params['exclude_membership_status_ids'])) { + $params['exclude_membership_status_ids'][] = array_search('Deceased', $allStatus); + } + + for ($index = 0; $index < count($params['exclude_membership_status_ids']); $index++) { + $queryParams[$index] = [$params['exclude_membership_status_ids'][$index], 'Integer']; + } + $membershipStatusClause = 'civicrm_membership.status_id NOT IN (%' . implode(', %', array_keys($queryParams)) . ')'; + + // Tests for this function are in api_v3_JobTest. Please add tests for all updates. + + $updateCount = $processCount = self::updateDeceasedMembersStatuses(); + + $whereClauses[] = 'civicrm_contact.is_deceased = 0'; + if ($params['exclude_test_memberships']) { + $whereClauses[] = 'civicrm_membership.is_test = 0'; + } + $whereClause = implode(' AND ', $whereClauses); + $activeMembershipClause = ''; + if ($params['only_active_membership_types']) { + $activeMembershipClause = ' AND civicrm_membership_type.is_active = 1'; + } // This query retrieves ALL memberships of active types. $baseQuery = " @@ -2197,15 +2230,8 @@ SELECT civicrm_membership.id as membership_id, FROM civicrm_membership INNER JOIN civicrm_contact ON ( civicrm_membership.contact_id = civicrm_contact.id ) INNER JOIN civicrm_membership_type ON - (civicrm_membership.membership_type_id = civicrm_membership_type.id AND civicrm_membership_type.is_active = 1) -WHERE civicrm_membership.is_test = 0 - AND civicrm_contact.is_deceased = 0 "; - - $deceaseStatusId = array_search('Deceased', $allStatus); - $pendingStatusId = array_search('Pending', $allStatus); - $cancelledStatusId = array_search('Cancelled', $allStatus); - // Expired is not reserved so might not exist. A value of `0` won't break. - $expiredStatusId = array_search('Expired', $allStatus) ?: 0; + (civicrm_membership.membership_type_id = civicrm_membership_type.id {$activeMembershipClause}) +WHERE {$whereClause}"; $query = $baseQuery . " AND civicrm_membership.is_override IS NOT NULL AND civicrm_membership.status_override_end_date IS NOT NULL"; $dao1 = CRM_Core_DAO::executeQuery($query); @@ -2214,18 +2240,14 @@ WHERE civicrm_membership.is_test = 0 } $query = $baseQuery . " AND (civicrm_membership.is_override = 0 OR civicrm_membership.is_override IS NULL) - AND civicrm_membership.status_id NOT IN (%1, %2, %3, %4) + AND {$membershipStatusClause} AND civicrm_membership.owner_membership_id IS NULL "; - $params = [ - 1 => [$pendingStatusId, 'Integer'], - 2 => [$cancelledStatusId, 'Integer'], - 3 => [$expiredStatusId, 'Integer'], - 4 => [$deceaseStatusId, 'Integer'], - ]; - $dao2 = CRM_Core_DAO::executeQuery($query, $params); + + $allMembershipTypes = CRM_Member_BAO_MembershipType::getAllMembershipTypes(); + + $dao2 = CRM_Core_DAO::executeQuery($query, $queryParams); while ($dao2->fetch()) { - // echo "."; $processCount++; // Put common parameters into array for easy access @@ -2234,7 +2256,7 @@ WHERE civicrm_membership.is_test = 0 'status_id' => $dao2->status_id, 'contact_id' => $dao2->contact_id, 'membership_type_id' => $dao2->membership_type_id, - 'membership_type' => $allTypes[$dao2->membership_type_id], + 'membership_type' => $allMembershipTypes[$dao2->membership_type_id]['name'], 'join_date' => $dao2->join_date, 'start_date' => $dao2->start_date, 'end_date' => $dao2->end_date, @@ -2261,7 +2283,6 @@ WHERE civicrm_membership.is_test = 0 $memParams = $memberParams; $memParams['status_id'] = $statusId; $memParams['createActivity'] = TRUE; - $memParams['version'] = 3; // Unset columns which should remain unchanged from their current saved // values. This avoids race condition in which these values may have @@ -2278,7 +2299,7 @@ WHERE civicrm_membership.is_test = 0 //since there is change in status. //process member record. - civicrm_api('membership', 'create', $memParams); + civicrm_api3('membership', 'create', $memParams); $updateCount++; } } diff --git a/civicrm/CRM/Member/BAO/MembershipBlock.php b/civicrm/CRM/Member/BAO/MembershipBlock.php index 46898b0220bbce63337dce3ba57c397a7af0b69f..94a7cb5ba3418bb49e4982cce22846340994670f 100644 --- a/civicrm/CRM/Member/BAO/MembershipBlock.php +++ b/civicrm/CRM/Member/BAO/MembershipBlock.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock { diff --git a/civicrm/CRM/Member/BAO/MembershipLog.php b/civicrm/CRM/Member/BAO/MembershipLog.php index daf544ff25b573a855f5d06d064a8eaa5e7f2785..d7fc4f616606875e223a68d88b5eeef92a81e78f 100644 --- a/civicrm/CRM/Member/BAO/MembershipLog.php +++ b/civicrm/CRM/Member/BAO/MembershipLog.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipLog extends CRM_Member_DAO_MembershipLog { diff --git a/civicrm/CRM/Member/BAO/MembershipPayment.php b/civicrm/CRM/Member/BAO/MembershipPayment.php index 095caf7d75fb99132b4cf4878c82fe369a2129cc..32d9af030f2c626c0156233fc911aa8e2fd2b3c9 100644 --- a/civicrm/CRM/Member/BAO/MembershipPayment.php +++ b/civicrm/CRM/Member/BAO/MembershipPayment.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipPayment extends CRM_Member_DAO_MembershipPayment { diff --git a/civicrm/CRM/Member/BAO/MembershipStatus.php b/civicrm/CRM/Member/BAO/MembershipStatus.php index fc187f186b6d4490425a1bf7d0ce8ff52462e13e..fa4a7665f8d594544887808cc21cdc21d290e246 100644 --- a/civicrm/CRM/Member/BAO/MembershipStatus.php +++ b/civicrm/CRM/Member/BAO/MembershipStatus.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { @@ -68,7 +66,6 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { /** * Takes an associative array and creates a membership Status object. - * See http://wiki.civicrm.org/confluence/display/CRM/Database+layer * * @param array $params * (reference ) an assoc array of name/value pairs. @@ -200,61 +197,45 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { /** * Find the membership status based on start date, end date, join date & status date. * + * Loop through all the membership status definitions, ordered by their + * weight. For each, we loop through all possible variations of the given + * start, end, and join dates and adjust the starts and ends based on that + * membership status's rules, where the last computed set of adjusted start + * and end becomes a candidate. Then we compare that candidate to either + * "today" or some other given date, and if it falls between the adjusted + * start and end we have a match and we stop looping through status + * definitions. Then we call a hook in case that wasn't enough loops. + * * @param string $startDate * Start date of the member whose membership status is to be calculated. * @param string $endDate * End date of the member whose membership status is to be calculated. * @param string $joinDate * Join date of the member whose membership status is to be calculated. - * @param \date|string $statusDate status date of the member whose membership status is to be calculated. - * @param bool $excludeIsAdmin the statuses those having is_admin = 1. - * Exclude the statuses those having is_admin = 1. + * @param string $statusDate + * Either the string "today" or a date against which we compare the adjusted start and end based on the status rules. + * @param bool $excludeIsAdmin + * Exclude the statuses having is_admin = 1. * @param int $membershipTypeID + * Not used directly but gets passed to the hook. * @param array $membership - * Membership params as available to calling function - passed to the hook. + * Membership params as available to calling function - not used directly but passed to the hook. * * @return array */ public static function getMembershipStatusByDate( $startDate, $endDate, $joinDate, - $statusDate = 'today', $excludeIsAdmin = FALSE, $membershipTypeID, $membership = [] + $statusDate = 'today', $excludeIsAdmin = FALSE, $membershipTypeID = NULL, $membership = [] ) { $membershipDetails = []; if (!$statusDate || $statusDate == 'today') { - $statusDate = getdate(); - $statusDate = date('Ymd', - mktime($statusDate['hours'], - $statusDate['minutes'], - $statusDate['seconds'], - $statusDate['mon'], - $statusDate['mday'], - $statusDate['year'] - ) - ); + $statusDate = date('Ymd'); } else { $statusDate = CRM_Utils_Date::customFormat($statusDate, '%Y%m%d'); } - $dates = ['start', 'end', 'join']; - $events = ['start', 'end']; - - foreach ($dates as $dat) { - if (${$dat . 'Date'} && ${$dat . 'Date'} != "null") { - ${$dat . 'Date'} = CRM_Utils_Date::customFormat(${$dat . 'Date'}, '%Y%m%d'); - - ${$dat . 'Year'} = substr(${$dat . 'Date'}, 0, 4); - - ${$dat . 'Month'} = substr(${$dat . 'Date'}, 4, 2); - - ${$dat . 'Day'} = substr(${$dat . 'Date'}, 6, 2); - } - else { - ${$dat . 'Date'} = ''; - } - } - //fix for CRM-3570, if we have statuses with is_admin=1, //exclude these statuses from calculatation during import. $where = "is_active = 1"; @@ -269,48 +250,56 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { ORDER BY weight ASC"; $membershipStatus = CRM_Core_DAO::executeQuery($query); - $hour = $minute = $second = 0; + + $dates = [ + 'start' => ($startDate && $startDate !== 'null') ? date('Ymd', strtotime($startDate)) : '', + 'end' => ($endDate && $endDate !== 'null') ? date('Ymd', strtotime($endDate)) : '', + 'join' => ($joinDate && $joinDate !== 'null') ? date('Ymd', strtotime($joinDate)) : '', + ]; while ($membershipStatus->fetch()) { $startEvent = NULL; $endEvent = NULL; - foreach ($events as $eve) { - foreach ($dates as $dat) { + foreach (['start', 'end'] as $eve) { + foreach ($dates as $dat => $date) { // calculate start-event/date and end-event/date - if (($membershipStatus->{$eve . '_event'} == $dat . '_date') && - ${$dat . 'Date'} + if (($membershipStatus->{$eve . '_event'} === $dat . '_date') && + $date ) { if ($membershipStatus->{$eve . '_event_adjust_unit'} && $membershipStatus->{$eve . '_event_adjust_interval'} ) { + $month = date('m', strtotime($date)); + $day = date('d', strtotime($date)); + $year = date('Y', strtotime($date)); // add in months - if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'month') { - ${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second, - ${$dat . 'Month'} + $membershipStatus->{$eve . '_event_adjust_interval'}, - ${$dat . 'Day'}, - ${$dat . 'Year'} + if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'month') { + ${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0, + $month + $membershipStatus->{$eve . '_event_adjust_interval'}, + $day, + $year )); } // add in days - if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'day') { - ${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second, - ${$dat . 'Month'}, - ${$dat . 'Day'} + $membershipStatus->{$eve . '_event_adjust_interval'}, - ${$dat . 'Year'} + if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'day') { + ${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0, + $month, + $day + $membershipStatus->{$eve . '_event_adjust_interval'}, + $year )); } // add in years - if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'year') { - ${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second, - ${$dat . 'Month'}, - ${$dat . 'Day'}, - ${$dat . 'Year'} + $membershipStatus->{$eve . '_event_adjust_interval'} + if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'year') { + ${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0, + $month, + $day, + $year + $membershipStatus->{$eve . '_event_adjust_interval'} )); } // if no interval and unit, present } else { - ${$eve . 'Event'} = ${$dat . 'Date'}; + ${$eve . 'Event'} = $date; } } } diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php index 09b3eef0c4d44b6c89843b7da7af3acf475fc79f..11593a8e44f7e0269e75bdfb03c8788cc87b2692 100644 --- a/civicrm/CRM/Member/BAO/MembershipType.php +++ b/civicrm/CRM/Member/BAO/MembershipType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { diff --git a/civicrm/CRM/Member/Controller/Search.php b/civicrm/CRM/Member/Controller/Search.php index 4d4e062765c35d0fad1263889dc43bb28a9d5b08..02ca8b7ff692bf13c036725a4e4fe59c29669567 100644 --- a/civicrm/CRM/Member/Controller/Search.php +++ b/civicrm/CRM/Member/Controller/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php index 007971bf21819c9be6b63d6f544b9e9622bcdb88..3c98b8570b9f71cd919120ca3ef7c79fc3e5421c 100644 --- a/civicrm/CRM/Member/Form/Membership.php +++ b/civicrm/CRM/Member/Form/Membership.php @@ -497,7 +497,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $totalAmount = $values['minimum_fee'] ?? NULL; //CRM-18827 - override the default value if total_amount is submitted if (!empty($this->_submitValues['total_amount'])) { - $totalAmount = $this->_submitValues['total_amount']; + $totalAmount = CRM_Utils_Rule::cleanMoney($this->_submitValues['total_amount']); } // build membership info array, which is used when membership type is selected to: // - set the payment information block @@ -1780,23 +1780,24 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $buttonName = $this->controller->getButtonName(); $session = CRM_Core_Session::singleton(); - if ($this->_context === 'standalone') { - if ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/member/add', + if ($buttonName == $this->getButtonName('upload', 'new')) { + if ($this->_context === 'standalone') { + $url = CRM_Utils_System::url('civicrm/member/add', 'reset=1&action=add&context=standalone' - )); + ); } else { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', - "reset=1&cid={$this->_contactID}&selectedChild=member" - )); + $url = CRM_Utils_System::url('civicrm/contact/view/membership', + "reset=1&action=add&context=membership&cid={$this->_contactID}" + ); } } - elseif ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/membership', - "reset=1&action=add&context=membership&cid={$this->_contactID}" - )); + else { + $url = CRM_Utils_System::url('civicrm/contact/view', + "reset=1&cid={$this->_contactID}&selectedChild=member" + ); } + $session->replaceUserContext($url); } /** diff --git a/civicrm/CRM/Member/Form/MembershipConfig.php b/civicrm/CRM/Member/Form/MembershipConfig.php index e0b349730db93c6884ec6e07b2cc2ac8ea6f34d3..b1a8937256377c758db56c4e69bc225af5157a80 100644 --- a/civicrm/CRM/Member/Form/MembershipConfig.php +++ b/civicrm/CRM/Member/Form/MembershipConfig.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/MembershipType.php b/civicrm/CRM/Member/Form/MembershipType.php index 096aa786e084b346a8c273603fbe6f06c58f85eb..a5c3c7d06dc50f931126f63feb395072986f36ec 100644 --- a/civicrm/CRM/Member/Form/MembershipType.php +++ b/civicrm/CRM/Member/Form/MembershipType.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Member/Form/MembershipView.php b/civicrm/CRM/Member/Form/MembershipView.php index 6f4a71580e753abf07e9df3c4d89edb365e29b5d..348ea4b1eb69465a3cc6733d2509413f28967d01 100644 --- a/civicrm/CRM/Member/Form/MembershipView.php +++ b/civicrm/CRM/Member/Form/MembershipView.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Search.php b/civicrm/CRM/Member/Form/Search.php index b8bb22b8be266074238cb9c78a92cda5163d8cb1..fc0ba94de0b5726dfd686625ffaba02c2277f031 100644 --- a/civicrm/CRM/Member/Form/Search.php +++ b/civicrm/CRM/Member/Form/Search.php @@ -222,8 +222,6 @@ class CRM_Member_Form_Search extends CRM_Core_Form_Search { $this->_formValues["member_test"] = 0; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, $this->entityReferenceFields); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Member/Form/Task/Delete.php b/civicrm/CRM/Member/Form/Task/Delete.php index 3f613b1334300e1565673c2ed2c3cc0def25c091..e002a530173ef801a40f99d6b57d3d8a7a4fe613 100644 --- a/civicrm/CRM/Member/Form/Task/Delete.php +++ b/civicrm/CRM/Member/Form/Task/Delete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/Label.php b/civicrm/CRM/Member/Form/Task/Label.php index df6aa2d3b0aaa11cc269bee4d9b4769a6dfd870d..4ba5fc852500b641c09c8ae233b8c6b871b5e236 100644 --- a/civicrm/CRM/Member/Form/Task/Label.php +++ b/civicrm/CRM/Member/Form/Task/Label.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/PDFLetter.php b/civicrm/CRM/Member/Form/Task/PDFLetter.php index 22eb984b8b6634339e72a4d0880b8e5003cfe0d1..3d6019a476d13e6160216d15b381c402c4ad8558 100644 --- a/civicrm/CRM/Member/Form/Task/PDFLetter.php +++ b/civicrm/CRM/Member/Form/Task/PDFLetter.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/PickProfile.php b/civicrm/CRM/Member/Form/Task/PickProfile.php index 87b80cd01120893f7f899abfb7801054c60beb28..f8fe9db2454fa0b5aef5c701b3c779c709e41fb2 100644 --- a/civicrm/CRM/Member/Form/Task/PickProfile.php +++ b/civicrm/CRM/Member/Form/Task/PickProfile.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/Print.php b/civicrm/CRM/Member/Form/Task/Print.php index a3bf5545a1956ea2c2ad658991fcfeaee85d77f6..665561e3ee7c0d6eaecc3bfce1862896388684ea 100644 --- a/civicrm/CRM/Member/Form/Task/Print.php +++ b/civicrm/CRM/Member/Form/Task/Print.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/Result.php b/civicrm/CRM/Member/Form/Task/Result.php index 7eccff9add8fd9bc7d520c0551e5c7c2fb28f258..fbf17861238322680e249db6bc68333c2f22f367 100644 --- a/civicrm/CRM/Member/Form/Task/Result.php +++ b/civicrm/CRM/Member/Form/Task/Result.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php b/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php index a16c35f3a508efd288fceaac764da0e4df1c64b3..d73ffc549f0930fb556a4f7826fc2d2b6d5719a3 100644 --- a/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php +++ b/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Controller.php b/civicrm/CRM/Member/Import/Controller.php index 2696c5b71c9e6f0eb751cf5632ee5769199bf992..2a57c0a38190c1f638e8d9e3f707df817086f98c 100644 --- a/civicrm/CRM/Member/Import/Controller.php +++ b/civicrm/CRM/Member/Import/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Import_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Member/Import/Field.php b/civicrm/CRM/Member/Import/Field.php index 2f920277b8102d56d40ffe7619f061b40b8e8742..c1898d66e3273dc3fb67817e8e76b3e7ae6dcbee 100644 --- a/civicrm/CRM/Member/Import/Field.php +++ b/civicrm/CRM/Member/Import/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Import_Field { diff --git a/civicrm/CRM/Member/Import/Form/DataSource.php b/civicrm/CRM/Member/Import/Form/DataSource.php index 61d5daf090875c8f6570126f05b7f239e91405e8..d6913e93183365e840a000d8396ba49e536e0a6d 100644 --- a/civicrm/CRM/Member/Import/Form/DataSource.php +++ b/civicrm/CRM/Member/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -34,17 +32,10 @@ class CRM_Member_Import_Form_DataSource extends CRM_Import_Form_DataSource { public function buildQuickForm() { parent::buildQuickForm(); - $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Insert new Membership'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update existing Membership'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('Import mode') - ); + $this->addRadio('onDuplicate', ts('Import mode'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Insert new Membership'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update existing Membership'), + ]); $this->setDefaults([ 'onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP, ]); diff --git a/civicrm/CRM/Member/Import/Form/MapField.php b/civicrm/CRM/Member/Import/Form/MapField.php index e7c110692f8c87352cd46e66d70ec75c951d4b5d..aa1ec10b215767a6462b8c522db34d717a4cf99b 100644 --- a/civicrm/CRM/Member/Import/Form/MapField.php +++ b/civicrm/CRM/Member/Import/Form/MapField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Form/Preview.php b/civicrm/CRM/Member/Import/Form/Preview.php index d3c1f1f2f2133ba31efc09db4ffd8495b7f40e42..dbf1b1ec4e321f66ba5e39bfd4e6a568241c59e3 100644 --- a/civicrm/CRM/Member/Import/Form/Preview.php +++ b/civicrm/CRM/Member/Import/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Form/Summary.php b/civicrm/CRM/Member/Import/Form/Summary.php index aac40096567cb620bf24c861a1f8dc371b183c2f..ae20c68144900c178fda41ff5f07de59b5ee6956 100644 --- a/civicrm/CRM/Member/Import/Form/Summary.php +++ b/civicrm/CRM/Member/Import/Form/Summary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Parser.php b/civicrm/CRM/Member/Import/Parser.php index 7ad2f3f4cf80f96f24ded4a0fa6fa05ecbce0dc1..045d336a847ebc3d59406fd19a9a7d8ebf010343 100644 --- a/civicrm/CRM/Member/Import/Parser.php +++ b/civicrm/CRM/Member/Import/Parser.php @@ -13,8 +13,8 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ * + * Class CRM_Member_Import_Parser */ abstract class CRM_Member_Import_Parser extends CRM_Import_Parser { diff --git a/civicrm/CRM/Member/Import/Parser/Membership.php b/civicrm/CRM/Member/Import/Parser/Membership.php index b43b507705f78bd47e16913f6ec49990093e043b..50e75e19ee31a7f0fb1525daab4d05bac0ad5872 100644 --- a/civicrm/CRM/Member/Import/Parser/Membership.php +++ b/civicrm/CRM/Member/Import/Parser/Membership.php @@ -125,7 +125,7 @@ class CRM_Member_Import_Parser_Membership extends CRM_Member_Import_Parser { */ public function summary(&$values) { $erroneousField = NULL; - $response = $this->setActiveFieldValues($values, $erroneousField); + $this->setActiveFieldValues($values, $erroneousField); $errorRequired = FALSE; @@ -268,7 +268,7 @@ class CRM_Member_Import_Parser_Membership extends CRM_Member_Import_Parser { } $session = CRM_Core_Session::singleton(); - $dateType = $session->get('dateTypes'); + $dateType = CRM_Core_Session::singleton()->get('dateTypes'); $formatted = []; $customDataType = !empty($params['contact_type']) ? $params['contact_type'] : 'Membership'; $customFields = CRM_Core_BAO_CustomField::getFields($customDataType); diff --git a/civicrm/CRM/Member/Info.php b/civicrm/CRM/Member/Info.php index 6264d40a563aabdb166164f6f1ea46a788f4aef1..653bff34c55a1b331a1ef6a759324674b0fe89ee 100644 --- a/civicrm/CRM/Member/Info.php +++ b/civicrm/CRM/Member/Info.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Member/Page/AJAX.php b/civicrm/CRM/Member/Page/AJAX.php index 85dd6541667593cd975df8e24e5bd6d1e8ee21ec..c9e14a83a948bdcf0546ca872bb53ead9e67945d 100644 --- a/civicrm/CRM/Member/Page/AJAX.php +++ b/civicrm/CRM/Member/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/DashBoard.php b/civicrm/CRM/Member/Page/DashBoard.php index 62dcf8faeb3eda3d1790af09208e3a5d7df4eecb..353ceeb75a54b081a500eecef21cb486c908a4e4 100644 --- a/civicrm/CRM/Member/Page/DashBoard.php +++ b/civicrm/CRM/Member/Page/DashBoard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/MembershipStatus.php b/civicrm/CRM/Member/Page/MembershipStatus.php index 39a895c3b2c7f985030a1c15de3b630474d6a1f8..6800dfa905978f69b92673af98bcfac67a392f8b 100644 --- a/civicrm/CRM/Member/Page/MembershipStatus.php +++ b/civicrm/CRM/Member/Page/MembershipStatus.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/MembershipType.php b/civicrm/CRM/Member/Page/MembershipType.php index 1012cd28c64b058b617411d26d673889b5ad27bc..8ef9f712c66dac89ce4d1b2eeca7d8c5a1d5de1a 100644 --- a/civicrm/CRM/Member/Page/MembershipType.php +++ b/civicrm/CRM/Member/Page/MembershipType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/Tab.php b/civicrm/CRM/Member/Page/Tab.php index 6818490f1784aa640fea28f2aa75d84234cb15e1..ec2300d0ba5d783486b7fc675551eda146760f80 100644 --- a/civicrm/CRM/Member/Page/Tab.php +++ b/civicrm/CRM/Member/Page/Tab.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Page_Tab extends CRM_Core_Page { diff --git a/civicrm/CRM/Member/Page/UserDashboard.php b/civicrm/CRM/Member/Page/UserDashboard.php index 7ac24c15ff921976d11cd86a0e919c53d2ceed5f..3fcb435fc17e48a0ccb1b5be46b9293b289d7691 100644 --- a/civicrm/CRM/Member/Page/UserDashboard.php +++ b/civicrm/CRM/Member/Page/UserDashboard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/PseudoConstant.php b/civicrm/CRM/Member/PseudoConstant.php index 455ff98c9e09c0efe6695bea852a3835ade91e2f..c46b3998d4c20ff4bc20245c152621b2ec63fa9e 100644 --- a/civicrm/CRM/Member/PseudoConstant.php +++ b/civicrm/CRM/Member/PseudoConstant.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/StateMachine/Search.php b/civicrm/CRM/Member/StateMachine/Search.php index 8d3ea7a3c3e101f3e6badfb926cc26461a0defaa..dc05d7f435c5200decb35c2eea83804942dbcf50 100644 --- a/civicrm/CRM/Member/StateMachine/Search.php +++ b/civicrm/CRM/Member/StateMachine/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_StateMachine_Search extends CRM_Core_StateMachine { diff --git a/civicrm/CRM/Member/StatusOverrideTypes.php b/civicrm/CRM/Member/StatusOverrideTypes.php index 844b0aef50ea54ebd11e0847ba8961518c2d81ed..57451fafa1e0ef2c6df44f7806eb59b638c2e3b7 100644 --- a/civicrm/CRM/Member/StatusOverrideTypes.php +++ b/civicrm/CRM/Member/StatusOverrideTypes.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Member_StatusOverrideTypes { /** diff --git a/civicrm/CRM/Member/Task.php b/civicrm/CRM/Member/Task.php index b042abe75a38ee53c8b13a459f9138962a3c5fff..661f2a72fc00f3b1a29b7519b331edbdc245f1d2 100644 --- a/civicrm/CRM/Member/Task.php +++ b/civicrm/CRM/Member/Task.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Note/Form/Note.php b/civicrm/CRM/Note/Form/Note.php index 4ebc846bc18718f1564c6970f6c29a8da0b905da..574bb9ecebb336081eb4c709d3f039b951180ae0 100644 --- a/civicrm/CRM/Note/Form/Note.php +++ b/civicrm/CRM/Note/Form/Note.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index 2ea752cdede29a1cde6b3bfa113d275182f35df7..e71609eccd31abec138687a9913c977ea0fdd0b3 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -464,10 +464,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"] ); $extraOption = ['onclick' => "return pcpAnonymous( );"]; - $elements = []; - $elements[] = &$page->createElement('radio', NULL, '', ts('Include my name and message'), 0, $extraOption); - $elements[] = &$page->createElement('radio', NULL, '', ts('List my support anonymously'), 1, $extraOption); - $page->addGroup($elements, 'pcp_is_anonymous', NULL, ' '); + $page->addRadio('pcp_is_anonymous', '', [ts('Include my name and message'), ts('List my support anonymously')], [], ' ', FALSE, [$extraOption, $extraOption]); $page->_defaults['pcp_is_anonymous'] = 0; $page->add('text', 'pcp_roll_nickname', ts('Name'), ['maxlength' => 30]); @@ -664,7 +661,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; list($domainEmailName, $domainEmailAddress) = CRM_Core_BAO_Domain::getNameAndEmail(); if (!$domainEmailAddress || $domainEmailAddress == 'info@EXAMPLE.ORG') { - $fixUrl = CRM_Utils_System::url("civicrm/admin/domain", 'action=update&reset=1'); + $fixUrl = CRM_Utils_System::url('civicrm/admin/options/from_email_address', 'reset=1'); throw new CRM_Core_Exception(ts('The site administrator needs to enter a valid \'FROM Email Address\' in <a href="%1">Administer CiviCRM » Communications » FROM Email Addresses</a>. The email address used may need to be a valid mail account with your email service provider.', [1 => $fixUrl])); } diff --git a/civicrm/CRM/PCP/Controller/PCP.php b/civicrm/CRM/PCP/Controller/PCP.php index 62339c1bc26fe4a1b198c484fd7345ce7c5f9619..9e15499b16c69d1b50f473ed787ddc6b2e8012fe 100644 --- a/civicrm/CRM/PCP/Controller/PCP.php +++ b/civicrm/CRM/PCP/Controller/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/Contribute.php b/civicrm/CRM/PCP/Form/Contribute.php index 45d6a4b0263b713c8a8bbcf0f5e6eb98ace67bad..8c5b82c7d906160e01358ee98867740dcb5a820e 100644 --- a/civicrm/CRM/PCP/Form/Contribute.php +++ b/civicrm/CRM/PCP/Form/Contribute.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php index 004282d38358ce29fb34abf0b365bb7931f8ded9..265ee1c623ac7dd5c4839b83de2c2d3fc09ca3fd 100644 --- a/civicrm/CRM/PCP/Form/Event.php +++ b/civicrm/CRM/PCP/Form/Event.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/PCP.php b/civicrm/CRM/PCP/Form/PCP.php index d9fbcb7c697525037e0b9e015da0abe00694989e..ca2fb164279ca422e1984a87ed5701fe51551d01 100644 --- a/civicrm/CRM/PCP/Form/PCP.php +++ b/civicrm/CRM/PCP/Form/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/PCPAccount.php b/civicrm/CRM/PCP/Form/PCPAccount.php index 7c96a629cfa6521d100b6d6a64d6b03983a1ed1e..70d82bb2c36b10b2fa20b9e61f78c74716780aba 100644 --- a/civicrm/CRM/PCP/Form/PCPAccount.php +++ b/civicrm/CRM/PCP/Form/PCPAccount.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Page/PCP.php b/civicrm/CRM/PCP/Page/PCP.php index c6f9d04bd3b84905b610625224057005465b4105..3150662b6377a07973a10740d8cc0f10b68808fa 100644 --- a/civicrm/CRM/PCP/Page/PCP.php +++ b/civicrm/CRM/PCP/Page/PCP.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/PCP/Page/PCPInfo.php b/civicrm/CRM/PCP/Page/PCPInfo.php index de831f3b2479668153b5f251ffdf0901e502bfd1..437ef4d968e9ff62da9c30ef36dc5633b8a84101 100644 --- a/civicrm/CRM/PCP/Page/PCPInfo.php +++ b/civicrm/CRM/PCP/Page/PCPInfo.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/StateMachine/PCP.php b/civicrm/CRM/PCP/StateMachine/PCP.php index 6f500bea174bfa33b1a55df3448e74034baa94fc..d3b6ba963080a0cb6a87e151e7b369d471090e33 100644 --- a/civicrm/CRM/PCP/StateMachine/PCP.php +++ b/civicrm/CRM/PCP/StateMachine/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php index c26c39e2d836bcc3beb0614b70c22c1d85a28f9d..b94b20755af5c0f7a12ce73bdaa4305cdbc5f7a1 100644 --- a/civicrm/CRM/Price/BAO/LineItem.php +++ b/civicrm/CRM/Price/BAO/LineItem.php @@ -186,8 +186,8 @@ WHERE li.contribution_id = %1"; */ public static function getLineItems($entityId, $entity = 'participant', $isQuick = FALSE, $isQtyZero = TRUE, $relatedEntity = FALSE) { $whereClause = $fromClause = NULL; - $selectClause = " - SELECT li.id, + $selectClause = ' + SELECT li.id, li.label, li.contribution_id, li.qty, @@ -205,19 +205,19 @@ WHERE li.contribution_id = %1"; li.price_field_value_id, li.financial_type_id, li.tax_amount, - pfv.description"; + pfv.description'; - $condition = "li.entity_id = %2.id AND li.entity_table = 'civicrm_%2'"; + $condition = "li.entity_id = civicrm_%2.id AND li.entity_table = 'civicrm_%2'"; if ($relatedEntity) { - $condition = "li.contribution_id = %2.id "; + $condition = 'li.contribution_id = civicrm_%2.id '; } $fromClause = " - FROM civicrm_%2 as %2 + FROM civicrm_%2 LEFT JOIN civicrm_line_item li ON ({$condition}) - LEFT JOIN civicrm_price_field_value pfv ON ( pfv.id = li.price_field_value_id ) + LEFT JOIN civicrm_price_field_value pfv ON (pfv.id = li.price_field_value_id) LEFT JOIN civicrm_price_field pf ON (pf.id = li.price_field_id )"; - $whereClause = " WHERE %2.id = %1"; + $whereClause = " WHERE civicrm_%2.id = %1"; $orderByClause = " ORDER BY pf.weight, pfv.weight"; if ($isQuick) { diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index a6e2167d582426b335ea2b750c3ec3338253134b..d2c1643071a2aa24f8b65f24e6ff20f2071a0a2d 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -862,6 +862,7 @@ WHERE id = %1"; } } } + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetId; $form->assign('priceSet', $form->_priceSet); $component = 'contribution'; diff --git a/civicrm/CRM/Price/Form/DeleteField.php b/civicrm/CRM/Price/Form/DeleteField.php index 319f38e8a10a6c71b9ec2d49049a098fa768799b..b6a961abb86e94b94fd960a12fc832ac6bfb460c 100644 --- a/civicrm/CRM/Price/Form/DeleteField.php +++ b/civicrm/CRM/Price/Form/DeleteField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Form/Option.php b/civicrm/CRM/Price/Form/Option.php index 750bfb7f99cc29db6a176e1275a2475a2dc1d9fb..e5f7fc1aaac8bd9a1688e819f10a8492060a58e9 100644 --- a/civicrm/CRM/Price/Form/Option.php +++ b/civicrm/CRM/Price/Form/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Form/Preview.php b/civicrm/CRM/Price/Form/Preview.php index 35f71fa8446aefb7e811e532b07901a11212358b..c4e87950ae943ecdb7252028b1b0680634f64e66 100644 --- a/civicrm/CRM/Price/Form/Preview.php +++ b/civicrm/CRM/Price/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Page/Field.php b/civicrm/CRM/Price/Page/Field.php index 20c55449a6c60100850ee804f6a67fe8c8639b56..d59d9a0eaec85a4e1978600d8b89dd48b3ebb2ff 100644 --- a/civicrm/CRM/Price/Page/Field.php +++ b/civicrm/CRM/Price/Page/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Page/Option.php b/civicrm/CRM/Price/Page/Option.php index a8ea081f5004055436705270132fab44e85273b8..b3b2f7464a1a55dc8e8ccd617a626e1a1e92f31d 100644 --- a/civicrm/CRM/Price/Page/Option.php +++ b/civicrm/CRM/Price/Page/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Page/Set.php b/civicrm/CRM/Price/Page/Set.php index 197d366e7aa4b8a5148d8f134f4ba7ba00811702..340b2054535eaff4a973092f79afd5bb99e4576b 100644 --- a/civicrm/CRM/Price/Page/Set.php +++ b/civicrm/CRM/Price/Page/Set.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php index 31fe2d96bd9e91e17ac37301154ad6b16e947947..8d8f46cd881fd97464027f1e7475434d0a3c5e5a 100644 --- a/civicrm/CRM/Profile/Form.php +++ b/civicrm/CRM/Profile/Form.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Form/Dynamic.php b/civicrm/CRM/Profile/Form/Dynamic.php index db4424ef72af9a13175179fefcdc030b9abfcf00..91c98e3f269f2a560e85db847c395515334040f4 100644 --- a/civicrm/CRM/Profile/Form/Dynamic.php +++ b/civicrm/CRM/Profile/Form/Dynamic.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Form/Edit.php b/civicrm/CRM/Profile/Form/Edit.php index e041c1c1f043ffda0524562900d35b2e1d3cd6d8..7564dc37fc280614971c140e895fd706ebbcc6bf 100644 --- a/civicrm/CRM/Profile/Form/Edit.php +++ b/civicrm/CRM/Profile/Form/Edit.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Page/Listings.php b/civicrm/CRM/Profile/Page/Listings.php index 963d59b27fc8e26247728904b5886aa907e702df..c521848e1cf74eacd51148fe9f20241bc815ece2 100644 --- a/civicrm/CRM/Profile/Page/Listings.php +++ b/civicrm/CRM/Profile/Page/Listings.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php index e9c5e56995bcf9b84e7fb8cb28f1ddbf7a5f0391..1311d85c3ee6a33a67358cbe73c878af05862d57 100644 --- a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Profile/Page/Router.php b/civicrm/CRM/Profile/Page/Router.php index bf439d24f8dbf4229eb94893e5abcefe7ec8dbb2..3dbd8491f03a9877de42affd06ab3a68426b237e 100644 --- a/civicrm/CRM/Profile/Page/Router.php +++ b/civicrm/CRM/Profile/Page/Router.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Page/View.php b/civicrm/CRM/Profile/Page/View.php index e23fada8bd1d7ba2536476cccec86587a01ec5b0..54f563d4e9e441a930ab64a98fb5b09946217434 100644 --- a/civicrm/CRM/Profile/Page/View.php +++ b/civicrm/CRM/Profile/Page/View.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Selector/Listings.php b/civicrm/CRM/Profile/Selector/Listings.php index 8c7cd19959919d42d88b95d54a06faa15e066570..b53a723b4fef86a302b06d233b328d5041a23533 100644 --- a/civicrm/CRM/Profile/Selector/Listings.php +++ b/civicrm/CRM/Profile/Selector/Listings.php @@ -491,7 +491,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR if ($editLink && ($mask & CRM_Core_Permission::EDIT)) { // do not allow edit for anon users in joomla frontend, CRM-4668 $config = CRM_Core_Config::singleton(); - if (!$config->userFrameworkFrontend || CRM_Core_Session::singleton()->getLoggedInContactID()) { + if (!$config->userFrameworkFrontend || CRM_Core_Session::getLoggedInContactID()) { $this->_editLink = TRUE; } } diff --git a/civicrm/CRM/Queue/BAO/QueueItem.php b/civicrm/CRM/Queue/BAO/QueueItem.php index 47b0cc233ca28b20a3e1dc5ad76710ca7ba95517..3b3f13846935239797316da51fb3380ac7c0199f 100644 --- a/civicrm/CRM/Queue/BAO/QueueItem.php +++ b/civicrm/CRM/Queue/BAO/QueueItem.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Queue/Menu.php b/civicrm/CRM/Queue/Menu.php index 443b9d7b7f358438f4e9644d5172b4a1b4e61dcc..b3883e569dda205ce61869a81309c2a6586e844f 100644 --- a/civicrm/CRM/Queue/Menu.php +++ b/civicrm/CRM/Queue/Menu.php @@ -15,8 +15,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ require_once 'CRM/Core/I18n.php'; diff --git a/civicrm/CRM/Report/BAO/Hook.php b/civicrm/CRM/Report/BAO/Hook.php index b2be39e2c69909ca3427f7ef64ead8fa0d4d2024..d922a5d68973b21e50e3048d5c0ae6c97b0695f1 100644 --- a/civicrm/CRM/Report/BAO/Hook.php +++ b/civicrm/CRM/Report/BAO/Hook.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Report/BAO/HookInterface.php b/civicrm/CRM/Report/BAO/HookInterface.php index ff054e73aa88e54fd1b550b912985b6ccf97a856..69f4093a59ed7663c01a1095cc449adde3504f02 100644 --- a/civicrm/CRM/Report/BAO/HookInterface.php +++ b/civicrm/CRM/Report/BAO/HookInterface.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 473356912470882735db7964352d705c8fe713e1..d202b845611e96f7c86c13feee7c0357f8c91fd4 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -139,11 +139,6 @@ class CRM_Report_Form extends CRM_Core_Form { */ protected $_groupFilter = FALSE; - /** - * Required for civiexportexcel. - */ - public $supportsExportExcel = TRUE; - /** * Has the report been optimised for group filtering. * @@ -158,9 +153,8 @@ class CRM_Report_Form extends CRM_Core_Form { * separately marked every class with a groupFilter in the hope that will trigger * people to fix them as they touch them. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; @@ -1118,6 +1112,37 @@ class CRM_Report_Form extends CRM_Core_Form { return $this->_id; } + /** + * Getter for _outputMode + * + * Note you can implement hook_civicrm_alterReportVar('actions', ...) + * which indirectly allows setting _outputMode if the user chooses + * your action. + * + * @return string + */ + public function getOutputMode():string { + return $this->_outputMode; + } + + /** + * Getter for report header form field value + * + * @return string + */ + public function getReportHeader():string { + return $this->_formValues['report_header'] ?? ''; + } + + /** + * Getter for report footer form field value + * + * @return string + */ + public function getReportFooter():string { + return $this->_formValues['report_footer'] ?? ''; + } + /** * Setter for $_force. * @@ -1440,7 +1465,7 @@ class CRM_Report_Form extends CRM_Core_Form { if (!CRM_Core_Permission::check('view report sql')) { return; } - $ignored_output_modes = ['pdf', 'csv', 'print', 'excel2007']; + $ignored_output_modes = ['pdf', 'csv', 'print']; if (in_array($this->_outputMode, $ignored_output_modes)) { return; } @@ -1686,6 +1711,8 @@ class CRM_Report_Form extends CRM_Core_Form { unset($actions['report_instance.csv']); } + CRM_Utils_Hook::alterReportVar('actions', $actions, $this); + return $actions; } @@ -2844,32 +2871,35 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND CRM_Core_DAO::$_nullObject ); - $this->assign('printOnly', $this->printOnly); - - if ($this->_outputMode == 'print' || - ($this->_sendmail && !$this->_outputMode) - ) { - $this->printOnly = TRUE; - $this->addPaging = FALSE; + if ($this->_sendmail && !$this->_outputMode) { + // If we're here from the mail_report job, then the default there gets + // set to pdf before we get here, but if we're somehow here and sending + // by email and don't have a format set, then use print. + // @todo Is this on purpose - why would they be different defaults? $this->_outputMode = 'print'; + } + + // _outputMode means multiple things and can cover export to file formats, + // like csv, or actions with no output, like save. So this will only set + // a handler if it's one of the former. But it's also possible we have a + // really interesting handler out there. But the point is we don't need to + // know, just to know that a handler doesn't always get set by this call. + $this->setOutputHandler(); + + if (!empty($this->outputHandler)) { if ($this->_sendmail) { + // If we're sending by email these are the only options that make + // sense. + $this->printOnly = TRUE; + $this->addPaging = FALSE; $this->_absoluteUrl = TRUE; } - } - elseif ($this->_outputMode == 'pdf') { - $this->printOnly = TRUE; - $this->addPaging = FALSE; - $this->_absoluteUrl = TRUE; - } - elseif ($this->_outputMode == 'csv') { - $this->printOnly = TRUE; - $this->_absoluteUrl = TRUE; - $this->addPaging = FALSE; - } - elseif ($this->_outputMode == 'excel2007') { - $printOnly = TRUE; - $this->_absoluteUrl = TRUE; - $this->addPaging = FALSE; + else { + // otherwise ask the handler + $this->printOnly = $this->outputHandler->isPrintOnly(); + $this->addPaging = $this->outputHandler->isAddPaging(); + $this->_absoluteUrl = $this->outputHandler->isAbsoluteUrl(); + } } elseif ($this->_outputMode == 'copy' && $this->_criteriaForm) { $this->_createNew = TRUE; @@ -3416,111 +3446,38 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND */ public function endPostProcess(&$rows = NULL) { $this->assign('report_class', get_class($this)); + + // This is used by unit tests, where _outputMode is intentionally blank. + // Is there a reason it couldn't just always do this? It effectively does + // the same thing anyway by assigning it to the template (in + // doTemplateAssignment()). if ($this->_storeResultSet) { $this->_resultSet = $rows; } - if ($this->_outputMode == 'print' || - $this->_outputMode == 'pdf' || - $this->_sendmail - ) { - - $content = $this->compileContent(); - $url = CRM_Utils_System::url("civicrm/report/instance/{$this->_id}", - "reset=1", TRUE - ); - + // Add contacts to group + if ($this->_outputMode == 'group') { + $group = $this->_params['groups']; + $this->add2group($group); + } + else { if ($this->_sendmail) { - $config = CRM_Core_Config::singleton(); - $attachments = []; - - if ($this->_outputMode == 'csv') { - $content - = $this->_formValues['report_header'] . '<p>' . ts('Report URL') . - ": {$url}</p>" . '<p>' . - ts('The report is attached as a CSV file.') . '</p>' . - $this->_formValues['report_footer']; - - $csvFullFilename = $config->templateCompileDir . - CRM_Utils_File::makeFileName('CiviReport.csv'); - $csvContent = CRM_Report_Utils_Report::makeCsv($this, $rows); - file_put_contents($csvFullFilename, $csvContent); - $attachments[] = [ - 'fullPath' => $csvFullFilename, - 'mime_type' => 'text/csv', - 'cleanName' => 'CiviReport.csv', - ]; - } - if ($this->_outputMode == 'pdf') { - // generate PDF content - $pdfFullFilename = $config->templateCompileDir . - CRM_Utils_File::makeFileName('CiviReport.pdf'); - file_put_contents($pdfFullFilename, - CRM_Utils_PDF_Utils::html2pdf($content, "CiviReport.pdf", - TRUE, ['orientation' => 'landscape'] - ) - ); - // generate Email Content - $content - = $this->_formValues['report_header'] . '<p>' . ts('Report URL') . - ": {$url}</p>" . '<p>' . - ts('The report is attached as a PDF file.') . '</p>' . - $this->_formValues['report_footer']; - - $attachments[] = [ - 'fullPath' => $pdfFullFilename, - 'mime_type' => 'application/pdf', - 'cleanName' => 'CiviReport.pdf', - ]; - } - - if (CRM_Report_Utils_Report::mailReport($content, $this->_id, - $this->_outputMode, $attachments - ) - ) { - CRM_Core_Session::setStatus(ts("Report mail has been sent."), ts('Sent'), 'success'); - } - else { - CRM_Core_Session::setStatus(ts("Report mail could not be sent."), ts('Mail Error'), 'error'); - } - return; + $this->sendEmail(); } - elseif ($this->_outputMode == 'print') { - echo $content; - } - else { - // Nb. Once upon a time we used a package called Open Flash Charts to - // draw charts, and we had a feature whereby a browser could send the - // server a PNG version of the chart, which could then be included in a - // PDF by including <img> tags in the HTML for the conversion below. - // - // This feature stopped working when browsers stopped supporting Flash, - // and although we have a different client-side charting library in - // place, we decided not to reimplement the (rather convoluted) - // browser-sending-rendered-chart-to-server process. - // - // If this feature is required in future we should find a better way to - // render charts on the server side, e.g. server-created SVG. - CRM_Utils_PDF_Utils::html2pdf($content, "CiviReport.pdf", FALSE, ['orientation' => 'landscape']); + elseif (!empty($this->outputHandler)) { + $this->outputHandler->download(); + CRM_Utils_System::civiExit(); } - CRM_Utils_System::civiExit(); - } - elseif ($this->_outputMode == 'csv') { - CRM_Report_Utils_Report::export2csv($this, $rows); - } - elseif ($this->_outputMode == 'excel2007') { - CRM_CiviExportExcel_Utils_Report::export2excel2007($this, $rows); - } - elseif ($this->_outputMode == 'group') { - $group = $this->_params['groups']; - $this->add2group($group); + // else we don't need to do anything here since it must have been + // outputMode=save or something like that } } /** * Set store result set indicator to TRUE. * - * @todo explain what this does + * This is used by unit tests, along with getResultSet(), to get just + * the output rows unformatted. */ public function storeResultSet() { $this->_storeResultSet = TRUE; @@ -4338,13 +4295,12 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a } if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $filterName => $filter) { + $filterOp = $this->_params["{$filterName}_op"] ?? ''; if ((isset($this->_params["{$filterName}_value"]) && !CRM_Utils_System::isNull($this->_params["{$filterName}_value"])) || !empty($this->_params["{$filterName}_relative"]) - || CRM_Utils_Array::value("{$filterName}_op", $this->_params) == - 'nll' - || CRM_Utils_Array::value("{$filterName}_op", $this->_params) == - 'nnll' + || $filterOp === 'nll' + || $filterOp === 'nnll' ) { $this->_selectedTables[] = $tableName; $this->filteredTables[] = $tableName; @@ -5998,4 +5954,58 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a return ''; } + /** + * Retrieve a suitable object from the factory depending on the report + * parameters, which typically might just be dependent on outputMode. + * + * If there is no suitable output handler, e.g. if outputMode is "copy", + * then this sets it to NULL. + */ + public function setOutputHandler() { + $this->outputHandler = \Civi\Report\OutputHandlerFactory::singleton()->create($this); + } + + /** + * Send report by email + */ + public function sendEmail() { + if (empty($this->outputHandler)) { + // It's possible to end up here with outputMode unset, so we use + // the "print" handler which was the default before, i.e. include + // it as html in the body. + $oldOutputMode = $this->_outputMode ?? NULL; + $this->_outputMode = 'print'; + $this->setOutputHandler(); + $this->_outputMode = $oldOutputMode; + } + + $mailBody = $this->outputHandler->getMailBody(); + + $attachments = []; + $attachmentFileName = $this->outputHandler->getFileName(); + // It's not always in the form of an attachment, e.g. for 'print' the + // output ends up in $mailBody above. + if ($attachmentFileName) { + $fullFilename = CRM_Core_Config::singleton()->templateCompileDir . CRM_Utils_File::makeFileName($attachmentFileName); + file_put_contents($fullFilename, $this->outputHandler->getOutputString()); + $attachments[] = [ + 'fullPath' => $fullFilename, + 'mime_type' => $this->outputHandler->getMimeType(), + 'cleanName' => $attachmentFileName, + 'charset' => $this->outputHandler->getCharset(), + ]; + } + + // Send the email + // @todo outputMode doesn't seem to get used by mailReport, which is good + // since it shouldn't have any outputMode-related `if` statements in it. + // Someday could remove the param from the function call. + if (CRM_Report_Utils_Report::mailReport($mailBody, $this->_id, $this->_outputMode, $attachments)) { + CRM_Core_Session::setStatus(ts("Report mail has been sent."), ts('Sent'), 'success'); + } + else { + CRM_Core_Session::setStatus(ts("Report mail could not be sent."), ts('Mail Error'), 'error'); + } + } + } diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php index e0c5b6408eeba56a61a08b78eada9c026ad5d991..6d430a5a2cdf9e6e2d7f35e27499b74f8b1753fb 100644 --- a/civicrm/CRM/Report/Form/Activity.php +++ b/civicrm/CRM/Report/Form/Activity.php @@ -28,9 +28,8 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/ActivitySummary.php b/civicrm/CRM/Report/Form/ActivitySummary.php index 0e7e780f91594748c8aa1457fb620af43627919c..fe5df2864992e3af5b983f1ea9d293c1eb630dfe 100644 --- a/civicrm/CRM/Report/Form/ActivitySummary.php +++ b/civicrm/CRM/Report/Form/ActivitySummary.php @@ -28,9 +28,8 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php index c3f9967b4ecb89a6ace2931b3d6f952a916f3b90..5b43d96f553fc5da5b3e7d75a1be7cdbdaca8b34 100644 --- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Case/Demographics.php b/civicrm/CRM/Report/Form/Case/Demographics.php index 6c9f105f859634a7ceeda9d6157dde91f304cbca..99346e02e79ea0239e91ec2cf423f48920ef85c6 100644 --- a/civicrm/CRM/Report/Form/Case/Demographics.php +++ b/civicrm/CRM/Report/Form/Case/Demographics.php @@ -28,9 +28,8 @@ class CRM_Report_Form_Case_Demographics extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php index b241faaac0b798ba07868aba46d2c6b8ec07bae7..3cb0fcfbd9767bd08bdb6b5436598a883af8e30b 100644 --- a/civicrm/CRM/Report/Form/Case/Detail.php +++ b/civicrm/CRM/Report/Form/Case/Detail.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Case_Detail extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php index 5a2479b14b6416cab035de5057880b81049fa1c0..7ad996b7a7ce68575eeef3fe657fb306d8a4c717 100644 --- a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php @@ -23,9 +23,8 @@ class CRM_Report_Form_Contact_CurrentEmployer extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php index edbff9f3e92c99c68e2bd023b79a1a6f9590419f..47c98364f3eb49471041e535e2db7dc1b73f5694 100644 --- a/civicrm/CRM/Report/Form/Contact/Detail.php +++ b/civicrm/CRM/Report/Form/Contact/Detail.php @@ -33,9 +33,8 @@ class CRM_Report_Form_Contact_Detail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contact/LoggingDetail.php b/civicrm/CRM/Report/Form/Contact/LoggingDetail.php index 67f50ed51ef9ee02e28b65c909ff9c773ba2fb9d..38e2e66aa821ee6ce6f5e3dd882e68003e69a347 100644 --- a/civicrm/CRM/Report/Form/Contact/LoggingDetail.php +++ b/civicrm/CRM/Report/Form/Contact/LoggingDetail.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contact_LoggingDetail extends CRM_Logging_ReportDetail { diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index d6873e340881ebd4265e286cd6e3113ebfe4814a..18ec0c724179cfcb1517e753c168aec8a408cd18 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { @@ -35,9 +33,8 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; @@ -250,6 +247,7 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { ], 'is_active' => [ 'title' => ts('Is active?'), + 'type' => CRM_Utils_Type::T_BOOLEAN, ], 'relationship_id' => [ 'title' => ts('Rel ID'), @@ -772,8 +770,6 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $entryFound = TRUE; } - $rows[$rowNum]['civicrm_relationship_is_active'] = $row['civicrm_relationship_is_active'] ? ts('Yes') : ''; - // skip looking further in rows, if first row itself doesn't // have the column we need if (!$entryFound) { diff --git a/civicrm/CRM/Report/Form/Contact/Summary.php b/civicrm/CRM/Report/Form/Contact/Summary.php index c920b08f7df63c87b18fbf8608e4096753ff41d6..9261fc6d082870589f8f8b48b53203bc7c1cfb0f 100644 --- a/civicrm/CRM/Report/Form/Contact/Summary.php +++ b/civicrm/CRM/Report/Form/Contact/Summary.php @@ -38,9 +38,8 @@ class CRM_Report_Form_Contact_Summary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php b/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php index ebec5bd4233362474e65205817845708e01bddf0..f70c7d29d190675a4d63921b46c48b481ec0ad3d 100644 --- a/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php +++ b/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php @@ -32,9 +32,8 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php b/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php index edfb9144ab5a0b60d164a9ea762c9856b4b048fb..1ecd40cacac47c46d07929e043144d205c373d3f 100644 --- a/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php +++ b/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_DeferredRevenue extends CRM_Report_Form { @@ -291,20 +289,20 @@ class CRM_Report_Form_Contribute_DeferredRevenue extends CRM_Report_Form { AND entity_financial_trxn_item.entity_table = 'civicrm_financial_item' INNER JOIN civicrm_financial_trxn {$this->_aliases['civicrm_financial_trxn_1']} ON {$this->_aliases['civicrm_financial_trxn_1']}.to_financial_account_id = {$this->_aliases['civicrm_financial_account']}.id - AND {$this->_aliases['civicrm_financial_trxn_1']}.id = entity_financial_trxn_item.financial_trxn_id + AND {$this->_aliases['civicrm_financial_trxn_1']}.id = entity_financial_trxn_item.financial_trxn_id INNER JOIN civicrm_entity_financial_trxn financial_trxn_contribution ON financial_trxn_contribution.financial_trxn_id = {$this->_aliases['civicrm_financial_trxn_1']}.id AND financial_trxn_contribution.entity_table = 'civicrm_contribution' INNER JOIN civicrm_entity_financial_trxn entity_financial_trxn_contribution ON entity_financial_trxn_contribution.entity_id = {$this->_aliases['civicrm_financial_item']}.id - AND entity_financial_trxn_contribution.entity_table = 'civicrm_financial_item' + AND entity_financial_trxn_contribution.entity_table = 'civicrm_financial_item' INNER JOIN civicrm_financial_trxn {$this->_aliases['civicrm_financial_trxn']} ON {$this->_aliases['civicrm_financial_trxn']}.id = entity_financial_trxn_contribution.financial_trxn_id AND ({$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id NOT IN (" . implode(',', array_keys($this->_deferredFinancialAccount)) . ") OR {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NULL) INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON {$this->_aliases['civicrm_contribution']}.id = financial_trxn_contribution.entity_id - INNER JOIN civicrm_line_item line_item + INNER JOIN civicrm_line_item line_item ON line_item.contribution_id = {$this->_aliases['civicrm_contribution']}.id AND line_item.financial_type_id = entity_financial_account_deferred.entity_id LEFT JOIN civicrm_participant {$this->_aliases['civicrm_participant']} diff --git a/civicrm/CRM/Report/Form/Contribute/Detail.php b/civicrm/CRM/Report/Form/Contribute/Detail.php index 73c1369b3a9f06be969dd9d0f954563ba163a136..14b5facbd9cbc964a44b6de8ae196972034162ce 100644 --- a/civicrm/CRM/Report/Form/Contribute/Detail.php +++ b/civicrm/CRM/Report/Form/Contribute/Detail.php @@ -59,9 +59,8 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; @@ -411,6 +410,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { * @param $rows * * @return array + * @throws \CRM_Core_Exception */ public function statistics(&$rows) { $statistics = parent::statistics($rows); @@ -418,17 +418,21 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { $totalAmount = $average = $fees = $net = []; $count = 0; $select = " - SELECT COUNT({$this->_aliases['civicrm_contribution']}.total_amount ) as count, - SUM( {$this->_aliases['civicrm_contribution']}.total_amount ) as amount, - ROUND(AVG({$this->_aliases['civicrm_contribution']}.total_amount), 2) as avg, - {$this->_aliases['civicrm_contribution']}.currency as currency, - SUM( {$this->_aliases['civicrm_contribution']}.fee_amount ) as fees, - SUM( {$this->_aliases['civicrm_contribution']}.net_amount ) as net + SELECT COUNT(civicrm_contribution_total_amount ) as count, + SUM( civicrm_contribution_total_amount ) as amount, + ROUND(AVG(civicrm_contribution_total_amount), 2) as avg, + stats.currency as currency, + SUM( stats.fee_amount ) as fees, + SUM( stats.net_amount ) as net "; - $group = "\nGROUP BY {$this->_aliases['civicrm_contribution']}.currency"; - $sql = "{$select} {$this->_from} {$this->_where} {$group}"; + $group = "\nGROUP BY civicrm_contribution_currency"; + $from = " FROM {$this->temporaryTables['civireport_contribution_detail_temp3']['name']} " + . "JOIN civicrm_contribution stats ON {$this->temporaryTables['civireport_contribution_detail_temp3']['name']}.civicrm_contribution_contribution_id = stats.id "; + $sql = "{$select} {$from} {$group} "; + CRM_Core_DAO::disableFullGroupByMode(); $dao = CRM_Core_DAO::executeQuery($sql); + CRM_Core_DAO::reenableFullGroupByMode(); $this->addToDeveloperTab($sql); while ($dao->fetch()) { diff --git a/civicrm/CRM/Report/Form/Contribute/Lybunt.php b/civicrm/CRM/Report/Form/Contribute/Lybunt.php index 4bba286d07e2f4ec826b7e2f7239cc35cfd98ddb..101717609d06fdfb51fea784f4f5df79d3162ad4 100644 --- a/civicrm/CRM/Report/Form/Contribute/Lybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Lybunt.php @@ -51,9 +51,8 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/PCP.php b/civicrm/CRM/Report/Form/Contribute/PCP.php index 3b640a8d6dc81cd78f35062025dc1e54bdcb3c3d..d2ec81d21c389e5ee9c157aacf586f7f304f56f9 100644 --- a/civicrm/CRM/Report/Form/Contribute/PCP.php +++ b/civicrm/CRM/Report/Form/Contribute/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_PCP extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Contribute/Recur.php b/civicrm/CRM/Report/Form/Contribute/Recur.php index d53af38f0f0d3b6945a5fd915ab719d4f7efc5a6..6f0109d2845e0b1d43b4f5470b5b1ed69b4a87ce 100644 --- a/civicrm/CRM/Report/Form/Contribute/Recur.php +++ b/civicrm/CRM/Report/Form/Contribute/Recur.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_Recur extends CRM_Report_Form { @@ -25,9 +23,8 @@ class CRM_Report_Form_Contribute_Recur extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/RecurSummary.php b/civicrm/CRM/Report/Form/Contribute/RecurSummary.php index 9599ddb5d143694e7603cd172d96fdf21f79780e..403ad4953000cded1320e84ac8e68a364aa4d644 100644 --- a/civicrm/CRM/Report/Form/Contribute/RecurSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/RecurSummary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_RecurSummary extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index aa4846c532f9a99f44e7458bacaec971d8a433ed..d5044a08e7224be21d81fbe12d8a178cc712fb59 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -69,9 +69,8 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php index 4394c70b2c0b2447ac33c49a8e8dff297d16005d..8370e7420319e0a7a4e0e014024f62a8447a0803 100644 --- a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php +++ b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { @@ -43,9 +41,8 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/Summary.php b/civicrm/CRM/Report/Form/Contribute/Summary.php index 29dd59842e0bfe5f141831a2636ca192bb1596e8..b7c40f5a199f7c4d43e885766dc2b516660016bd 100644 --- a/civicrm/CRM/Report/Form/Contribute/Summary.php +++ b/civicrm/CRM/Report/Form/Contribute/Summary.php @@ -43,9 +43,8 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/Sybunt.php b/civicrm/CRM/Report/Form/Contribute/Sybunt.php index ec142d1a4a315f9dab04d13ceb8bded4b9645f79..1b45af360eec4a46d86f50d1f4f72f64716f032a 100644 --- a/civicrm/CRM/Report/Form/Contribute/Sybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Sybunt.php @@ -33,9 +33,8 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php index 72a7243df46062a6e6fef314f942ef709b49cc60..83d903950e66f7f694567f1cfa0a26a9c5c9dd18 100644 --- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php +++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php @@ -30,9 +30,8 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Event/Income.php b/civicrm/CRM/Report/Form/Event/Income.php index 6a10c9fa0c6b124ad290434f930f49f05f9346c4..51caf3d4b1011db2a1cb8786b5a66c176dad1e4e 100644 --- a/civicrm/CRM/Report/Form/Event/Income.php +++ b/civicrm/CRM/Report/Form/Event/Income.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Event_Income extends CRM_Report_Form { const ROW_COUNT_LIMIT = 2; diff --git a/civicrm/CRM/Report/Form/Event/ParticipantListCount.php b/civicrm/CRM/Report/Form/Event/ParticipantListCount.php index 31a0f70ab16ea0d4aa3ee7d7d897e48b76830f60..6e98f4be8be66a758946b6762d2c416846234571 100644 --- a/civicrm/CRM/Report/Form/Event/ParticipantListCount.php +++ b/civicrm/CRM/Report/Form/Event/ParticipantListCount.php @@ -30,9 +30,8 @@ class CRM_Report_Form_Event_ParticipantListCount extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Instance.php b/civicrm/CRM/Report/Form/Instance.php index 8aa9d4674ca394293fc13f3f11851993cfe57995..76d6e2c9f875d95369f3928f99690fc891f0da65 100644 --- a/civicrm/CRM/Report/Form/Instance.php +++ b/civicrm/CRM/Report/Form/Instance.php @@ -365,7 +365,7 @@ class CRM_Report_Form_Instance { else { $statusMsg = ts('"%1" report has been successfully created. You are currently viewing the new report instance.', [1 => $instance->title]); } - CRM_Core_Session::setStatus($statusMsg); + CRM_Core_Session::setStatus($statusMsg, '', 'success'); if ($redirect) { $urlParams = ['reset' => 1]; diff --git a/civicrm/CRM/Report/Form/Mailing/Bounce.php b/civicrm/CRM/Report/Form/Mailing/Bounce.php index cfb798c179f97f9ecc8012e7d3ccbd7da6501931..4df40865086b52d78bc4ed5a1de1b5b495a218cb 100644 --- a/civicrm/CRM/Report/Form/Mailing/Bounce.php +++ b/civicrm/CRM/Report/Form/Mailing/Bounce.php @@ -42,9 +42,8 @@ class CRM_Report_Form_Mailing_Bounce extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Mailing/Clicks.php b/civicrm/CRM/Report/Form/Mailing/Clicks.php index bc96f7f9e35aee3f8ece7753e9536b459c815ca2..7634844176f763dfa6676862fc49dda0cec9c8ee 100644 --- a/civicrm/CRM/Report/Form/Mailing/Clicks.php +++ b/civicrm/CRM/Report/Form/Mailing/Clicks.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Mailing_Clicks extends CRM_Report_Form { @@ -44,9 +42,8 @@ class CRM_Report_Form_Mailing_Clicks extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Mailing/Detail.php b/civicrm/CRM/Report/Form/Mailing/Detail.php index 5eab237061e23ca61b9b54395d687de9e9eef8f3..f6902c03b76b20c35f978840f5272c6fd49e23d5 100644 --- a/civicrm/CRM/Report/Form/Mailing/Detail.php +++ b/civicrm/CRM/Report/Form/Mailing/Detail.php @@ -32,9 +32,8 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Mailing/Opened.php b/civicrm/CRM/Report/Form/Mailing/Opened.php index 5db163b7eb4cd06ecf00605ceb277fe662f746f2..142d8d3d3295f9de9a48a4963324f441eeebe0c3 100644 --- a/civicrm/CRM/Report/Form/Mailing/Opened.php +++ b/civicrm/CRM/Report/Form/Mailing/Opened.php @@ -42,9 +42,8 @@ class CRM_Report_Form_Mailing_Opened extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Member/ContributionDetail.php b/civicrm/CRM/Report/Form/Member/ContributionDetail.php index ae05cbc93931e0b08f325e5353921ad39cd1df95..69dd87b8c872d31c48c90ec00e5c9107f9df38fe 100644 --- a/civicrm/CRM/Report/Form/Member/ContributionDetail.php +++ b/civicrm/CRM/Report/Form/Member/ContributionDetail.php @@ -31,9 +31,8 @@ class CRM_Report_Form_Member_ContributionDetail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; @@ -517,7 +516,6 @@ class CRM_Report_Form_Member_ContributionDetail extends CRM_Report_Form { FROM civicrm_contribution contribution INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON {$this->_aliases['civicrm_contact']}.id = contribution.contact_id AND contribution.is_test = 0 - {$this->_aclFrom} LEFT JOIN civicrm_membership_payment mp ON contribution.id = mp.contribution_id LEFT JOIN civicrm_membership m diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php index 5bbe1d5407feae2a1dc23b7f307dfe0f2dea5872..67ced4a6503747b20f3caad925136cfa795fd527 100644 --- a/civicrm/CRM/Report/Form/Member/Detail.php +++ b/civicrm/CRM/Report/Form/Member/Detail.php @@ -35,10 +35,8 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { * The functionality for group filtering has been improved but not * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. - * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; @@ -223,6 +221,25 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { ], 'grouping' => 'contri-fields', ], + 'civicrm_contribution_recur' => [ + 'dao' => 'CRM_Contribute_DAO_ContributionRecur', + 'fields' => [ + 'autorenew_status_id' => [ + 'name' => 'contribution_status_id', + 'title' => ts('Auto-Renew Subscription Status'), + ], + ], + 'filters' => [ + 'autorenew_status_id' => [ + 'name' => 'contribution_status_id', + 'title' => ts('Auto-Renew Subscription Status?'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => [0 => ts('None'), -1 => ts('Ended')] + CRM_Contribute_BAO_ContributionRecur::buildOptions('contribution_status_id', 'search'), + 'type' => CRM_Utils_Type::T_INT, + ], + ], + 'grouping' => 'member-fields', + ], ] + $this->getAddressColumns([ // These options are only excluded because they were not previously present. 'order_by' => FALSE, @@ -243,6 +260,23 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { parent::preProcess(); } + public function select() { + parent::select(); + if (in_array('civicrm_contribution_recur_autorenew_status_id', $this->_selectAliases)) { + // If we're getting auto-renew status we'll want to know if auto-renew has + // ended. + $this->_selectClauses[] = "{$this->_aliases['civicrm_contribution_recur']}.end_date as civicrm_contribution_recur_end_date"; + $this->_selectAliases[] = 'civicrm_contribution_recur_end_date'; + // Regenerate SELECT part of query + $this->_select = "SELECT " . implode(', ', $this->_selectClauses) . " "; + $this->_columnHeaders["civicrm_contribution_recur_end_date"] = [ + 'title' => NULL, + 'type' => NULL, + 'no_display' => TRUE, + ]; + } + } + public function from() { $this->setFromBase('civicrm_contact'); $this->_from .= " @@ -266,6 +300,80 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON cmp.contribution_id={$this->_aliases['civicrm_contribution']}.id\n"; } + if ($this->isTableSelected('civicrm_contribution_recur')) { + $this->_from .= <<<HERESQL + LEFT JOIN civicrm_contribution_recur {$this->_aliases['civicrm_contribution_recur']} + ON {$this->_aliases['civicrm_membership']}.contribution_recur_id = {$this->_aliases['civicrm_contribution_recur']}.id +HERESQL; + } + } + + /** + * Override to add handling for autorenew status. + */ + public function whereClause(&$field, $op, $value, $min, $max) { + if ($field['dbAlias'] == "{$this->_aliases['civicrm_contribution_recur']}.contribution_status_id") { + $clauseParts = []; + switch ($op) { + case 'in': + if ($value !== NULL && is_array($value) && count($value) > 0) { + $regularOptions = implode(', ', array_diff($value, [0, -1])); + // None: is null + if (in_array(0, $value)) { + $clauseParts[] = "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL"; + } + // Ended: not null, end_date in past + if (in_array(-1, $value)) { + $clauseParts[] = <<<HERESQL + {$this->_aliases['civicrm_membership']}.contribution_recur_id IS NOT NULL + AND {$this->_aliases['civicrm_contribution_recur']}.end_date < NOW() +HERESQL; + } + // Normal statuses: IN() + if (!empty($regularOptions)) { + $clauseParts[] = "{$this->_aliases['civicrm_contribution_recur']}.contribution_status_id IN ($regularOptions)"; + } + // Double parentheses b/c ORs should be treated as a group + return '((' . implode(') OR (', $clauseParts) . '))'; + } + return; + + case 'notin': + if ($value !== NULL && is_array($value) && count($value) > 0) { + $regularOptions = implode(', ', array_diff($value, [0, -1])); + // None: is not null + if (in_array(0, $value)) { + $clauseParts[] = "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NOT NULL"; + } + // Ended: null or end_date in future + if (in_array(-1, $value)) { + $clauseParts[] = <<<HERESQL + {$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL + OR {$this->_aliases['civicrm_contribution_recur']}.end_date >= NOW() + OR {$this->_aliases['civicrm_contribution_recur']}.end_date IS NULL +HERESQL; + } + // Normal statuses: null or NOT IN() + if (!empty($regularOptions)) { + $clauseParts[] = <<<HERESQL + {$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL + OR {$this->_aliases['civicrm_contribution_recur']}.contribution_status_id NOT IN ($regularOptions) +HERESQL; + } + return '(' . implode(') AND (', $clauseParts) . ')'; + } + return; + + case 'nll': + return "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL"; + + case 'nnll': + return "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NOT NULL"; + } + } + else { + return parent::whereClause($field, $op, $value, $min, $max); + } } public function getOperationPair($type = "string", $fieldName = NULL) { @@ -369,6 +477,15 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { $rows[$rowNum]['civicrm_contribution_payment_instrument_id'] = $paymentInstruments[$value]; $entryFound = TRUE; } + if ($value = $row['civicrm_contribution_recur_autorenew_status_id'] ?? NULL) { + $rows[$rowNum]['civicrm_contribution_recur_autorenew_status_id'] = $contributionStatus[$value]; + if (!empty($row['civicrm_contribution_recur_end_date']) + && strtotime($row['civicrm_contribution_recur_end_date']) < time()) { + $ended = ts('ended'); + $rows[$rowNum]['civicrm_contribution_recur_autorenew_status_id'] .= " ($ended)"; + } + $entryFound = TRUE; + } if (array_key_exists('civicrm_membership_owner_membership_id', $row)) { $value = $row['civicrm_membership_owner_membership_id']; diff --git a/civicrm/CRM/Report/Form/Member/Lapse.php b/civicrm/CRM/Report/Form/Member/Lapse.php index acdb9a16b0a999d0f9ebc3b25095dc791b5b80c3..864c70ef34c800cf8018330491e86145b88e7b79 100644 --- a/civicrm/CRM/Report/Form/Member/Lapse.php +++ b/civicrm/CRM/Report/Form/Member/Lapse.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Member_Lapse extends CRM_Report_Form { @@ -32,9 +30,8 @@ class CRM_Report_Form_Member_Lapse extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Member/Summary.php b/civicrm/CRM/Report/Form/Member/Summary.php index 1bd21077b7cac8fa6126995b1e30163b333795b7..7cb3dd125ff1af6d9897ab37b7a1e069855f9261 100644 --- a/civicrm/CRM/Report/Form/Member/Summary.php +++ b/civicrm/CRM/Report/Form/Member/Summary.php @@ -36,9 +36,8 @@ class CRM_Report_Form_Member_Summary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Pledge/Detail.php b/civicrm/CRM/Report/Form/Pledge/Detail.php index d8e66c78e5ea9704562f3338391c0d28ee892214..75de4ab4e77c5c92285832e950810fef8eb3472c 100644 --- a/civicrm/CRM/Report/Form/Pledge/Detail.php +++ b/civicrm/CRM/Report/Form/Pledge/Detail.php @@ -42,9 +42,8 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Pledge/Summary.php b/civicrm/CRM/Report/Form/Pledge/Summary.php index 0adf1b860cd342df30a4eca014d497fe75503ffd..d3f853e806bad38f772ba285c1b9296c6494c4e4 100644 --- a/civicrm/CRM/Report/Form/Pledge/Summary.php +++ b/civicrm/CRM/Report/Form/Pledge/Summary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form { @@ -30,9 +28,8 @@ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Register.php b/civicrm/CRM/Report/Form/Register.php index c6d1babef580a32c703d35d933fb28cf1efbcd1e..cc1440150e62456f8ba86a6902844ea8253350bd 100644 --- a/civicrm/CRM/Report/Form/Register.php +++ b/civicrm/CRM/Report/Form/Register.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Register extends CRM_Core_Form { public $_id; diff --git a/civicrm/CRM/Report/Info.php b/civicrm/CRM/Report/Info.php index 2d5f48f935af7a292acd8d8f677a15cbe21a4668..f86b06cf654f34b4e1c37d40090faaf55ef5b327 100644 --- a/civicrm/CRM/Report/Info.php +++ b/civicrm/CRM/Report/Info.php @@ -15,8 +15,6 @@ * abstract class. * * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Report/Interface.php b/civicrm/CRM/Report/Interface.php deleted file mode 100644 index 31c8aa50d035b4e55d197837ff5bfb3f29aad423..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Report/Interface.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - -/** - * - * @package CRM - * @copyright CiviCRM LLC https://civicrm.org/licensing - */ -interface CRM_Report_Interface { - - /** - * The constructor gets the submitted form values. - * - * @param array $formValues - */ - public function __construct(&$formValues); - - /** - * Builds the quickform for this search. - * - * @param CRM_Core_Form $form - */ - public function buildForm(&$form); - - /** - * Builds the search query for various cases. We break it down into finer cases - * since you can optimize each query independently. All the functions below return - * a sql clause with only SELECT, FROM, WHERE sub-parts. The ORDER BY and LIMIT is - * added at a later stage - */ - - /** - * Count of records that match the current input parameters Used by pager. - */ - public function count(); - - /** - * Summary information for the query that can be displayed in the template. - * - * This is useful to pass total / sub total information if needed - */ - public function summary(); - - /** - * Get contact IDs. - * - * List of contact ids that match the current input parameters - * Used by different tasks. Will be also used to optimize the - * 'all' query below to avoid excessive LEFT JOIN blowup - * - * @param int $offset - * @param int $rowcount - * @param string $sort - */ - public function contactIDs($offset = 0, $rowcount = 0, $sort = NULL); - - /** - * Retrieve all the values that match the current input parameters used by the selector. - * - * @param int $offset - * @param int $rowcount - * @param string $sort - * @param bool $includeContactIDs - */ - public function all( - $offset = 0, $rowcount = 0, $sort = NULL, - $includeContactIDs = FALSE - ); - - /** - * The below two functions (from and where) are ONLY used if you want to - * expose a custom group as a smart group and be able to send a mailing - * to them via CiviMail. civicrm_email should be part of the from clause - * The from clause should be a valid sql from clause including the word FROM - * CiviMail will pick up the contacts where the email is primary and - * is not on hold / opt out / do not email - */ - - /** - * The from clause for the query. - */ - public function from(); - - /** - * The where clause for the query. - * - * @param bool $includeContactIDs - */ - public function where($includeContactIDs = FALSE); - - /** - * The template FileName to use to display the results. - */ - public function templateFile(); - - /** - * Returns an array of column headers and field names and sort options. - */ - public function &columns(); - -} diff --git a/civicrm/CRM/Report/OutputHandler/Csv.php b/civicrm/CRM/Report/OutputHandler/Csv.php new file mode 100644 index 0000000000000000000000000000000000000000..475e20aed3f3d918fb8160790a1bf0c98ac20bbe --- /dev/null +++ b/civicrm/CRM/Report/OutputHandler/Csv.php @@ -0,0 +1,105 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +use Civi\Report\OutputHandlerInterface; +use Civi\Report\OutputHandlerBase; + +/** + * CSV Report Output Handler + */ +class CRM_Report_OutputHandler_Csv extends OutputHandlerBase implements OutputHandlerInterface { + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(CRM_Report_Form $form):bool { + return ($form->getOutputMode() === 'csv'); + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string { + return 'CiviReport.csv'; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + // @todo It would be nice if this was more end-user configurable, but + // keeping it the same as it was before for now. + $url = CRM_Utils_System::url('civicrm/report/instance/' . $this->getForm()->getID(), 'reset=1', TRUE); + return $this->getForm()->getReportHeader() . '<p>' . ts('Report URL') . + ": {$url}</p>" . '<p>' . + ts('The report is attached as a CSV file.') . '</p>' . + $this->getForm()->getReportFooter(); + } + + /** + * Return the report contents as a string, in this case the csv output. + * + * @return string + */ + public function getOutputString():string { + //@todo Hmm. See note in CRM_Report_Form::endPostProcess about $rows. + $rows = $this->getForm()->getTemplate()->get_template_vars('rows'); + + // avoid pass-by-ref warning + $form = $this->getForm(); + + return CRM_Report_Utils_Report::makeCsv($form, $rows); + } + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download() { + //@todo Hmm. See note in CRM_Report_Form::endPostProcess about $rows. + $rows = $this->getForm()->getTemplate()->get_template_vars('rows'); + + // avoid pass-by-ref warning + $form = $this->getForm(); + + CRM_Report_Utils_Report::export2csv($form, $rows); + } + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string { + return 'text/csv'; + } + + /** + * Charset of the attachment. + * + * @return string + */ + public function getCharset():string { + return 'utf-8'; + } + +} diff --git a/civicrm/CRM/Report/OutputHandler/Pdf.php b/civicrm/CRM/Report/OutputHandler/Pdf.php new file mode 100644 index 0000000000000000000000000000000000000000..420b1eee78425e9a2a1a17bd16b4ba6313a3e8a1 --- /dev/null +++ b/civicrm/CRM/Report/OutputHandler/Pdf.php @@ -0,0 +1,107 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +use Civi\Report\OutputHandlerInterface; +use Civi\Report\OutputHandlerBase; + +/** + * PDF Report Output Handler + */ +class CRM_Report_OutputHandler_Pdf extends OutputHandlerBase implements OutputHandlerInterface { + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(CRM_Report_Form $form):bool { + return ($form->getOutputMode() === 'pdf'); + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string { + return 'CiviReport.pdf'; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + // @todo It would be nice if this was more end-user configurable, but + // keeping it the same as it was before for now. + $url = CRM_Utils_System::url('civicrm/report/instance/' . $this->getForm()->getID(), 'reset=1', TRUE); + return $this->getForm()->getReportHeader() . '<p>' . ts('Report URL') . + ": {$url}</p>" . '<p>' . + ts('The report is attached as a PDF file.') . '</p>' . + $this->getForm()->getReportFooter(); + } + + /** + * Return the report contents as a string, in this case the pdf file. + * + * @return string + */ + public function getOutputString():string { + return CRM_Utils_PDF_Utils::html2pdf( + $this->getForm()->compileContent(), + $this->getFileName(), + TRUE, + ['orientation' => 'landscape'] + ); + } + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download() { + // Nb. Once upon a time we used a package called Open Flash Charts to + // draw charts, and we had a feature whereby a browser could send the + // server a PNG version of the chart, which could then be included in a + // PDF by including <img> tags in the HTML for the conversion below. + // + // This feature stopped working when browsers stopped supporting Flash, + // and although we have a different client-side charting library in + // place, we decided not to reimplement the (rather convoluted) + // browser-sending-rendered-chart-to-server process. + // + // If this feature is required in future we should find a better way to + // render charts on the server side, e.g. server-created SVG. + + CRM_Utils_PDF_Utils::html2pdf( + $this->getForm()->compileContent(), + $this->getFileName(), + FALSE, + ['orientation' => 'landscape'] + ); + } + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string { + return 'application/pdf'; + } + +} diff --git a/civicrm/CRM/Report/OutputHandler/Print.php b/civicrm/CRM/Report/OutputHandler/Print.php new file mode 100644 index 0000000000000000000000000000000000000000..02e04ea184e112b09000c81d511bf81dcf0427ce --- /dev/null +++ b/civicrm/CRM/Report/OutputHandler/Print.php @@ -0,0 +1,81 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +use Civi\Report\OutputHandlerInterface; +use Civi\Report\OutputHandlerBase; + +/** + * CSV Report Output Handler + */ +class CRM_Report_OutputHandler_Print extends OutputHandlerBase implements OutputHandlerInterface { + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(CRM_Report_Form $form):bool { + return ($form->getOutputMode() === 'print'); + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * For 'print' there is no attachment. + * + * @return string + */ + public function getFileName():string { + return ''; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + return $this->getOutputString(); + } + + /** + * Return the report contents as a string. + * + * @return string + */ + public function getOutputString():string { + return $this->getForm()->compileContent(); + } + + /** + * Set headers as appropriate and send the output to the browser. + * Here the headers are already text/html. + */ + public function download() { + echo $this->getOutputString(); + } + + /** + * Override so links displayed in the browser are relative. + * + * @return bool + */ + public function isAbsoluteUrl():bool { + return FALSE; + } + +} diff --git a/civicrm/CRM/Report/Utils/Get.php b/civicrm/CRM/Report/Utils/Get.php index 59cfbf7c4e951f266e9d7c68f184e0bab72aefd2..536fe3f422ddc3d6e82baad8768c991bb9ff7ee9 100644 --- a/civicrm/CRM/Report/Utils/Get.php +++ b/civicrm/CRM/Report/Utils/Get.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Utils_Get { diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php index e2ca8de2139b9c21c1185296d90ee6884e401184..b3fd9556fa74b4c2e18444ff6ed1523f95775f21 100644 --- a/civicrm/CRM/Report/Utils/Report.php +++ b/civicrm/CRM/Report/Utils/Report.php @@ -209,10 +209,6 @@ WHERE inst.report_id = %1"; //Force a download and name the file using the current timestamp. $datetime = date('Ymd-Gi', $_SERVER['REQUEST_TIME']); CRM_Utils_System::setHttpHeader('Content-Disposition', 'attachment; filename=Report_' . $datetime . '.csv'); - // Output UTF BOM so that MS Excel copes with diacritics. This is recommended as - // the Windows variant but is tested with MS Excel for Mac (Office 365 v 16.31) - // and it continues to work on Libre Office, Numbers, Notes etc. - echo "\xEF\xBB\xBF"; echo self::makeCsv($form, $rows); CRM_Utils_System::civiExit(); } @@ -228,7 +224,11 @@ WHERE inst.report_id = %1"; */ public static function makeCsv(&$form, &$rows) { $config = CRM_Core_Config::singleton(); - $csv = ''; + + // Output UTF BOM so that MS Excel copes with diacritics. This is recommended as + // the Windows variant but is tested with MS Excel for Mac (Office 365 v 16.31) + // and it continues to work on Libre Office, Numbers, Notes etc. + $csv = "\xEF\xBB\xBF"; // Add headers if this is the first row. $columnHeaders = array_keys($form->_columnHeaders); diff --git a/civicrm/CRM/SMS/Form/Provider.php b/civicrm/CRM/SMS/Form/Provider.php index 9659e1a892c7720ea3a557b57392f2fa787cb032..68e64de811b8c3c83a2e1e3c7655e673a280d3ef 100644 --- a/civicrm/CRM/SMS/Form/Provider.php +++ b/civicrm/CRM/SMS/Form/Provider.php @@ -114,7 +114,7 @@ class CRM_SMS_Form_Provider extends CRM_Core_Form { if ($name) { $defaults['name'] = $name; $provider = CRM_SMS_Provider::singleton(['provider' => $name]); - $defaults['api_url'] = $provider->_apiURL; + $defaults['api_url'] = $provider->_apiURL ?? ''; } if (!$this->_id) { diff --git a/civicrm/CRM/SMS/Form/Schedule.php b/civicrm/CRM/SMS/Form/Schedule.php index a3f0a76374ed09a969399b6b05ac5fadf2c96a48..3de19681be32beaffb1605d379f769979b4d25c7 100644 --- a/civicrm/CRM/SMS/Form/Schedule.php +++ b/civicrm/CRM/SMS/Form/Schedule.php @@ -52,11 +52,13 @@ class CRM_SMS_Form_Schedule extends CRM_Core_Form { // on page refresh. $this->setAttribute('autocomplete', 'off'); - $sendOptions = [ - $this->createElement('radio', NULL, NULL, ts('Send immediately'), 'send_immediate', ['id' => 'send_immediate', 'style' => 'margin-bottom: 10px;']), - $this->createElement('radio', NULL, NULL, ts('Send at:'), 'send_later', ['id' => 'send_later']), - ]; - $this->addGroup($sendOptions, 'send_option', '', '<br>'); + $this->addRadio('send_option', '', [ + 'send_immediate' => ts('Send immediately'), + 'send_later' => ts('Send at:'), + ], [], '<br>', FALSE, [ + 'send_immediate' => ['id' => 'send_immediate', 'style' => 'margin-bottom: 10px;'], + 'send_later' => ['id' => 'send_later'], + ]); $this->add('datepicker', 'start_date', '', NULL, FALSE, ['minDate' => time()]); diff --git a/civicrm/CRM/SMS/Message.php b/civicrm/CRM/SMS/Message.php index 8271f3caceed18f3ff67339548a23ef84bb27440..6f10af99d85727619646f9b8635001304f8582c2 100644 --- a/civicrm/CRM/SMS/Message.php +++ b/civicrm/CRM/SMS/Message.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_SMS_Message { diff --git a/civicrm/CRM/Tag/Form/Tag.php b/civicrm/CRM/Tag/Form/Tag.php index fbb7961cbd6e18572752dd83ac52bce296912db0..130d1a73f1970c90783d38e983beb4a9b9ee74b1 100644 --- a/civicrm/CRM/Tag/Form/Tag.php +++ b/civicrm/CRM/Tag/Form/Tag.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Form/AbstractPreview.php b/civicrm/CRM/UF/Form/AbstractPreview.php index 28568b50e6e0ac21f08bbe0241c3d38b058f059d..a1e6c0414b16c3dac968fb8e4f62a58ffb09f635 100644 --- a/civicrm/CRM/UF/Form/AbstractPreview.php +++ b/civicrm/CRM/UF/Form/AbstractPreview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Form/AdvanceSetting.php b/civicrm/CRM/UF/Form/AdvanceSetting.php index d21f666afcd8a85da2f598a27f4e7e4aa6380c6a..0a7be0b72404737bb857a03598a877d094dc606f 100644 --- a/civicrm/CRM/UF/Form/AdvanceSetting.php +++ b/civicrm/CRM/UF/Form/AdvanceSetting.php @@ -32,12 +32,7 @@ class CRM_UF_Form_AdvanceSetting extends CRM_UF_Form_Group { $form->addElement('checkbox', 'is_map', ts('Enable mapping for this profile?')); // should we allow updates on a exisitng contact - $options = []; - $options[] = $form->createElement('radio', NULL, NULL, ts('Issue warning and do not save'), 0); - $options[] = $form->createElement('radio', NULL, NULL, ts('Update the matching contact'), 1); - $options[] = $form->createElement('radio', NULL, NULL, ts('Allow duplicate contact to be created'), 2); - - $form->addGroup($options, 'is_update_dupe', ts('What to do upon duplicate match')); + $form->addRadio('is_update_dupe', ts('What to do upon duplicate match'), [ts('Issue warning and do not save'), ts('Update the matching contact'), ts('Allow duplicate contact to be created')]); // we do not have any url checks to allow relative urls $form->addElement('text', 'post_URL', ts('Redirect URL'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_UFGroup', 'post_URL')); @@ -71,20 +66,10 @@ class CRM_UF_Form_AdvanceSetting extends CRM_UF_Form_Group { $form->_cmsId = TRUE; } - $options = []; - $options[] = $form->createElement('radio', NULL, NULL, ts('No account create option'), 0); - $options[] = $form->createElement('radio', NULL, NULL, ts('Give option, but not required'), 1); - $options[] = $form->createElement('radio', NULL, NULL, ts('Account creation required'), 2); - - $form->addGroup($options, 'is_cms_user', ts('%1 user account registration option?', [1 => $config->userFramework])); + $form->addRadio('is_cms_user', ts('%1 user account registration option?', [1 => $config->userFramework]), [ts('No account create option'), ts('Give option, but not required'), ts('Account creation required')]); // options for including Proximity Search in the profile search form - $proxOptions = []; - $proxOptions[] = $form->createElement('radio', NULL, NULL, ts('None'), 0); - $proxOptions[] = $form->createElement('radio', NULL, NULL, ts('Optional'), 1); - $proxOptions[] = $form->createElement('radio', NULL, NULL, ts('Required'), 2); - - $form->addGroup($proxOptions, 'is_proximity_search', ts('Proximity Search')); + $form->addRadio('is_proximity_search', ts('Proximity Search'), [ts('None'), ts('Optional'), ts('Required')]); } } diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php index 4476ef73038f0f61e76aeddb14f3813fd0cce3f6..4bfcb214af81150eddebdc9b685c6a948d8218f7 100644 --- a/civicrm/CRM/UF/Form/Field.php +++ b/civicrm/CRM/UF/Form/Field.php @@ -530,9 +530,9 @@ class CRM_UF_Form_Field extends CRM_Core_Form { $apiFormattedParams['location_type_id'] = $params['field_name'][2]; } } - elseif ($params['field_name'][2] == 0) { + elseif (isset($params['field_name'][2]) && $params['field_name'][2] == 0) { // 0 is Primary location type - $apiFormattedParams['location_type_id'] = NULL; + $apiFormattedParams['location_type_id'] = ''; } if (!empty($params['field_name'][3])) { $apiFormattedParams['phone_type_id'] = $params['field_name'][3]; diff --git a/civicrm/CRM/UF/Form/Inline/PreviewById.php b/civicrm/CRM/UF/Form/Inline/PreviewById.php index 599ea7af8caf850efba5f5ca53b8f460aad6a094..befda199d36913d68806ba00e2a048b9e208be7c 100644 --- a/civicrm/CRM/UF/Form/Inline/PreviewById.php +++ b/civicrm/CRM/UF/Form/Inline/PreviewById.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Form/Preview.php b/civicrm/CRM/UF/Form/Preview.php index 5f75f45abca865e297da62f6dff3309adc5939b5..7ef09e87a8d902378fd6b91dd6eade8cff839009 100644 --- a/civicrm/CRM/UF/Form/Preview.php +++ b/civicrm/CRM/UF/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Page/AJAX.php b/civicrm/CRM/UF/Page/AJAX.php index 599874a36ad4a4865e0cb6b6e9c586260c4f36f8..79788616a2d79a0716def5984518f8c0b34a761c 100644 --- a/civicrm/CRM/UF/Page/AJAX.php +++ b/civicrm/CRM/UF/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Page/Group.php b/civicrm/CRM/UF/Page/Group.php index 764e5355e832b9f99e465d6bc4994c086f305fca..f2d5a434318c9df87d6e2c0350226cc4b0583567 100644 --- a/civicrm/CRM/UF/Page/Group.php +++ b/civicrm/CRM/UF/Page/Group.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Page/ProfileEditor.php b/civicrm/CRM/UF/Page/ProfileEditor.php index 466278a3fa460bd9860a9363fb660cb353f680d5..061b7ce742bc9082e922f67ce3c2d33bf5e6eeee 100644 --- a/civicrm/CRM/UF/Page/ProfileEditor.php +++ b/civicrm/CRM/UF/Page/ProfileEditor.php @@ -192,7 +192,20 @@ class CRM_UF_Page_ProfileEditor extends CRM_Core_Page { break; default: - throw new CRM_Core_Exception("Unrecognized entity type: $entityType"); + if (strpos($entityType, 'Model') !== FALSE) { + $entity = str_replace('Model', '', $entityType); + $backboneModel = self::convertCiviModelToBackboneModel( + $entity, + ts('%1', [1 => $entity]), + $availableFields + ); + if (!empty($backboneModel['schema'])) { + $civiSchema[$entityType] = $backboneModel; + } + } + if (!isset($civiSchema[$entityType])) { + throw new CRM_Core_Exception("Unrecognized entity type: $entityType"); + } } } diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index c63f9126de8b649aebc3df7d542165f764959f2d..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.5.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl deleted file mode 100644 index 6bfa5f5b78ca6622507fee2f7b920be216a1affe..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl +++ /dev/null @@ -1,456 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - {/if} - - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $email} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {/if} - - - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - {if $pricesetFieldsCount } - <td> - {$line.participant_count} - </td> - {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amount && !$lineItem} - {foreach from=$amount item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> - </tr> - {/if} - {if $is_pay_later} - <tr> - <td colspan="2" {$labelStyle}> - {$pay_later_receipt} - </td> - </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customProfile} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq 'additionalCustomPre'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl deleted file mode 100644 index 603ad2de4cfedbedd95dec8a089bab20c47b8ddf..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl +++ /dev/null @@ -1,274 +0,0 @@ -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} -{if $email} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Registered Email{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$email} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"} {$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amount && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $is_pay_later } - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -=========================================================== -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if $customPost} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost' } -{if $field eq 'additionalCustomPre' } -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{else} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 4e86fbfb2e9819038f639a34c990678b6d8c5885..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later && !$isAmountzero} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $event.is_share} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index db5bec9882b3c62188a68916a5b3be13aa6d7d58..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $pricesetFieldsCount }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index ba58c2652fdbcefe513b440fc55bc54913c270e3..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.alpha1.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl deleted file mode 100644 index d93593c3379375eb113ea25a6d76fc40fdab70db..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl +++ /dev/null @@ -1,261 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $formValues.receipt_text} - <p>{$formValues.receipt_text|htmlize}</p> - {else} - <p>{ts}Thank you for your support.{/ts}</p> - {/if} - - <p>{ts}Please print this receipt for your records.{/ts}</p> - - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Contribution Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$formValues.contributionType_name} - </td> - </tr> - - {if $lineItem and !$is_quick_config} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$formValues.total_amount|crmMoney:$currency} - </td> - </tr> - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Received Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - - {if $receipt_date} - <tr> - <td {$labelStyle}> - {ts}Receipt Date{/ts} - </td> - <td {$valueStyle}> - {$receipt_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - - {if $formValues.paidBy and !$formValues.hidden_CreditCard} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$formValues.paidBy} - </td> - </tr> - {if $formValues.check_number} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$formValues.check_number} - </td> - </tr> - {/if} - {/if} - - {if $formValues.trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction ID{/ts} - </td> - <td {$valueStyle}> - {$formValues.trxn_id} - </td> - </tr> - {/if} - - {if $ccContribution} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - {if $formValues.honor_first_name} - <tr> - <th {$headerStyle}> - {$formValues.honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$formValues.honor_prefix} {$formValues.honor_first_name} {$formValues.honor_last_name}<br /> - {if $formValues.honor_email} - {ts}Honoree Email{/ts}: {$formValues.honor_email} - {/if} - </td> - </tr> - {/if} - - {if $formValues.product_name} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$formValues.product_name} - </td> - </tr> - {if $formValues.product_option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$formValues.product_option} - </td> - </tr> - {/if} - {if $formValues.product_sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$formValues.product_sku} - </td> - </tr> - {/if} - {if $fulfilled_date} - <tr> - <td {$labelStyle}> - {ts}Sent{/ts} - </td> - <td {$valueStyle}> - {$fulfilled_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - {/if} - - </table> - </td> - </tr> - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl deleted file mode 100644 index 64a3db06c3739c97dc3af821eafec34a891edd48..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl +++ /dev/null @@ -1,97 +0,0 @@ -{if $formValues.receipt_text} -{$formValues.receipt_text} -{else}{ts}Thank you for your support.{/ts}{/if} - -{ts}Please print this receipt for your records.{/ts} - - -=========================================================== -{ts}Contribution Information{/ts} - -=========================================================== -{ts}Financial Type{/ts}: {$formValues.contributionType_name} -{if $lineItem} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"} -{/foreach} -{/foreach} -{/if} - -{ts}Total Amount{/ts}: {$formValues.total_amount|crmMoney:$currency} -{if $receive_date} -{ts}Received Date{/ts}: {$receive_date|truncate:10:''|crmDate} -{/if} -{if $receipt_date} -{ts}Receipt Date{/ts}: {$receipt_date|truncate:10:''|crmDate} -{/if} -{if $formValues.paidBy and !$formValues.hidden_CreditCard} -{ts}Paid By{/ts}: {$formValues.paidBy} -{if $formValues.check_number} -{ts}Check Number{/ts}: {$formValues.check_number} -{/if} -{/if} -{if $formValues.trxn_id} -{ts}Transaction ID{/ts}: {$formValues.trxn_id} -{/if} - -{if $ccContribution} -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================== -{$customName} -=========================================================== -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} -{if $formValues.honor_first_name} - -=========================================================== -{$formValues.honor_type} -=========================================================== -{$formValues.honor_prefix} {$formValues.honor_first_name} {$formValues.honor_last_name} -{if $formValues.honor_email} -{ts}Honoree Email{/ts}: {$formValues.honor_email} -{/if} -{/if} - -{if $formValues.product_name} -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$formValues.product_name} -{if $formValues.product_option} -{ts}Option{/ts}: {$formValues.product_option} -{/if} -{if $formValues.product_sku} -{ts}SKU{/ts}: {$formValues.product_sku} -{/if} -{if $fulfilled_date} -{ts}Sent{/ts}: {$fulfilled_date|crmDate} -{/if} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl deleted file mode 100644 index 38004aa3a02fa9c3a9c2ffcb8aa5d035e5085316..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl +++ /dev/null @@ -1,456 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - {/if} - - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $email} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {/if} - - - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - {if $pricesetFieldsCount } - <td> - {$line.participant_count} - </td> - {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amount && !$lineItem} - {foreach from=$amount item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> - </tr> - {/if} - {if $is_pay_later} - <tr> - <td colspan="2" {$labelStyle}> - {$pay_later_receipt} - </td> - </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customProfile} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq 'additionalCustomPre'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl deleted file mode 100644 index 62fb64da11a68c233dc66587fb3be03f6044effa..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl +++ /dev/null @@ -1,274 +0,0 @@ -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} -{if $email} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Registered Email{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$email} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"} {$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amount && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $is_pay_later } - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -=========================================================== -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if $customPost} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost' } -{if $field eq 'additionalCustomPre' } -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{else} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 03e938a9dfee785269e1a486f2a0220e3a5e473f..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later && !$isAmountzero} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $event.is_share} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index 5b24cb2c41dbe8b2eabd68a524c282dd4685ffcd..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $pricesetFieldsCount }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl deleted file mode 100644 index e50e1f4446afd0cebf78b0a5a0420f66cbdb963c..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl +++ /dev/null @@ -1,240 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - {if $formValues.receipt_text_signup} - <p>{$formValues.receipt_text_signup|htmlize}</p> - {elseif $formValues.receipt_text_renewal} - <p>{$formValues.receipt_text_renewal|htmlize}</p> - {else} - <p>{ts}Thank you for your support.{/ts}</p> - {/if} - {if ! $cancelled} - <p>{ts}Please print this receipt for your records.{/ts}</p> - {/if} - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - {if !$lineItem} - <tr> - <th {$headerStyle}> - {ts}Membership Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership Type{/ts} - </td> - <td {$valueStyle}> - {$membership_name} - </td> - </tr> - {/if} - {if ! $cancelled} - {if !$lineItem} - <tr> - <td {$labelStyle}> - {ts}Membership Start Date{/ts} - </td> - <td {$valueStyle}> - {$mem_start_date} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership End Date{/ts} - </td> - <td {$valueStyle}> - {$mem_end_date} - </td> - </tr> - {/if} - {if $formValues.total_amount} - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - {if $formValues.contributionType_name} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$formValues.contributionType_name} - </td> - </tr> - {/if} - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Fee{/ts}</th> - <th>{ts}Membership Start Date{/ts}</th> - <th>{ts}Membership End Date{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.line_total|crmMoney} - </td> - <td> - {$line.start_date} - </td> - <td> - {$line.end_date} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$formValues.total_amount|crmMoney} - </td> - </tr> - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Received Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - {if $formValues.paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$formValues.paidBy} - </td> - </tr> - {if $formValues.check_number} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$formValues.check_number} - </td> - </tr> - {/if} - {/if} - {/if} - {/if} - </table> - </td> - </tr> - - {if $isPrimary} - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later } - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {$billingName}<br /> - {$address} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Expires{/ts} - </td> - <td {$valueStyle}> - {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - </table> - </td> - </tr> - {/if} - - {if $customValues} - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Membership Options{/ts} - </th> - </tr> - {foreach from=$customValues item=value key=customName} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl deleted file mode 100644 index 3f5203d7cdd097be1dda3a98236d956e602b18be..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl +++ /dev/null @@ -1,90 +0,0 @@ -{if $formValues.receipt_text_signup} -{$formValues.receipt_text_signup} -{elseif $formValues.receipt_text_renewal} -{$formValues.receipt_text_renewal} -{else}{ts}Thank you for your support.{/ts}{/if} - -{if ! $cancelled}{ts}Please print this receipt for your records.{/ts} - - -{/if} -{if !$lineItem} -=========================================================== -{ts}Membership Information{/ts} - -=========================================================== -{ts}Membership Type{/ts}: {$membership_name} -{/if} -{if ! $cancelled} -{if !$lineItem} -{ts}Membership Start Date{/ts}: {$mem_start_date} -{ts}Membership End Date{/ts}: {$mem_end_date} -{/if} - -{if $formValues.total_amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{if $formValues.contributionType_name} -{ts}Financial Type{/ts}: {$formValues.contributionType_name} -{/if} -{if $lineItem} -{foreach from=$lineItem item=value key=priceset} -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_total}{ts}Fee{/ts}{/capture} -{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture} -{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"} --------------------------------------------------------------------------------------------------- - -{foreach from=$value item=line} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"} -{/foreach} -{/foreach} --------------------------------------------------------------------------------------------------- -{/if} -{ts}Amount{/ts}: {$formValues.total_amount|crmMoney} -{if $receive_date} -{ts}Received Date{/ts}: {$receive_date|truncate:10:''|crmDate} -{/if} -{if $formValues.paidBy} -{ts}Paid By{/ts}: {$formValues.paidBy} -{if $formValues.check_number} -{ts}Check Number{/ts}: {$formValues.check_number} -{/if} -{/if} -{/if} -{/if} - -{if $isPrimary } -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later } - -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later} -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} - -{if $customValues} -=========================================================== -{ts}Membership Options{/ts} - -=========================================================== -{foreach from=$customValues item=value key=customName} - {$customName} : {$value} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl deleted file mode 100644 index c56152bbaa360954434236521e4f90c5d2aea8ef..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl +++ /dev/null @@ -1,514 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $membership_assign && !$useForMember} - <tr> - <th {$headerStyle}> - {ts}Membership Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership Type{/ts} - </td> - <td {$valueStyle}> - {$membership_name} - </td> - </tr> - {if $mem_start_date} - <tr> - <td {$labelStyle}> - {ts}Membership Start Date{/ts} - </td> - <td {$valueStyle}> - {$mem_start_date|crmDate} - </td> - </tr> - {/if} - {if $mem_end_date} - <tr> - <td {$labelStyle}> - {ts}Membership End Date{/ts} - </td> - <td {$valueStyle}> - {$mem_end_date|crmDate} - </td> - </tr> - {/if} - {/if} - - - {if $amount} - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - - {if !$useForMember and $membership_amount and $is_quick_config} - - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - {if $amount} - {if ! $is_separate_payment } - <tr> - <td {$labelStyle}> - {ts}Contribution Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {else} - <tr> - <td {$labelStyle}> - {ts}Additional Contribution{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {/if} - {/if} - <tr> - <td {$labelStyle}> - {ts}Total{/ts} - </td> - <td {$valueStyle}> - {$amount+$membership_amount|crmMoney} - </td> - </tr> - - {elseif !$useForMember && $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {$line.description|truncate:30:"..."} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - - {else} - {if $useForMember && $lineItem and !$is_quick_config} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Fee{/ts}</th> - <th>{ts}Membership Start Date{/ts}</th> - <th>{ts}Membership End Date{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.line_total|crmMoney} - </td> - <td> - {$line.start_date} - </td> - <td> - {$line.end_date} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - - {elseif $membership_amount} - - - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - - - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $membership_trx_id} - <tr> - <td {$labelStyle}> - {ts}Membership Transaction #{/ts} - </td> - <td {$valueStyle}> - {$membership_trx_id} - </td> - </tr> - {/if} - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0 OR $membership_amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl deleted file mode 100644 index 957ac2fe237e2218a7eda874fae3b83784e862d6..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl +++ /dev/null @@ -1,221 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $membership_assign && !$useForMember} -=========================================================== -{ts}Membership Information{/ts} - -=========================================================== -{ts}Membership Type{/ts}: {$membership_name} -{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate} -{/if} -{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate} -{/if} - -{/if} -{if $amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{if !$useForMember && $membership_amount && $is_quick_config} -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{if $amount} -{if ! $is_separate_payment } -{ts}Contribution Amount{/ts}: {$amount|crmMoney} -{else} -{ts}Additional Contribution{/ts}: {$amount|crmMoney} -{/if} -{/if} -------------------------------------------- -{ts}Total{/ts}: {$amount+$membership_amount|crmMoney} -{elseif !$useForMember && $lineItem and $priceSetID & !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney} -{else} -{if $useForMember && $lineItem && !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_total}{ts}Fee{/ts}{/capture} -{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture} -{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"} --------------------------------------------------------------------------------------------------- - -{foreach from=$value item=line} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"} -{/foreach} -{/foreach} --------------------------------------------------------------------------------------------------- -{/if} -{ts}Amount{/ts}: {$amount|crmMoney} {if $amount_level } - {$amount_level} {/if} -{/if} -{elseif $membership_amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{/if} - -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} - -{/if} -{if $membership_trx_id} -{ts}Membership Transaction #{/ts}: {$membership_trx_id} - -{/if} -{if $is_recur} -{if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} -{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts} - -{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} -{/if} -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0 OR $membership_amount GT 0 } -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) } - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index 6924e8ba9566f2518e44ec1c48933bb2b2221733..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.alpha3.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 94d6b431778097768c27da9f759e3944c39004a5..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,449 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later && !$isAmountzero} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $event.is_share} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index f7314e7567823502631f16168a1ac4309bf55157..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $pricesetFieldsCount }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl deleted file mode 100644 index 13a66bc8758d09c4e9cc1f988c1ce081d667b28f..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} -{capture assign=pcpURL }{crmURL p="civicrm/contribute/pcp/info" q="reset=1&id=`$pcpId`" h=0 a=1}{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page Notification{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Action{/ts}: - </td> - <td {$valueStyle}> - {if $mode EQ 'Update'} - {ts}Updated personal campaign page{/ts} - {else} - {ts}New personal campaign page{/ts} - {/if} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Personal Campaign Page Title{/ts} - </td> - <td {$valueStyle}> - {$pcpTitle} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Current Status{/ts} - </td> - <td {$valueStyle}> - {$pcpStatus} - </td> - </tr> - - <tr> - <td {$labelStyle}> - <a href="{$pcpURL}">{ts}View Page{/ts}</a> - </td> - <td></td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Supporter{/ts} - </td> - <td {$valueStyle}> - <a href="{$supporterUrl}">{$supporterName}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Linked to Contribution Page{/ts} - </td> - <td {$valueStyle}> - <a href="{$contribPageUrl}">{$contribPageTitle}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - <a href="{$managePCPUrl}">{ts}Manage Personal Campaign Pages{/ts}</a> - </td> - <td></td> - </tr> - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index bfb4353d18cef76ce4f7287a90887220deda4a94..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.beta1.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl deleted file mode 100644 index 464543bcb196c5568b95cfb03558322d294e991c..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl +++ /dev/null @@ -1,394 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $amount} - - - <tr> - <th {$headerStyle}> - {ts}Contribution Information{/ts} - </th> - </tr> - - {if $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} - </td> - </tr> - - {else} - - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - {/if} - - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href="%1">visiting this web page</a>.{/ts} - </td> - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href="%1">visiting this web page</a>.{/ts} - </td> - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if $isShare} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=contributionUrl}{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$contributionPageId`" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl} - </td> - </tr> - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl deleted file mode 100644 index bcd6e9728357c25a23932befc5d20a45a7133147..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl +++ /dev/null @@ -1,179 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $amount} -=========================================================== -{ts}Contribution Information{/ts} - -=========================================================== -{if $lineItem and $priceSetID and !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney:$currency} -{else} -{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if} -{/if} -{/if} -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} - -{if $is_recur and ($contributeMode eq 'notify' or $contributeMode eq 'directIPN')} -{ts}This is a recurring contribution. You can cancel future contributions at:{/ts} - -{$cancelSubscriptionUrl} - -{ts}You can update billing details for this recurring contribution at:{/ts} - -{$updateSubscriptionBillingUrl} - -{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts} - -{$updateSubscriptionUrl} - -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0} -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl deleted file mode 100644 index c56152bbaa360954434236521e4f90c5d2aea8ef..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl +++ /dev/null @@ -1,514 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $membership_assign && !$useForMember} - <tr> - <th {$headerStyle}> - {ts}Membership Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership Type{/ts} - </td> - <td {$valueStyle}> - {$membership_name} - </td> - </tr> - {if $mem_start_date} - <tr> - <td {$labelStyle}> - {ts}Membership Start Date{/ts} - </td> - <td {$valueStyle}> - {$mem_start_date|crmDate} - </td> - </tr> - {/if} - {if $mem_end_date} - <tr> - <td {$labelStyle}> - {ts}Membership End Date{/ts} - </td> - <td {$valueStyle}> - {$mem_end_date|crmDate} - </td> - </tr> - {/if} - {/if} - - - {if $amount} - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - - {if !$useForMember and $membership_amount and $is_quick_config} - - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - {if $amount} - {if ! $is_separate_payment } - <tr> - <td {$labelStyle}> - {ts}Contribution Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {else} - <tr> - <td {$labelStyle}> - {ts}Additional Contribution{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {/if} - {/if} - <tr> - <td {$labelStyle}> - {ts}Total{/ts} - </td> - <td {$valueStyle}> - {$amount+$membership_amount|crmMoney} - </td> - </tr> - - {elseif !$useForMember && $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {$line.description|truncate:30:"..."} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - - {else} - {if $useForMember && $lineItem and !$is_quick_config} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Fee{/ts}</th> - <th>{ts}Membership Start Date{/ts}</th> - <th>{ts}Membership End Date{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.line_total|crmMoney} - </td> - <td> - {$line.start_date} - </td> - <td> - {$line.end_date} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - - {elseif $membership_amount} - - - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - - - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $membership_trx_id} - <tr> - <td {$labelStyle}> - {ts}Membership Transaction #{/ts} - </td> - <td {$valueStyle}> - {$membership_trx_id} - </td> - </tr> - {/if} - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0 OR $membership_amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl deleted file mode 100644 index 957ac2fe237e2218a7eda874fae3b83784e862d6..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl +++ /dev/null @@ -1,221 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $membership_assign && !$useForMember} -=========================================================== -{ts}Membership Information{/ts} - -=========================================================== -{ts}Membership Type{/ts}: {$membership_name} -{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate} -{/if} -{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate} -{/if} - -{/if} -{if $amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{if !$useForMember && $membership_amount && $is_quick_config} -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{if $amount} -{if ! $is_separate_payment } -{ts}Contribution Amount{/ts}: {$amount|crmMoney} -{else} -{ts}Additional Contribution{/ts}: {$amount|crmMoney} -{/if} -{/if} -------------------------------------------- -{ts}Total{/ts}: {$amount+$membership_amount|crmMoney} -{elseif !$useForMember && $lineItem and $priceSetID & !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney} -{else} -{if $useForMember && $lineItem && !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_total}{ts}Fee{/ts}{/capture} -{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture} -{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"} --------------------------------------------------------------------------------------------------- - -{foreach from=$value item=line} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"} -{/foreach} -{/foreach} --------------------------------------------------------------------------------------------------- -{/if} -{ts}Amount{/ts}: {$amount|crmMoney} {if $amount_level } - {$amount_level} {/if} -{/if} -{elseif $membership_amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{/if} - -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} - -{/if} -{if $membership_trx_id} -{ts}Membership Transaction #{/ts}: {$membership_trx_id} - -{/if} -{if $is_recur} -{if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} -{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts} - -{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} -{/if} -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0 OR $membership_amount GT 0 } -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) } - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index 581377590c3778d09da6cb27c07f7835debbe104..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.beta2.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl b/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl deleted file mode 100644 index 6e8e8b230dc0ab2c0ec057a532c68670a1ce6ff8..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} -{capture assign=pcpURL }{crmURL p="civicrm/pcp/info" q="reset=1&id=`$pcpId`" h=0 a=1}{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page Notification{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Action{/ts}: - </td> - <td {$valueStyle}> - {if $mode EQ 'Update'} - {ts}Updated personal campaign page{/ts} - {else} - {ts}New personal campaign page{/ts} - {/if} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Personal Campaign Page Title{/ts} - </td> - <td {$valueStyle}> - {$pcpTitle} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Current Status{/ts} - </td> - <td {$valueStyle}> - {$pcpStatus} - </td> - </tr> - - <tr> - <td {$labelStyle}> - <a href="{$pcpURL}">{ts}View Page{/ts}</a> - </td> - <td></td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Supporter{/ts} - </td> - <td {$valueStyle}> - <a href="{$supporterUrl}">{$supporterName}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Linked to Contribution Page{/ts} - </td> - <td {$valueStyle}> - <a href="{$contribPageUrl}">{$contribPageTitle}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - <a href="{$managePCPUrl}">{ts}Manage Personal Campaign Pages{/ts}</a> - </td> - <td></td> - </tr> - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl b/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl deleted file mode 100644 index 52f9761e58c418ed975eefefa7d0e5590ffd9fa6..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl +++ /dev/null @@ -1,20 +0,0 @@ -=========================================================== -{ts}Personal Campaign Page Notification{/ts} - -=========================================================== -{ts}Action{/ts}: {if $mode EQ 'Update'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if} -{ts}Personal Campaign Page Title{/ts}: {$pcpTitle} -{ts}Current Status{/ts}: {$pcpStatus} -{capture assign=pcpURL}{crmURL p="civicrm/pcp/info" q="reset=1&id=`$pcpId`" h=0 a=1}{/capture} -{ts}View Page{/ts}: ->> {$pcpURL} - -{ts}Supporter{/ts}: {$supporterName} ->> {$supporterUrl} - -{ts}Linked to Contribution Page{/ts}: {$contribPageTitle} ->> {$contribPageUrl} - -{ts}Manage Personal Campaign Pages{/ts}: ->> {$managePCPUrl} - diff --git a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index f9a58e0ebd52dee71b3cd914d259f680b0d62622..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.beta3.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl deleted file mode 100644 index 48bde393ba5a7792977f812dfb340440ada61c76..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl +++ /dev/null @@ -1,396 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $amount} - - - <tr> - <th {$headerStyle}> - {ts}Contribution Information{/ts} - </th> - </tr> - - {if $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} - </td> - </tr> - - {else} - - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - {/if} - - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href="%1">visiting this web page</a>.{/ts} - </td> - {if $updateSubscriptionBillingUrl} - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href="%1">visiting this web page</a>.{/ts} - </td> - {/if} - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if $isShare} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=contributionUrl}{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$contributionPageId`" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl} - </td> - </tr> - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl deleted file mode 100644 index ae4f6a5d4ca72185539afbbddd4cdb2ced3a27bf..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl +++ /dev/null @@ -1,181 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $amount} -=========================================================== -{ts}Contribution Information{/ts} - -=========================================================== -{if $lineItem and $priceSetID and !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney:$currency} -{else} -{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if} -{/if} -{/if} -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} - -{if $is_recur and ($contributeMode eq 'notify' or $contributeMode eq 'directIPN')} -{ts}This is a recurring contribution. You can cancel future contributions at:{/ts} - -{$cancelSubscriptionUrl} - -{if $updateSubscriptionBillingUrl} -{ts}You can update billing details for this recurring contribution at:{/ts} - -{$updateSubscriptionBillingUrl} - -{/if} -{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts} - -{$updateSubscriptionUrl} - -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0} -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index 521836c98d9b64587de83556b0b50a59ccb60f0c..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.4.3.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index ca4c608d8a4f09e160c5344c903ecfd8ce76dbc5..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $participant_status}{$participant_status}{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if}</strong>.</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $event.is_share} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index ba339e7b855780b1557bb5cbfcd0500222a3b717..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}{$participant_status}{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if}. - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $pricesetFieldsCount }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index f93d38b7e681d0f573e2f6c6728df70b2b9a35bf..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.4.alpha1.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl deleted file mode 100644 index 0f782a9c980f54f8f295b877c12769c7d60c5c11..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl +++ /dev/null @@ -1,86 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p> - <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p> - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <td {$labelStyle}> - {ts}Organization Name{/ts} - </td> - <td {$valueStyle}> - {$onBehalfName} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Organization Email{/ts} - </td> - <td {$valueStyle}> - {$onBehalfEmail} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Organization Contact ID{/ts} - </td> - <td {$valueStyle}> - {$onBehalfID} - </td> - </tr> - </table> - </td> - </tr> - <tr> - <td> - <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to "Contacts >> Find and Merge Duplicate Contacts". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p> - </td> - </tr> - {if $receiptMessage} - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Copy of Contribution Receipt{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {* FIXME: the below is most probably not HTML-ised *} - {$receiptMessage} - </td> - </tr> - </table> - </td> - </tr> - {/if} - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl deleted file mode 100644 index 28b2a37f2235b15023c3f037acaa287bb776d897..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl +++ /dev/null @@ -1,17 +0,0 @@ -{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts} -{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts} - -{ts}Organization Name{/ts}: {$onBehalfName} -{ts}Organization Email{/ts}: {$onBehalfEmail} -{ts}Organization Contact ID{/ts}: {$onBehalfID} - -{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to "Contacts >> Find and Merge Duplicate Contacts". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts} - -{if $receiptMessage} -########################################################### -{ts}Copy of Contribution Receipt{/ts} - -########################################################### -{$receiptMessage} - -{/if} diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 2c9da1a36c0f819e678c649fb63e860495be0586..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if $isPrimary} - <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p> - {/if} - {elseif $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {if $isPrimary} - <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p> - {/if} - {elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $event.is_share} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index ce7b1714dce48f88d901d099ee667a743f58a74e..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{if $isPrimary} -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{if $isPrimary} -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -{/if} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $pricesetFieldsCount }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/Controller.php b/civicrm/CRM/Upgrade/Controller.php index d9267b9f21f4a011e43354bc97c8418a42f375af..d79428795546fffc68bde3e98356a67429df578f 100644 --- a/civicrm/CRM/Upgrade/Controller.php +++ b/civicrm/CRM/Upgrade/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Upgrade_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Upgrade/Form.php b/civicrm/CRM/Upgrade/Form.php index bd7c86b6869875ad2ba8eed4143f69d80c9f9671..6eb65bf70d3f7092ab6983565eb6d95ecdaaaf76 100644 --- a/civicrm/CRM/Upgrade/Form.php +++ b/civicrm/CRM/Upgrade/Form.php @@ -25,7 +25,7 @@ class CRM_Upgrade_Form extends CRM_Core_Form { /** * Minimum previous CiviCRM version we can directly upgrade from */ - const MINIMUM_UPGRADABLE_VERSION = '4.2.9'; + const MINIMUM_UPGRADABLE_VERSION = '4.4.7'; /** * @var \CRM_Core_Config @@ -68,11 +68,10 @@ class CRM_Upgrade_Form extends CRM_Core_Form { ) { $this->_config = CRM_Core_Config::singleton(); - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); + $locales = CRM_Core_I18n::getMultilingual(); - $this->multilingual = (bool) $domain->locales; - $this->locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $this->multilingual = (bool) $locales; + $this->locales = $locales; $smarty = CRM_Core_Smarty::singleton(); //$smarty->compile_dir = $this->_config->templateCompileDir; diff --git a/civicrm/CRM/Upgrade/Incremental/Base.php b/civicrm/CRM/Upgrade/Incremental/Base.php index 0faa6012e410c025b9023327cc4cef5e047e70dc..3f5393dc0c2b142e9212b09b6a9a918cb4f6c521 100644 --- a/civicrm/CRM/Upgrade/Incremental/Base.php +++ b/civicrm/CRM/Upgrade/Incremental/Base.php @@ -140,13 +140,11 @@ class CRM_Upgrade_Incremental_Base { * @return bool */ public static function addColumn($ctx, $table, $column, $properties, $localizable = FALSE, $version = NULL) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); + $locales = CRM_Core_I18n::getMultilingual(); $queries = []; if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists($table, $column, FALSE)) { - if ($domain->locales) { + if ($locales) { if ($localizable) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); foreach ($locales as $locale) { if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists($table, "{$column}_{$locale}", FALSE)) { $queries[] = "ALTER TABLE `$table` ADD COLUMN `{$column}_{$locale}` $properties"; @@ -164,8 +162,7 @@ class CRM_Upgrade_Incremental_Base { CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); } } - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, $version, TRUE); } return TRUE; @@ -298,10 +295,8 @@ class CRM_Upgrade_Incremental_Base { * @return bool */ public static function rebuildMultilingalSchema($ctx, $version = NULL) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, $version); } return TRUE; diff --git a/civicrm/CRM/Upgrade/Incremental/General.php b/civicrm/CRM/Upgrade/Incremental/General.php index 3536831b3bffba05f21e1747b016e39e1f3041d1..fb5510d5b5bd30d467602543be2d8440a08b775d 100644 --- a/civicrm/CRM/Upgrade/Incremental/General.php +++ b/civicrm/CRM/Upgrade/Incremental/General.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Upgrade/Incremental/SmartGroups.php b/civicrm/CRM/Upgrade/Incremental/SmartGroups.php index 70c272511d9247d2d4f75619df115b4fa279a03a..862eefe79d2f21b2574df85d064c813f6f2b5106 100644 --- a/civicrm/CRM/Upgrade/Incremental/SmartGroups.php +++ b/civicrm/CRM/Upgrade/Incremental/SmartGroups.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Class to handled upgrading any saved searches with changed patterns. */ class CRM_Upgrade_Incremental_SmartGroups { diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php index 01c899a7dedcfa168236ada4b93aab9d6228acca..2d10885877eedd1e3c1b5fff5b351b200a3ac5dc 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php @@ -46,37 +46,6 @@ class CRM_Upgrade_Incremental_php_FiveTwentyEight extends CRM_Upgrade_Incrementa } } - /** - * Upgrade function. - * - * @param string $rev - */ - public function upgrade_5_28_1($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); - $this->addTask('Make label field non required on price field value', 'priceFieldValueLabelNonRequired'); - } - - /** - * Make the price field value label column non required - * @return bool - */ - public static function priceFieldValueLabelNonRequired() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); - foreach ($locales as $locale) { - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label_{$locale}` `label_{$locale}` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); - CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label_{$locale} = NULL WHERE label_{$locale} = 'null'", [], TRUE, NULL, FALSE, FALSE); - } - } - else { - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label` `label` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); - CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label = NULL WHERE label = 'null'", [], TRUE, NULL, FALSE, FALSE); - } - return TRUE; - } - public static function createWpFilesMessage() { if (!function_exists('civi_wp')) { return ''; @@ -126,8 +95,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyEight extends CRM_Upgrade_Incrementa } public static function populateMissingContactTypeName() { - $contactTypes = \Civi\Api4\ContactType::get() - ->setCheckPermissions(FALSE) + $contactTypes = \Civi\Api4\ContactType::get(FALSE) ->execute(); foreach ($contactTypes as $contactType) { if (empty($contactType['name'])) { diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php new file mode 100644 index 0000000000000000000000000000000000000000..88d392c791374f0813affbf5f63d6ad7218419ad --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php @@ -0,0 +1,193 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Upgrade logic for FiveTwentyNine */ +class CRM_Upgrade_Incremental_php_FiveTwentyNine extends CRM_Upgrade_Incremental_Base { + + /** + * Compute any messages which should be displayed beforeupgrade. + * + * Note: This function is called iteratively for each upcoming + * revision to the database. + * + * @param string $preUpgradeMessage + * @param string $rev + * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. + * @param null $currentVer + */ + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { + if ($rev == '5.29.beta1') { + if (CIVICRM_UF === 'Drupal8') { + $preUpgradeMessage .= '<p>' . ts('<em>Pre-announcement for upcoming version 5.30</em>: If your composer configuration or composer.json does not enable patching, you MUST do that BEFORE running composer to update your files to version 5.30. Either by using `composer config \'extra.enable-patching\' true`, or updating the top level composer.json\'s extra section with `"enable-patching": true`. See %1 for details.', [1 => '<a href="' . CRM_Utils_System::docURL2('installation/drupal8', TRUE) . '">Drupal 8 installation guide</a>']) . '</p>'; + } + } + } + + /** + * Compute any messages which should be displayed after upgrade. + * + * @param string $postUpgradeMessage + * alterable. + * @param string $rev + * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. + */ + public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { + // Example: Generate a post-upgrade message. + // if ($rev == '5.12.34') { + // $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); + // } + } + + /* + * Important! All upgrade functions MUST add a 'runSql' task. + * Uncomment and use the following template for a new upgrade version + * (change the x in the function name): + */ + + /** + * Upgrade function. + * + * @param string $rev + */ + public function upgrade_5_29_alpha1($rev) { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Install eventcart extension', 'installEventCart'); + + list($minId, $maxId) = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0) + FROM civicrm_relationship ")->getDatabaseResult()->fetchRow(); + for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { + $endId = $startId + self::BATCH_SIZE - 1; + $title = ts("Upgrade DB to %1: Fill civicrm_relationship_cache (%2 => %3)", [ + 1 => $rev, + 2 => $startId, + 3 => $endId, + ]); + $this->addTask($title, 'populateRelationshipCache', $startId, $endId); + } + } + + /** + * Upgrade function. + * + * @param string $rev + */ + public function upgrade_5_29_beta1($rev) { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Make label field non required on price field value', 'priceFieldValueLabelNonRequired'); + } + + /** + * Make the price field value label column non required + * @return bool + */ + public static function priceFieldValueLabelNonRequired() { + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { + foreach ($locales as $locale) { + CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label_{$locale}` `label_{$locale}` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); + CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label_{$locale} = NULL WHERE label_{$locale} = 'null'", [], TRUE, NULL, FALSE, FALSE); + } + } + else { + CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label` `label` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); + CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label = NULL WHERE label = 'null'", [], TRUE, NULL, FALSE, FALSE); + } + return TRUE; + } + + /** + * Install sequentialCreditNotes extension. + * + * This feature is restructured as a core extension - which is primarily a code cleanup step. + * + * @param \CRM_Queue_TaskContext $ctx + * + * @return bool + * + * @throws \CiviCRM_API3_Exception + * @throws \CRM_Core_Exception + */ + public static function installEventCart(CRM_Queue_TaskContext $ctx) { + // Install via direct SQL manipulation. Note that: + // (1) This extension has no activation logic. + // (2) On new installs, the extension is activated purely via default SQL INSERT. + // (3) Caches are flushed at the end of the upgrade. + // ($) Over long term, upgrade steps are more reliable in SQL. API/BAO sometimes don't work mid-upgrade. + $insert = CRM_Utils_SQL_Insert::into('civicrm_extension')->row([ + 'type' => 'module', + 'full_name' => 'eventcart', + 'name' => 'eventcart', + 'label' => 'Event Cart', + 'file' => 'eventcart', + 'schema_version' => NULL, + 'is_active' => 1, + ]); + CRM_Core_DAO::executeQuery($insert->usingReplace()->toSQL()); + + return TRUE; + } + + /** + * @param \CRM_Queue_TaskContext $ctx + * @param int $startId + * The lowest relationship ID that should be updated. + * @param int $endId + * The highest relationship ID that should be updated. + * @return bool + * TRUE on success + */ + public static function populateRelationshipCache(CRM_Queue_TaskContext $ctx, $startId, $endId) { + // NOTE: We duplicate CRM_Contact_BAO_RelationshipCache::$mappings in case + // the schema evolves over multiple releases. + $mappings = [ + 'a_b' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"a_b"', + 'near_contact_id' => 'rel.contact_id_a', + 'near_relation' => 'reltype.name_a_b', + 'far_contact_id' => 'rel.contact_id_b', + 'far_relation' => 'reltype.name_b_a', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + 'b_a' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"b_a"', + 'near_contact_id' => 'rel.contact_id_b', + 'near_relation' => 'reltype.name_b_a', + 'far_contact_id' => 'rel.contact_id_a', + 'far_relation' => 'reltype.name_a_b', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + ]; + $keyFields = ['relationship_id', 'orientation']; + + foreach ($mappings as $mapping) { + $query = CRM_Utils_SQL_Select::from('civicrm_relationship rel') + ->join('reltype', 'INNER JOIN civicrm_relationship_type reltype ON rel.relationship_type_id = reltype.id') + ->syncInto('civicrm_relationship_cache', $keyFields, $mapping) + ->where('rel.id >= #START AND rel.id <= #END', [ + '#START' => $startId, + '#END' => $endId, + ]); + $query->execute(); + } + + return TRUE; + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php index 499aa9a68f5e9e852590ea3777f0814b60cd20a9..2319acd0ae81bb98f4a20d5f5ea55033c7f19450 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php @@ -43,7 +43,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyOne extends CRM_Upgrade_Incremental_ if ($rev == '5.21.alpha1') { // Find any option groups that were not converted during the upgrade. $notConverted = []; - $optionGroups = \Civi\Api4\OptionGroup::get()->setCheckPermissions(FALSE)->execute(); + $optionGroups = \Civi\Api4\OptionGroup::get(FALSE)->execute(); foreach ($optionGroups as $optionGroup) { $trimmedName = trim($optionGroup['name']); if (strpos($trimmedName, ' ') !== FALSE) { @@ -86,8 +86,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyOne extends CRM_Upgrade_Incremental_ } public static function fixOptionGroupName() { - $optionGroups = \Civi\Api4\OptionGroup::get() - ->setCheckPermissions(FALSE) + $optionGroups = \Civi\Api4\OptionGroup::get(FALSE) ->execute(); foreach ($optionGroups as $optionGroup) { $name = trim($optionGroup['name']); diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php index b8cb7bffff07e4bc97cfcbab010e96ae85379be6..60490a0b246af5b81a63ef3e5bf10d3e4fc8e126 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php @@ -75,10 +75,8 @@ class CRM_Upgrade_Incremental_php_FiveTwentySeven extends CRM_Upgrade_Incrementa } public function priceFieldValueLabelRequired($ctx) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { foreach ($locales as $locale) { CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label_{$locale} = '' WHERE label_{$locale} IS NULL", [], TRUE, NULL, FALSE, FALSE); CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label_{$locale}` `label_{$locale}` varchar(255) NOT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); @@ -92,10 +90,8 @@ class CRM_Upgrade_Incremental_php_FiveTwentySeven extends CRM_Upgrade_Incrementa } public function nameMembershipTypeRequired($ctx) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { foreach ($locales as $locale) { CRM_Core_DAO::executeQuery("UPDATE civicrm_membership_type SET name_{$locale} = '' WHERE name_{$locale} IS NULL", [], TRUE, NULL, FALSE, FALSE); CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_membership_type CHANGE `name_{$locale}` `name_{$locale}` varchar(128) NOT NULL COMMENT 'Name of Membership Type'", [], TRUE, NULL, FALSE, FALSE); diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourFour.php b/civicrm/CRM/Upgrade/Incremental/php/FourFour.php deleted file mode 100644 index d4d83ee49da4ff61c6baf1497f843e7a79e15292..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/php/FourFour.php +++ /dev/null @@ -1,803 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - -/** - * Upgrade logic for 4.4 - */ -class CRM_Upgrade_Incremental_php_FourFour extends CRM_Upgrade_Incremental_Base { - const MAX_WORD_REPLACEMENT_SIZE = 255; - - /** - * Compute any messages which should be displayed beforeupgrade. - * - * Note: This function is called iteratively for each upcoming - * revision to the database. - * - * @param $preUpgradeMessage - * @param string $rev - * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. - * @param string $currentVer - */ - public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { - if ($rev == '4.4.beta1') { - $apiCalls = self::getConfigArraysAsAPIParams(FALSE); - $oversizedEntries = 0; - foreach ($apiCalls as $params) { - if (!self::isValidWordReplacement($params)) { - $oversizedEntries++; - } - } - if ($oversizedEntries > 0) { - $preUpgradeMessage .= '<br/>' . ts("WARNING: There are %1 word-replacement entries which will not be valid in v4.4+ (eg with over 255 characters). They will be dropped during upgrade. For details, consult the CiviCRM log.", [ - 1 => $oversizedEntries, - ]); - } - } - } - - /** - * Compute any messages which should be displayed after upgrade. - * - * @param string $postUpgradeMessage - * alterable. - * @param string $rev - * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. - */ - public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { - if ($rev == '4.4.1') { - $config = CRM_Core_Config::singleton(); - if (!empty($config->useIDS)) { - $postUpgradeMessage .= '<br />' . ts("The setting to skip IDS check has been removed. Your site has this configured in civicrm.settings.php but it will no longer work. Instead, use the new permission 'skip IDS check' to bypass the IDS system."); - } - } - if ($rev == '4.4.3') { - $postUpgradeMessage .= '<br /><br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Events - Registration Confirmation and Receipt (on-line)</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).'); - } - if ($rev == '4.4.3') { - $query = "SELECT cft.id financial_trxn -FROM civicrm_financial_trxn cft -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.financial_trxn_id = cft.id -LEFT JOIN civicrm_contribution cc ON ceft.entity_id = cc.id -WHERE ceft.entity_table = 'civicrm_contribution' AND cft.payment_instrument_id IS NULL;"; - $dao = CRM_Core_DAO::executeQuery($query); - if ($dao->N) { - $postUpgradeMessage .= '<br /><br /><strong>' . ts('Your database contains %1 financial transaction records with no payment instrument (Paid By is empty). If you use the Accounting Batches feature this may result in unbalanced transactions. If you do not use this feature, you can ignore the condition (although you will be required to select a Paid By value for new transactions). <a href="%2" target="_blank">You can review steps to correct transactions with missing payment instruments on the wiki.</a>', [ - 1 => $dao->N, - 2 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Transactions+Missing+a+Payment+Instrument+-+4.4.3+Upgrades', - ]) . '</strong>'; - } - } - if ($rev == '4.4.6') { - $postUpgradeMessage .= '<br /><br /><strong>' . ts('Your contact image urls have been upgraded. If your contact image urls did not follow the standard format for image Urls they have not been upgraded. Please check the log to see image urls that were not upgraded.'); - } - } - - /** - * Upgrade 4.4.alpha1. - * - * @param string $rev - * - * @return bool - */ - public function upgrade_4_4_alpha1($rev) { - // task to process sql - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.alpha1']), 'runSql', $rev); - - // Consolidate activity contacts CRM-12274. - $this->addTask('Consolidate activity contacts', 'activityContacts'); - - return TRUE; - } - - /** - * @param $rev - */ - public function upgrade_4_4_beta1($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.beta1']), 'runSql', $rev); - - // add new 'data' column in civicrm_batch - $query = 'ALTER TABLE civicrm_batch ADD data LONGTEXT NULL COMMENT "cache entered data"'; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - // check if batch entry data exists in civicrm_cache table - $query = 'SELECT path, data FROM civicrm_cache WHERE group_name = "batch entry"'; - $dao = CRM_Core_DAO::executeQuery($query); - while ($dao->fetch()) { - // get batch id $batchId[2] - $batchId = explode('-', $dao->path); - $data = unserialize($dao->data); - - // move the data to civicrm_batch table - CRM_Core_DAO::setFieldValue('CRM_Batch_DAO_Batch', $batchId[2], 'data', json_encode(['values' => $data])); - } - - // delete entries from civicrm_cache table - $query = 'DELETE FROM civicrm_cache WHERE group_name = "batch entry"'; - CRM_Core_DAO::executeQuery($query); - - $this->addTask('Migrate custom word-replacements', 'wordReplacements'); - } - - /** - * @param $rev - */ - public function upgrade_4_4_1($rev) { - $config = CRM_Core_Config::singleton(); - // CRM-13327 upgrade handling for the newly added name badges - $ogID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'name_badge', 'id', 'name'); - $nameBadges = array_flip(array_values(CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('name_badge'))); - unset($nameBadges['Avery 5395']); - if (!empty($nameBadges)) { - $dimension = '{"paper-size":"a4","orientation":"portrait","font-name":"times","font-size":6,"font-style":"","NX":2,"NY":4,"metric":"mm","lMargin":6,"tMargin":19,"SpaceX":0,"SpaceY":0,"width":100,"height":65,"lPadding":0,"tPadding":0}'; - $query = "UPDATE civicrm_option_value - SET value = '{$dimension}' - WHERE option_group_id = %1 AND name = 'Fattorini Name Badge 100x65'"; - - CRM_Core_DAO::executeQuery($query, [1 => [$ogID, 'Integer']]); - } - else { - $dimensions = [ - 1 => '{"paper-size":"a4","orientation":"landscape","font-name":"times","font-size":6,"font-style":"","NX":2,"NY":1,"metric":"mm","lMargin":25,"tMargin":27,"SpaceX":0,"SpaceY":35,"width":106,"height":150,"lPadding":5,"tPadding":5}', - 2 => '{"paper-size":"a4","orientation":"portrait","font-name":"times","font-size":6,"font-style":"","NX":2,"NY":4,"metric":"mm","lMargin":6,"tMargin":19,"SpaceX":0,"SpaceY":0,"width":100,"height":65,"lPadding":0,"tPadding":0}', - 3 => '{"paper-size":"a4","orientation":"portrait","font-name":"times","font-size":6,"font-style":"","NX":2,"NY":2,"metric":"mm","lMargin":10,"tMargin":28,"SpaceX":0,"SpaceY":0,"width":96,"height":121,"lPadding":5,"tPadding":5}', - ]; - $insertStatements = [ - 1 => "($ogID, %1, '{$dimensions[1]}', %1, NULL, 0, NULL, 2, NULL, 0, 0, 1, NULL, NULL)", - 2 => "($ogID, %2, '{$dimensions[2]}', %2, NULL, 0, NULL, 3, NULL, 0, 0, 1, NULL, NULL)", - 3 => "($ogID, %3, '{$dimensions[3]}', %3, NULL, 0, NULL, 4, NULL, 0, 0, 1, NULL, NULL)", - ]; - - $queryParams = [ - 1 => ['A6 Badge Portrait 150x106', 'String'], - 2 => ['Fattorini Name Badge 100x65', 'String'], - 3 => ['Hanging Badge 3-3/4" x 4-3"/4', 'String'], - ]; - - foreach ($insertStatements as $values) { - $query = 'INSERT INTO civicrm_option_value (`option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) VALUES' . $values; - CRM_Core_DAO::executeQuery($query, $queryParams); - } - } - - // CRM-12578 - Prior to this version a CSS file under drupal would disable core css - if (!empty($config->customCSSURL) && strpos($config->userFramework, 'Drupal') === 0) { - // The new setting doesn't exist yet - need to create it first - $sql = ' - INSERT INTO civicrm_setting (group_name, name , value , domain_id , is_domain , created_date) - VALUES (%1, %2, %3, %4, %5, now())'; - CRM_Core_DAO::executeQuery($sql, [ - 1 => [CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'String'], - 2 => ['disable_core_css', 'String'], - 3 => [serialize(1), 'String'], - 4 => [CRM_Core_Config::domainID(), 'Positive'], - 5 => [1, 'Int'], - ]); - Civi::service('settings_manager')->flush(); - } - - // CRM-13701 - Fix $config->timeInputFormat - $sql = " - SELECT time_format - FROM civicrm_preferences_date - WHERE time_format IS NOT NULL - AND time_format <> '' - LIMIT 1 - "; - $timeInputFormat = CRM_Core_DAO::singleValueQuery($sql); - if ($timeInputFormat && $timeInputFormat != $config->timeInputFormat) { - $params = ['timeInputFormat' => $timeInputFormat]; - CRM_Core_BAO_ConfigSetting::add($params); - } - - // CRM-13698 - add 'Available' and 'No-show' activity statuses - $insertStatus = []; - $nsinc = $avinc = $inc = 0; - if (!CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Available')) { - $insertStatus[] = "(%1, 'Available', %2, 'Available', NULL, 0, NULL, %3, 0, 0, 1, NULL, NULL)"; - $avinc = $inc = 1; - } - if (!CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'No_show')) { - $insertStatus[] = "(%1, 'No-show', %4, 'No_show', NULL, 0, NULL, %5, 0, 0, 1, NULL, NULL)"; - $nsinc = $inc + 1; - } - if (!empty($insertStatus)) { - $acOptionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_status', 'id', 'name'); - $maxVal = CRM_Core_DAO::singleValueQuery("SELECT MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = $acOptionGroupID"); - $maxWeight = CRM_Core_DAO::singleValueQuery("SELECT MAX(weight) FROM civicrm_option_value WHERE option_group_id = $acOptionGroupID"); - - $p[1] = [$acOptionGroupID, 'Integer']; - if ($avinc) { - $p[2] = [$avinc + $maxVal, 'Integer']; - $p[3] = [$avinc + $maxWeight, 'Integer']; - } - if ($nsinc) { - $p[4] = [$nsinc + $maxVal, 'Integer']; - $p[5] = [$nsinc + $maxWeight, 'Integer']; - } - $insertStatus = implode(',', $insertStatus); - - $sql = " -INSERT INTO - civicrm_option_value (`option_group_id`, label, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES {$insertStatus}"; - CRM_Core_DAO::executeQuery($sql, $p); - } - - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.1']), 'runSql', $rev); - $this->addTask('Patch word-replacement schema', 'wordReplacements_patch', $rev); - } - - /** - * @param $rev - * - * @return bool - */ - public function upgrade_4_4_4($rev) { - $fkConstraint = []; - if (!CRM_Core_DAO::checkFKConstraintInFormat('civicrm_activity_contact', 'activity_id')) { - $fkConstraint[] = "ADD CONSTRAINT `FK_civicrm_activity_contact_activity_id` FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE CASCADE"; - } - if (!CRM_Core_DAO::checkFKConstraintInFormat('civicrm_activity_contact', 'contact_id')) { - $fkConstraint[] = "ADD CONSTRAINT `FK_civicrm_activity_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE; -"; - } - - if (!empty($fkConstraint)) { - $fkConstraint = implode(',', $fkConstraint); - $sql = "ALTER TABLE `civicrm_activity_contact` -{$fkConstraint} -"; - // CRM-14036 : delete entries of un-mapped contacts - CRM_Core_DAO::executeQuery("DELETE ac FROM civicrm_activity_contact ac -LEFT JOIN civicrm_contact c -ON c.id = ac.contact_id -WHERE c.id IS NULL; -"); - // delete entries of un-mapped activities - CRM_Core_DAO::executeQuery("DELETE ac FROM civicrm_activity_contact ac -LEFT JOIN civicrm_activity a -ON a.id = ac.activity_id -WHERE a.id IS NULL; -"); - - CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS=0;"); - CRM_Core_DAO::executeQuery($sql); - CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS=1;"); - } - - // task to process sql - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.4']), 'runSql', $rev); - - // CRM-13892 : add `name` column to dashboard schema - $query = " -ALTER TABLE civicrm_dashboard - ADD name varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Internal name of dashlet.' AFTER domain_id "; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - $dashboard = new CRM_Core_DAO_Dashboard(); - $dashboard->find(); - while ($dashboard->fetch()) { - $urlElements = explode('/', $dashboard->url); - if ($urlElements[1] == 'dashlet') { - $url = explode('&', $urlElements[2]); - $name = $url[0]; - } - elseif ($urlElements[1] == 'report') { - $url = explode('&', $urlElements[3]); - $name = 'report/' . $url[0]; - } - $values .= " - WHEN {$dashboard->id} THEN '{$name}' - "; - } - - $query = " - UPDATE civicrm_dashboard - SET name = CASE id - {$values} - END; - "; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - // CRM-13998 : missing alter statements for civicrm_report_instance - $this->addTask(ts('Confirm civicrm_report_instance sql table for upgrades'), 'updateReportInstanceTable'); - - return TRUE; - } - - /** - * @param $rev - */ - public function upgrade_4_4_6($rev) { - $sql = "SELECT count(*) AS count FROM INFORMATION_SCHEMA.STATISTICS where " . - "TABLE_SCHEMA = database() AND INDEX_NAME = 'index_image_url' AND TABLE_NAME = 'civicrm_contact';"; - $dao = CRM_Core_DAO::executeQuery($sql); - $dao->fetch(); - if ($dao->count < 1) { - $sql = "CREATE INDEX index_image_url ON civicrm_contact (image_url);"; - $dao = CRM_Core_DAO::executeQuery($sql); - } - $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { - $endId = $startId + self::BATCH_SIZE - 1; - $title = "Upgrade image_urls ($startId => $endId)"; - $this->addTask($title, 'upgradeImageUrls', $startId, $endId); - } - } - - /** - * Upgrade script for 4.4.7. - * - * @param string $rev - * @param string $originalVer - * @param string $latestVer - */ - public function upgrade_4_4_7($rev, $originalVer, $latestVer) { - // For WordPress/Joomla(?), cleanup broken image_URL from 4.4.6 upgrades - https://issues.civicrm.org/jira/browse/CRM-14971 - // URL formula from 4.4.6 upgrade - $exBackendUrl = CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=XXX', TRUE); - $exFrontendUrl = CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=XXX', TRUE, NULL, TRUE, TRUE); - if ($originalVer == '4.4.6' && $exBackendUrl != $exFrontendUrl) { - $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { - $endId = $startId + self::BATCH_SIZE - 1; - $title = "Upgrade image_urls ($startId => $endId)"; - $this->addTask($title, 'cleanupBackendImageUrls', $startId, $endId); - } - } - $this->addTask(ts('Update saved search information'), 'changeSavedSearch'); - } - - /** - * Upgrade image URLs. - * - * @param \CRM_Queue_TaskContext $ctx - * @param $startId - * @param $endId - * - * @return bool - */ - public static function upgradeImageUrls(CRM_Queue_TaskContext $ctx, $startId, $endId) { - $dao = self::findContactImageUrls($startId, $endId); - $failures = []; - $config = CRM_Core_Config::singleton(); - while ($dao->fetch()) { - $imageURL = $dao->image_url; - $baseurl = CIVICRM_UF_BASEURL; - //CRM-15897 - gross hack for joomla to remove the administrator/ - if ($config->userFramework == 'Joomla') { - $baseurl = str_replace("/administrator/", "/", $baseurl); - } - $baselen = strlen($baseurl); - if (substr($imageURL, 0, $baselen) == $baseurl) { - $photo = basename($dao->image_url); - $fullpath = $config->customFileUploadDir . $photo; - if (file_exists($fullpath)) { - // For anyone who upgraded 4.4.6 release (eg 4.4.0=>4.4.6), the $newImageUrl incorrectly used backend URLs. - // For anyone who skipped 4.4.6 (eg 4.4.0=>4.4.7), the $newImageUrl correctly uses frontend URLs - self::setContactImageUrl($dao->id, - CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=' . $photo, TRUE, NULL, TRUE, TRUE)); - } - else { - $failures[$dao->id] = $dao->image_url; - } - } - else { - $failures[$dao->id] = $dao->image_url; - } - } - CRM_Core_Error::debug_var('imageUrlsNotUpgraded', $failures); - return TRUE; - } - - /** - * Change saved search. - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public static function changeSavedSearch(CRM_Queue_TaskContext $ctx) { - $membershipStatuses = array_flip(CRM_Member_PseudoConstant::membershipStatus()); - - $dao = new CRM_Contact_DAO_SavedSearch(); - $dao->find(); - while ($dao->fetch()) { - $formValues = NULL; - if (!empty($dao->form_values)) { - $formValues = unserialize($dao->form_values); - } - if (!empty($formValues['mapper'])) { - foreach ($formValues['mapper'] as $key => $value) { - foreach ($value as $k => $v) { - if ($v[0] == 'Membership' && in_array($v[1], ['membership_status', 'membership_status_id'])) { - $value = $formValues['value'][$key][$k]; - $op = $formValues['operator'][$key][$k]; - if ($op == 'IN') { - $value = trim($value); - $value = str_replace('(', '', $value); - $value = str_replace(')', '', $value); - - $v = explode(',', $value); - $value = []; - foreach ($v as $k1 => $v2) { - if (is_numeric($v2)) { - break 2; - } - $value[$k1] = $membershipStatuses[$v2]; - } - $formValues['value'][$key][$k] = "(" . implode(',', $value) . ")"; - } - elseif (in_array($op, ['=', '!='])) { - if (is_numeric($value)) { - break; - } - $formValues['value'][$key][$k] = $membershipStatuses[$value]; - } - } - } - } - $dao->form_values = serialize($formValues); - $dao->save(); - } - } - - return TRUE; - } - - /** - * For WordPress/Joomla(?) sites which upgraded to 4.4.6, find back-end image_URLs - * (e.g. "http://example.com/wp-admin/admin.php?page=CiviCRM&q=civicrm/contact/imagefile&photo=123.jpg") - * and convert them to front-end URLs - * (e.g. "http://example.com/?page=CiviCRM&q=civicrm/contact/imagefile&photo=123.jpg"). - * - * @param CRM_Queue_TaskContext $ctx - * @param int $startId - * @param int $endId - * @return bool - */ - public static function cleanupBackendImageUrls(CRM_Queue_TaskContext $ctx, $startId, $endId) { - $dao = self::findContactImageUrls($startId, $endId); - while ($dao->fetch()) { - $imageUrl = str_replace('&', '&', $dao->image_url); - if (preg_match(":civicrm/contact/imagefile.*photo=:", $imageUrl)) { - // looks like one of ours - $imageUrlParts = parse_url($imageUrl); - parse_str($imageUrlParts['query'], $imageUrlQuery); - self::setContactImageUrl($dao->id, - CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=' . $imageUrlQuery['photo'], TRUE, NULL, TRUE, TRUE)); - } - } - return TRUE; - } - - /** - * @param int $startId - * @param int $endId - * @return CRM_Core_DAO - * columns include "id" and "image_URL" - */ - public static function findContactImageUrls($startId, $endId) { - $sql = " -SELECT id, image_url -FROM civicrm_contact -WHERE 1 -AND id BETWEEN %1 AND %2 -AND image_URL IS NOT NULL -"; - - $params = [ - 1 => [$startId, 'Integer'], - 2 => [$endId, 'Integer'], - ]; - $dao = CRM_Core_DAO::executeQuery($sql, $params, TRUE, NULL, FALSE, FALSE); - return $dao; - } - - /** - * @param int $cid - * @param string $newImageUrl - */ - public static function setContactImageUrl($cid, $newImageUrl) { - $sql = 'UPDATE civicrm_contact SET image_url=%1 WHERE id=%2'; - $params = [ - 1 => [$newImageUrl, 'String'], - 2 => [$cid, 'Integer'], - ]; - $updatedao = CRM_Core_DAO::executeQuery($sql, $params); - } - - /** - * Update activity contacts CRM-12274 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public static function activityContacts(CRM_Queue_TaskContext $ctx) { - $upgrade = new CRM_Upgrade_Form(); - - $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); - $ovValue[] = $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); - $ovValue[] = $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); - $ovValue[] = $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); - - $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_contacts', 'id', 'name'); - if (!empty($ovValue)) { - $ovValues = implode(', ', $ovValue); - $query = " -UPDATE civicrm_option_value -SET is_reserved = 1 -WHERE option_group_id = {$optionGroupID} AND value IN ($ovValues)"; - - $dao = CRM_Core_DAO::executeQuery($query); - } - - if (!$assigneeID) { - $assigneeID = 1; - $value[] = "({$optionGroupID}, 'Activity Assignees', 1, 'Activity Assignees', 1, 1, 1)"; - } - if (!$sourceID) { - $sourceID = 2; - $value[] = "({$optionGroupID}, 'Activity Source', 2, 'Activity Source', 2, 1, 1)"; - } - if (!$targetID) { - $targetID = 3; - $value[] = "({$optionGroupID}, 'Activity Targets', 3, 'Activity Targets', 3, 1, 1)"; - } - - if (!$assigneeID || !$sourceID || !$targetID) { - $insert = " -INSERT INTO civicrm_option_value -(option_group_id, label, value, name, weight, is_reserved, is_active) -VALUES - -"; - $values = implode(', ', $value); - $query = $insert . $values; - $dao = CRM_Core_DAO::executeQuery($query); - } - - // sometimes an user does not make a clean backup and the above table - // already exists, so lets delete this table - CRM-13665 - $query = "DROP TABLE IF EXISTS civicrm_activity_contact"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " -CREATE TABLE IF NOT EXISTS civicrm_activity_contact ( - id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Activity contact id', - activity_id int(10) unsigned NOT NULL COMMENT 'Foreign key to the activity for this record.', - contact_id int(10) unsigned NOT NULL COMMENT 'Foreign key to the contact for this record.', - record_type_id int(10) unsigned DEFAULT NULL COMMENT 'The record type id for this row', - PRIMARY KEY (id), - UNIQUE KEY UI_activity_contact (contact_id,activity_id,record_type_id), - KEY FK_civicrm_activity_contact_activity_id (activity_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " -INSERT INTO civicrm_activity_contact (activity_id, contact_id, record_type_id) -SELECT activity_id, target_contact_id, {$targetID} as record_type_id -FROM civicrm_activity_target"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " -INSERT INTO civicrm_activity_contact (activity_id, contact_id, record_type_id) -SELECT activity_id, assignee_contact_id, {$assigneeID} as record_type_id -FROM civicrm_activity_assignment"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " - INSERT INTO civicrm_activity_contact (activity_id, contact_id, record_type_id) -SELECT id, source_contact_id, {$sourceID} as record_type_id -FROM civicrm_activity -WHERE source_contact_id IS NOT NULL"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "DROP TABLE civicrm_activity_target"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "DROP TABLE civicrm_activity_assignment"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "ALTER TABLE civicrm_activity - DROP FOREIGN KEY FK_civicrm_activity_source_contact_id"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "ALTER TABLE civicrm_activity DROP COLUMN source_contact_id"; - $dao = CRM_Core_DAO::executeQuery($query); - - return TRUE; - } - - /** - * Migrate word-replacements from $config to civicrm_word_replacement - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - * @see http://issues.civicrm.org/jira/browse/CRM-13187 - */ - public static function wordReplacements(CRM_Queue_TaskContext $ctx) { - $query = " -CREATE TABLE IF NOT EXISTS `civicrm_word_replacement` ( - `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Word replacement ID', - `find_word` varchar(255) COLLATE utf8_bin COMMENT 'Word which need to be replaced', - `replace_word` varchar(255) COLLATE utf8_bin COMMENT 'Word which will replace the word in find', - `is_active` tinyint COMMENT 'Is this entry active?', - `match_type` enum('wildcardMatch', 'exactMatch') DEFAULT 'wildcardMatch', - `domain_id` int unsigned COMMENT 'FK to Domain ID. This is for Domain specific word replacement', - PRIMARY KEY ( `id` ), - UNIQUE INDEX `UI_domain_find` (domain_id, find_word), - CONSTRAINT FK_civicrm_word_replacement_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) -) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; - "; - $dao = CRM_Core_DAO::executeQuery($query); - - self::rebuildWordReplacementTable(); - return TRUE; - } - - /** - * Fix misconfigured constraints created in 4.4.0. To distinguish the good - * and bad configurations, we change the constraint name from "UI_find" - * (the original name in 4.4.0) to "UI_domain_find" (the new name in - * 4.4.1). - * - * @param CRM_Queue_TaskContext $ctx - * @param $rev - * - * @return bool - * TRUE for success - * @see http://issues.civicrm.org/jira/browse/CRM-13655 - */ - public static function wordReplacements_patch(CRM_Queue_TaskContext $ctx, $rev) { - if (CRM_Core_DAO::checkConstraintExists('civicrm_word_replacement', 'UI_find')) { - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement DROP FOREIGN KEY FK_civicrm_word_replacement_domain_id;"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement DROP KEY FK_civicrm_word_replacement_domain_id;"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement DROP KEY UI_find;"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement MODIFY COLUMN `find_word` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'Word which need to be replaced';"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement MODIFY COLUMN `replace_word` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'Word which will replace the word in find';"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement ADD CONSTRAINT UI_domain_find UNIQUE KEY `UI_domain_find` (`domain_id`,`find_word`);"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement ADD CONSTRAINT FK_civicrm_word_replacement_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain` (`id`);"); - } - return TRUE; - } - - /** - * Get all the word-replacements stored in config-arrays - * and convert them to params for the WordReplacement.create API. - * - * Note: This function is duplicated in CRM_Core_BAO_WordReplacement and - * CRM_Upgrade_Incremental_php_FourFour to ensure that the incremental upgrade - * step behaves consistently even as the BAO evolves in future versions. - * However, if there's a bug in here prior to 4.4.0, we should apply the - * bugfix in both places. - * - * @param bool $rebuildEach - * Whether to perform rebuild after each individual API call. - * @return array - * Each item is $params for WordReplacement.create - * @see CRM_Core_BAO_WordReplacement::convertConfigArraysToAPIParams - */ - public static function getConfigArraysAsAPIParams($rebuildEach) { - $wordReplacementCreateParams = []; - // get all domains - $result = civicrm_api3('domain', 'get', [ - 'return' => ['locale_custom_strings'], - ]); - if (!empty($result["values"])) { - foreach ($result["values"] as $value) { - $params = []; - $params["domain_id"] = $value["id"]; - $params["options"] = ['wp-rebuild' => $rebuildEach]; - // unserialize word match string - $localeCustomArray = []; - if (!empty($value["locale_custom_strings"])) { - $localeCustomArray = unserialize($value["locale_custom_strings"]); - } - if (!empty($localeCustomArray)) { - $wordMatchArray = []; - // Traverse Language array - foreach ($localeCustomArray as $localCustomData) { - // Traverse status array "enabled" "disabled" - foreach ($localCustomData as $status => $matchTypes) { - $params["is_active"] = $status == "enabled"; - // Traverse Match Type array "wildcardMatch" "exactMatch" - foreach ($matchTypes as $matchType => $words) { - $params["match_type"] = $matchType; - foreach ($words as $word => $replace) { - $params["find_word"] = $word; - $params["replace_word"] = $replace; - $wordReplacementCreateParams[] = $params; - } - } - } - } - } - } - } - return $wordReplacementCreateParams; - } - - /** - * Get all the word-replacements stored in config-arrays - * and write them out as records in civicrm_word_replacement. - * - * Note: This function is duplicated in CRM_Core_BAO_WordReplacement and - * CRM_Upgrade_Incremental_php_FourFour to ensure that the incremental upgrade - * step behaves consistently even as the BAO evolves in future versions. - * However, if there's a bug in here prior to 4.4.0, we should apply the - * bugfix in both places. - */ - public static function rebuildWordReplacementTable() { - civicrm_api3('word_replacement', 'replace', [ - 'options' => ['match' => ['domain_id', 'find_word']], - 'values' => array_filter(self::getConfigArraysAsAPIParams(FALSE), [__CLASS__, 'isValidWordReplacement']), - ]); - CRM_Core_BAO_WordReplacement::rebuild(); - } - - /** - * CRM-13998 missing alter statements for civicrm_report_instance - */ - public function updateReportInstanceTable() { - - // add civicrm_report_instance.name - - $sql = "SELECT count(*) FROM information_schema.columns " - . "WHERE table_schema = database() AND table_name = 'civicrm_report_instance' AND COLUMN_NAME = 'name' "; - - $res = CRM_Core_DAO::singleValueQuery($sql); - - if ($res <= 0) { - $sql = "ALTER TABLE civicrm_report_instance ADD `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'when combined with report_id/template uniquely identifies the instance'"; - $res = CRM_Core_DAO::executeQuery($sql); - } - - // add civicrm_report_instance args - - $sql = "SELECT count(*) FROM information_schema.columns WHERE table_schema = database() AND table_name = 'civicrm_report_instance' AND COLUMN_NAME = 'args' "; - - $res = CRM_Core_DAO::singleValueQuery($sql); - - if ($res <= 0) { - $sql = "ALTER TABLE civicrm_report_instance ADD `args` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'arguments that are passed in the url when invoking the instance'"; - - $res = CRM_Core_DAO::executeQuery($sql); - } - - return TRUE; - } - - /** - * @param array $params - * @return bool - * TRUE if $params is valid - */ - public static function isValidWordReplacement($params) { - $result = strlen($params['find_word']) <= self::MAX_WORD_REPLACEMENT_SIZE && strlen($params['replace_word']) <= self::MAX_WORD_REPLACEMENT_SIZE; - if (!$result) { - CRM_Core_Error::debug_var('invalidWordReplacement', $params); - } - return $result; - } - -} diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php index 28267eebaccb79652479984fe62e2979013a4e20..74f190a0f2030125265ee2641b68e47ff753d7c9 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php @@ -515,7 +515,7 @@ class CRM_Upgrade_Incremental_php_FourSeven extends CRM_Upgrade_Incremental_Base // } /** - * CRM-16354 + * @see https://issues.civicrm.org/jira/browse/CRM-16354 * * @return int */ @@ -1249,7 +1249,7 @@ FROM `civicrm_dashboard_contact` JOIN `civicrm_contact` WHERE civicrm_dashboard_ } /** - * CRM-19961 + * @see https://issues.civicrm.org/jira/browse/CRM-19961 * Poputate newly added domain id column and add foriegn key onto table. */ public static function populateSMSProviderDomainId() { diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourThree.php b/civicrm/CRM/Upgrade/Incremental/php/FourThree.php deleted file mode 100644 index 4d603e82972c0d7fceff33c45df6ec3b73fc9ea2..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/php/FourThree.php +++ /dev/null @@ -1,1302 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - -/** - * Upgrade logic for 4.3 - */ -class CRM_Upgrade_Incremental_php_FourThree extends CRM_Upgrade_Incremental_Base { - - /** - * Compute any messages which should be displayed beforeupgrade. - * - * Note: This function is called iteratively for each upcoming - * revision to the database. - * - * @param string $preUpgradeMessage - * @param string $rev - * a version number, e.g. '4.3.alpha1', '4.3.beta3', '4.3.0'. - * @param null $currentVer - * - * @return bool - */ - public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { - if ($rev == '4.3.beta3') { - //CRM-12084 - //sql for checking orphaned contribution records - $sql = "SELECT COUNT(ct.id) FROM civicrm_contribution ct LEFT JOIN civicrm_contact c ON ct.contact_id = c.id WHERE c.id IS NULL"; - $count = CRM_Core_DAO::singleValueQuery($sql, [], TRUE, FALSE); - - if ($count > 0) { - $error = ts("There is a data integrity issue with this CiviCRM database. It contains %1 contribution records which are linked to contact records that have been deleted. You will need to correct this manually before you can run the upgrade. Use the following MySQL query to identify the problem records: %2 These records will need to be deleted or linked to an existing contact record.", [ - 1 => $count, - 2 => '<em>SELECT ct.* FROM civicrm_contribution ct LEFT JOIN civicrm_contact c ON ct.contact_id = c.id WHERE c.id IS NULL;</em>', - ]); - throw new CRM_Core_Exception($error); - return FALSE; - } - } - if ($rev == '4.3.beta4' && CRM_Utils_Constant::value('CIVICRM_UF', FALSE) == 'Drupal6') { - // CRM-11823 - Make sure the D6 HTML HEAD technique will work on - // upgrade pages ... except when we're in Drush. - if (!function_exists('drush_main')) { - // force-load theme registry - theme('item_list', []); - $theme_registry = theme_get_registry(); - if (!isset($theme_registry['page']['preprocess functions']) || FALSE === array_search('civicrm_preprocess_page_inject', $theme_registry['page']['preprocess functions'])) { - throw new CRM_Core_Exception('Please reset the Drupal cache (Administer => Site Configuration => Performance => Clear cached data))'); - } - } - } - - if ($rev == '4.3.6') { - $constraintArray = [ - 'civicrm_contact' => 'contact_id', - 'civicrm_payment_processor' => 'payment_processor_id', - ]; - - if (version_compare('4.1alpha1', $currentVer) <= 0) { - $constraintArray['civicrm_campaign'] = 'campaign_id'; - } - - if (version_compare('4.3alpha1', $currentVer) <= 0) { - $constraintArray['civicrm_financial_type'] = 'financial_type_id'; - } - - foreach ($constraintArray as $key => $value) { - $query = "SELECT contri_recur.id FROM civicrm_contribution_recur contri_recur LEFT JOIN {$key} ON contri_recur.{$value} = {$key}.id -WHERE {$key}.id IS NULL"; - if ($value != 'contact_id') { - $query .= " AND contri_recur.{$value} IS NOT NULL "; - } - $dao = CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - if ($dao->N) { - $invalidDataMessage = '<strong>Oops, it looks like you have orphaned recurring contribution records in your database. Before this upgrade can complete they will need to be fixed or deleted. <a href="http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Orphaned+Contribution+Recur+Records" target="_blank">You can review steps to correct this situation on the documentation wiki.</a></strong>'; - throw new CRM_Core_Exception($invalidDataMessage); - return FALSE; - } - } - } - } - - /** - * Compute any messages which should be displayed after upgrade. - * - * @param string $postUpgradeMessage - * alterable. - * @param string $rev - * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. - * @return void - */ - public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { - if ($rev == '4.3.alpha1') { - // check if CiviMember component is enabled - $config = CRM_Core_Config::singleton(); - if (in_array('CiviMember', $config->enableComponents)) { - $postUpgradeMessage .= '<br />' . ts('Membership renewal reminders must now be configured using the Schedule Reminders feature, which supports multiple renewal reminders (Administer > Communications > Schedule Reminders). The Update Membership Statuses scheduled job will no longer send membershp renewal reminders. You can use your existing renewal reminder message template(s) with the Schedule Reminders feature.'); - $postUpgradeMessage .= '<br />' . ts('The Set Membership Reminder Dates scheduled job has been deleted since membership reminder dates stored in the membership table are no longer in use.'); - } - - //CRM-11636 - //here we do the financial type check and migration - $isDefaultsModified = self::_checkAndMigrateDefaultFinancialTypes(); - if ($isDefaultsModified) { - $postUpgradeMessage .= '<br />' . ts('Please review all price set financial type assignments.'); - } - list($context, $orgName) = self::createDomainContacts(); - if ($context == 'added') { - $postUpgradeMessage .= '<br />' . ts("A new organization contact has been added as the default domain contact using the information from your Organization Address and Contact Info settings: '%1'.", [1 => $orgName]); - } - elseif ($context == 'merged') { - $postUpgradeMessage .= '<br />' . ts("The existing organization contact record for '%1' has been marked as the default domain contact, and has been updated with information from your Organization Address and Contact Info settings.", [1 => $orgName]); - } - - $providerExists = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_sms_provider LIMIT 1"); - if ($providerExists) { - $postUpgradeMessage .= '<br />' . ts('SMS providers were found to setup. Please note Clickatell / Twilio are now shipped as extensions and will require installing them to continue working. Extension could be downloaded and installed from <a href="%1">github</a>.', [1 => 'https://github.com/civicrm/civicrm-core/tree/master/tools/extensions']); - } - } - - if ($rev == '4.3.alpha2') { - $sql = " -SELECT title, id -FROM civicrm_action_schedule -WHERE entity_value = '' OR entity_value IS NULL -"; - - $dao = CRM_Core_DAO::executeQuery($sql); - $reminder = []; - $list = ''; - while ($dao->fetch()) { - $reminder[$dao->id] = $dao->title; - $list .= "<li>{$dao->title}</li>"; - } - if (!empty($reminder)) { - $list = "<br /><ul>" . $list . "</ul>"; - $postUpgradeMessage .= '<br />' . ts("Scheduled Reminders must be linked to one or more 'entities' (Events, Event Templates, Activity Types, Membership Types). The following reminders are not configured properly and will not be run. Please review them and update or delete them: %1", [1 => $list]); - } - } - if ($rev == '4.3.beta2') { - $postUpgradeMessage .= '<br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Events - Registration Confirmation and Receipt (on-line)</li><li>Events - Registration Confirmation and Receipt (off-line)</li><li>Pledges - Acknowledgement</li><li>Pledges - Payment Reminder</li><li>Contributions - Receipt (off-line)</li><li>Contributions - Receipt (on-line)</li><li>Memberships - Signup and Renewal Receipts (off-line)</li><li>Memberships - Receipt (on-line)</li><li>Personal Campaign Pages - Admin Notification</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).'); - } - - if ($rev == '4.3.beta5') { - $postUpgradeMessage .= '<br />' . ts("If you are interested in trying out the new Accounting Integration features, please review user permissions and assign the new 'manual batch' permissions as appropriate."); - - // CRM-12155 - $query = " -SELECT ceft.id FROM `civicrm_financial_trxn` cft -LEFT JOIN civicrm_entity_financial_trxn ceft - ON ceft.financial_trxn_id = cft.id AND ceft.entity_table = 'civicrm_contribution' -LEFT JOIN civicrm_contribution cc - ON cc.id = ceft.entity_id AND ceft.entity_table = 'civicrm_contribution' -WHERE cc.id IS NULL -"; - - $dao = CRM_Core_DAO::executeQuery($query); - $isOrphanData = TRUE; - if (!$dao->N) { - $query = " -SELECT cli.id FROM civicrm_line_item cli -LEFT JOIN civicrm_contribution cc ON cli.entity_id = cc.id AND cli.entity_table = 'civicrm_contribution' -LEFT JOIN civicrm_participant cp ON cli.entity_id = cp.id AND cli.entity_table = 'civicrm_participant' -WHERE CASE WHEN cli.entity_table = 'civicrm_contribution' - THEN cc.id IS NULL - ELSE cp.id IS NULL -END -"; - $dao = CRM_Core_DAO::executeQuery($query); - if (!$dao->N) { - $revPattern = '/^((\d{1,2})\.\d{1,2})\.(\d{1,2}|\w{4,7})?$/i'; - preg_match($revPattern, $currentVer, $version); - if ($version[1] >= 4.3) { - $query = " -SELECT cfi.id -FROM civicrm_financial_item cfi -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.entity_table = 'civicrm_financial_item' and cfi.id = ceft.entity_id -WHERE ceft.entity_id IS NULL; -"; - $dao = CRM_Core_DAO::executeQuery($query); - if (!$dao->N) { - $isOrphanData = FALSE; - } - } - else { - $isOrphanData = FALSE; - } - } - } - - if ($isOrphanData) { - $postUpgradeMessage .= "</br> <strong>" . ts('Your database contains extraneous financial records related to deleted contacts and contributions. These records should not affect the site and will not appear in reports, search results or exports. However you may wish to clean them up. Refer to <a href="%1" target="_blank">this wiki page for details</a>. - ', [1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Clean+up+extraneous+financial+data+-+4.3+upgrades']) . "</strong>"; - } - } - if ($rev == '4.3.4') { - $postUpgradeMessage .= '<br />' . ts('System Administrator Alert: If you are running scheduled jobs using CLI.php, you will need to reconfigure cron tasks to include a password. Scheduled jobs will no longer run if the password is not provided (<a href="%1" target="_blank">learn more</a>).', - [1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Managing+Scheduled+Jobs']); - } - if ($rev == '4.3.5') { - $postUpgradeMessage .= '<br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Events - Registration Confirmation and Receipt (on-line)</li><li>Events - Registration Confirmation and Receipt (off-line)</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).'); - } - if ($rev == '4.3.6') { - $flag = CRM_Core_DAO::singleValueQuery('SELECT count(ccp.id) FROM civicrm_contribution_product ccp -INNER JOIN civicrm_product cp ON ccp.product_id = cp.id -WHERE ccp.financial_type_id IS NULL and cp.cost > 0'); - if ($flag) { - $postUpgradeMessage .= '<br />' . ts('Your database contains one or more premiums which have a cost but are not linked to a financial type. If you are exporting transations to an accounting package, this will result in unbalanced transactions. <a href="%1" target="_blank">You can review steps to correct this situation on the wiki.</a>', - [1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Issues+Caused+by+Missing+Cost+of+Goods+Account+-+4.3+Upgrades']); - } - } - } - - /** - * @param $rev - * - * @return bool - */ - public function upgrade_4_3_alpha1($rev) { - self::task_4_3_alpha1_checkDBConstraints(); - - // add indexes for civicrm_entity_financial_trxn - // CRM-12141 - $this->addTask('Check/Add indexes for civicrm_entity_financial_trxn', 'task_4_3_x_checkIndexes', $rev); - // task to process sql - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.alpha1']), 'runSql', $rev); - - //CRM-11636 - $this->addTask('Populate financial type values for price records', 'assignFinancialTypeToPriceRecords'); - //CRM-11514 create financial records for contributions - $this->addTask('Create financial records for contributions', 'createFinancialRecords'); - - $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact'); - $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact'); - for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { - $endId = $startId + self::BATCH_SIZE - 1; - $title = "Upgrade timestamps ($startId => $endId)"; - $this->addTask($title, 'convertTimestamps', $startId, $endId); - } - - // CRM-10893 - // fix WP access control - $config = CRM_Core_Config::singleton(); - if ($config->userFramework == 'WordPress') { - civicrm_wp_set_capabilities(); - } - - // Update phones CRM-11292. - $this->addTask('Upgrade Phone Numbers', 'phoneNumeric'); - - return TRUE; - } - - /** - * @param $rev - */ - public function upgrade_4_3_alpha2($rev) { - //CRM-11847 - $isColumnPresent = CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_dedupe_rule_group', 'is_default'); - if ($isColumnPresent) { - CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_dedupe_rule_group DROP COLUMN is_default'); - } - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.alpha2']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_alpha3($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.alpha3']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta2($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta2']), 'runSql', $rev); - - // CRM-12002 - if ( - CRM_Core_DAO::checkTableExists('log_civicrm_line_item') && - CRM_Core_BAO_SchemaHandler::checkIfFieldExists('log_civicrm_line_item', 'label') - ) { - CRM_Core_DAO::executeQuery('ALTER TABLE `log_civicrm_line_item` CHANGE `label` `label` VARCHAR(255) NULL DEFAULT NULL'); - } - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta3($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta3']), 'runSql', $rev); - // CRM-12065 - $query = "SELECT id, form_values FROM civicrm_report_instance WHERE form_values LIKE '%contribution_type%'"; - $this->addTask('Replace contribution_type to financial_type in table civicrm_report_instance', 'replaceContributionTypeId', $query, 'reportInstance'); - $query = "SELECT * FROM civicrm_saved_search WHERE form_values LIKE '%contribution_type%'"; - $this->addTask('Replace contribution_type to financial_type in table civicrm_saved_search', 'replaceContributionTypeId', $query, 'savedSearch'); - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta4($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta4']), 'runSql', $rev); - // add indexes for civicrm_entity_financial_trxn - // CRM-12141 - $this->addTask('Check/Add indexes for civicrm_entity_financial_trxn', 'task_4_3_x_checkIndexes', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta5($rev) { - // CRM-12205 - if ( - CRM_Core_DAO::checkTableExists('log_civicrm_financial_trxn') && - CRM_Core_BAO_SchemaHandler::checkIfFieldExists('log_civicrm_financial_trxn', 'trxn_id') - ) { - CRM_Core_DAO::executeQuery('ALTER TABLE `log_civicrm_financial_trxn` CHANGE `trxn_id` `trxn_id` VARCHAR(255) NULL DEFAULT NULL'); - } - // CRM-12142 - some sites didn't get this column added yet, and sites which installed 4.3 from scratch will already have it - // CRM-12367 - add this column to single lingual sites only - $upgrade = new CRM_Upgrade_Form(); - if (!$upgrade->multilingual && - !CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_premiums', 'premiums_nothankyou_label') - ) { - $query = " -ALTER TABLE civicrm_premiums -ADD COLUMN premiums_nothankyou_label varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL - COMMENT 'Label displayed for No Thank-you option in premiums block (e.g. No thank you)' -"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - } - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta5']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_4($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.4']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_5($rev) { - // CRM-12156 - $config = CRM_Core_Config::singleton(); - $dbname = DB::parseDSN($config->dsn); - $sql = "SELECT DELETE_RULE -FROM information_schema.REFERENTIAL_CONSTRAINTS -WHERE CONSTRAINT_NAME = 'FK_civicrm_financial_item_contact_id' -AND CONSTRAINT_SCHEMA = %1"; - $params = [1 => [$dbname['database'], 'String']]; - $onDelete = CRM_Core_DAO::singleValueQuery($sql, $params, TRUE, FALSE); - - if ($onDelete != 'CASCADE') { - $query = "ALTER TABLE `civicrm_financial_item` -DROP FOREIGN KEY FK_civicrm_financial_item_contact_id, -DROP INDEX FK_civicrm_financial_item_contact_id;"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - $query = " -ALTER TABLE `civicrm_financial_item` -ADD CONSTRAINT `FK_civicrm_financial_item_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE; -"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - } - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.5']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_6($rev) { - //CRM-13094 - $this->addTask(ts('Add missing constraints'), 'addMissingConstraints', $rev); - //CRM-13088 - $this->addTask('Add ON DELETE Options for constraints', 'task_4_3_x_checkConstraints', $rev); - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.6']), 'runSql', $rev); - // CRM-12844 - // update line_item, financial_trxn and financial_item table for recurring contributions - $this->addTask('Update financial_account_id in financial_trxn table', 'updateFinancialTrxnData', $rev); - $this->addTask('Update Line Item Data', 'updateLineItemData', $rev); - } - - /** - * CRM-11636 - * @return bool - */ - public function assignFinancialTypeToPriceRecords() { - $upgrade = new CRM_Upgrade_Form(); - //here we update price set entries - $sqlFinancialIds = " -SELECT id, LCASE(name) name -FROM civicrm_financial_type -WHERE name IN ('Donation', 'Event Fee', 'Member Dues'); -"; - $daoFinancialIds = CRM_Core_DAO::executeQuery($sqlFinancialIds); - while ($daoFinancialIds->fetch()) { - $financialIds[$daoFinancialIds->name] = $daoFinancialIds->id; - } - $sqlPriceSetUpdate = " -UPDATE civicrm_price_set ps -SET ps.financial_type_id = - CASE - WHEN ps.extends LIKE '%1%' THEN {$financialIds['event fee']} - WHEN ps.extends LIKE '2' THEN {$financialIds['donation']} - WHEN ps.extends LIKE '3' THEN {$financialIds['member dues']} - END -WHERE financial_type_id IS NULL -"; - CRM_Core_DAO::executeQuery($sqlPriceSetUpdate); - - //here we update price field value rows - $sqlPriceFieldValueUpdate = " -UPDATE civicrm_price_field_value pfv -LEFT JOIN civicrm_membership_type mt ON (pfv.membership_type_id = mt.id) -INNER JOIN civicrm_price_field pf ON (pfv.price_field_id = pf.id) -INNER JOIN civicrm_price_set ps ON (pf.price_set_id = ps.id) - SET pfv.financial_type_id = - CASE - WHEN pfv.membership_type_id IS NOT NULL THEN mt.financial_type_id - WHEN pfv.membership_type_id IS NULL THEN ps.financial_type_id - END -"; - CRM_Core_DAO::executeQuery($sqlPriceFieldValueUpdate); - - return TRUE; - } - - /** - * @return bool - */ - public static function _checkAndMigrateDefaultFinancialTypes() { - $modifiedDefaults = FALSE; - //insert types if not exists - $sqlFetchTypes = " -SELECT id, name -FROM civicrm_contribution_type -WHERE name IN ('Donation', 'Event Fee', 'Member Dues') AND is_active =1 -"; - $daoFetchTypes = CRM_Core_DAO::executeQuery($sqlFetchTypes); - - if ($daoFetchTypes->N < 3) { - $modifiedDefaults = TRUE; - $insertStatments = [ - 'Donation' => "('Donation', 0, 1, 1)", - 'Member' => "('Member Dues', 0, 1, 1)", - 'Event Fee' => "('Event Fee', 0, 1, 0)", - ]; - foreach ($insertStatments as $values) { - $query = " -INSERT INTO civicrm_contribution_type (name, is_reserved, is_active, is_deductible) -VALUES $values -ON DUPLICATE KEY UPDATE is_active = 1 -"; - CRM_Core_DAO::executeQuery($query); - } - } - return $modifiedDefaults; - } - - /** - * @return bool - */ - public function createFinancialRecords() { - $upgrade = new CRM_Upgrade_Form(); - - // update civicrm_entity_financial_trxn.amount = civicrm_financial_trxn.total_amount - $query = " -UPDATE civicrm_entity_financial_trxn ceft -LEFT JOIN civicrm_financial_trxn cft ON cft.id = ceft.financial_trxn_id -SET ceft.amount = total_amount -WHERE cft.net_amount IS NOT NULL -AND ceft.entity_table = 'civicrm_contribution' -"; - CRM_Core_DAO::executeQuery($query); - - $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - $completedStatus = array_search('Completed', $contributionStatus); - $pendingStatus = array_search('Pending', $contributionStatus); - $cancelledStatus = array_search('Cancelled', $contributionStatus); - $queryParams = [ - 1 => [$completedStatus, 'Integer'], - 2 => [$pendingStatus, 'Integer'], - 3 => [$cancelledStatus, 'Integer'], - ]; - - $accountType = key(CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name = 'Asset' ")); - $query = " -SELECT id -FROM civicrm_financial_account -WHERE is_default = 1 -AND financial_account_type_id = {$accountType} -"; - $financialAccountId = CRM_Core_DAO::singleValueQuery($query); - - $accountRelationsips = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', - 'account_relationship', CRM_Core_DAO::$_nullArray, 'validate'); - - $accountsReceivableAccount = array_search('Accounts Receivable Account is', $accountRelationsips); - $incomeAccountIs = array_search('Income Account is', $accountRelationsips); - $assetAccountIs = array_search('Asset Account is', $accountRelationsips); - $expenseAccountIs = array_search('Expense Account is', $accountRelationsips); - - $financialItemStatus = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialItem', 'status_id', - CRM_Core_DAO::$_nullArray, 'validate'); - $unpaidStatus = array_search('Unpaid', $financialItemStatus); - $paidStatus = array_search('Paid', $financialItemStatus); - - $validCurrencyCodes = CRM_Core_PseudoConstant::currencyCode(); - $validCurrencyCodes = implode("','", $validCurrencyCodes); - $config = CRM_Core_Config::singleton(); - $defaultCurrency = $config->defaultCurrency; - $now = date('YmdHis'); - - //adding financial_trxn records and entity_financial_trxn records related to contribution - //Add temp column for easy entry in entity_financial_trxn - $sql = "ALTER TABLE civicrm_financial_trxn ADD COLUMN contribution_id INT DEFAULT NULL"; - CRM_Core_DAO::executeQuery($sql); - - //pending pay later status handling - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, - check_number, to_financial_account_id, from_financial_account_id, trxn_date) -SELECT con.id as contribution_id, con.payment_instrument_id, - IF(con.currency IN ('{$validCurrencyCodes}'), con.currency, '{$defaultCurrency}') as currency, - con.total_amount, con.net_amount, con.fee_amount, con.trxn_id, con.contribution_status_id, - con.check_number, efa.financial_account_id as to_financial_account_id, NULL as from_financial_account_id, - REPLACE(REPLACE(REPLACE( - CASE - WHEN con.receive_date IS NOT NULL THEN - con.receive_date - WHEN con.receipt_date IS NOT NULL THEN - con.receipt_date - ELSE - {$now} - END - , '-', ''), ':', ''), ' ', '') as trxn_date -FROM civicrm_contribution con - LEFT JOIN civicrm_entity_financial_account efa - ON (con.financial_type_id = efa.entity_id AND efa.entity_table = 'civicrm_financial_type' - AND efa.account_relationship = {$accountsReceivableAccount}) -WHERE con.is_pay_later = 1 -AND con.contribution_status_id = {$pendingStatus} -"; - CRM_Core_DAO::executeQuery($sql); - - //create a temp table to hold financial account id related to payment instruments - $tempTable1 = CRM_Utils_SQL_TempTable::build()->setCategory('upgrade43')->setDurable(); - - $sql = " -SELECT ceft.financial_account_id financial_account_id, cov.value as instrument_id -FROM civicrm_entity_financial_account ceft -INNER JOIN civicrm_option_value cov ON cov.id = ceft.entity_id AND ceft.entity_table = 'civicrm_option_value' -INNER JOIN civicrm_option_group cog ON cog.id = cov.option_group_id -WHERE cog.name = 'payment_instrument' -"; - $tempTable1->createWithQuery($sql); - $tempTableName1 = $tempTable1->getName(); - - //CRM-12141 - $sql = "ALTER TABLE {$tempTableName1} ADD INDEX index_instrument_id (instrument_id(200));"; - CRM_Core_DAO::executeQuery($sql); - - //create temp table to process completed / cancelled contribution - $tempTable2 = CRM_Utils_SQL_TempTable::build()->setCategory('upgrade43')->setDurable(); - $tempTableName2 = $tempTable2->getName(); - $sql = " -SELECT con.id as contribution_id, con.payment_instrument_id, - IF(con.currency IN ('{$validCurrencyCodes}'), con.currency, '{$defaultCurrency}') as currency, - con.total_amount, con.net_amount, con.fee_amount, con.trxn_id, con.contribution_status_id, - con.check_number, NULL as from_financial_account_id, - REPLACE(REPLACE(REPLACE( - CASE - WHEN con.receive_date IS NOT NULL THEN - con.receive_date - WHEN con.receipt_date IS NOT NULL THEN - con.receipt_date - ELSE - {$now} - END - , '-', ''), ':', ''), ' ', '') as trxn_date, - CASE - WHEN con.payment_instrument_id IS NULL THEN - {$financialAccountId} - WHEN con.payment_instrument_id IS NOT NULL THEN - tpi.financial_account_id - END as to_financial_account_id, - IF(eft.financial_trxn_id IS NULL, 'insert', eft.financial_trxn_id) as action -FROM civicrm_contribution con -LEFT JOIN civicrm_entity_financial_trxn eft - ON (eft.entity_table = 'civicrm_contribution' AND eft.entity_id = con.id) -LEFT JOIN {$tempTableName1} tpi - ON con.payment_instrument_id = tpi.instrument_id -WHERE con.contribution_status_id IN ({$completedStatus}, {$cancelledStatus}) -"; - $tempTable2->createWithQuery($sql); - - // CRM-12141 - $sql = "ALTER TABLE {$tempTableName2} ADD INDEX index_action (action);"; - CRM_Core_DAO::executeQuery($sql); - - //handling for completed contribution and cancelled contribution - //insertion of new records - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, check_number, - to_financial_account_id, from_financial_account_id, trxn_date) -SELECT tempI.contribution_id, tempI.payment_instrument_id, tempI.currency, tempI.total_amount, tempI.net_amount, - tempI.fee_amount, tempI.trxn_id, tempI.contribution_status_id, tempI.check_number, - tempI.to_financial_account_id, tempI.from_financial_account_id, tempI.trxn_date -FROM {$tempTableName2} tempI -WHERE tempI.action = 'insert' -"; - CRM_Core_DAO::executeQuery($sql); - - //update of existing records - $sql = " -UPDATE civicrm_financial_trxn ft - INNER JOIN {$tempTableName2} tempU - ON (tempU.action != 'insert' AND ft.id = tempU.action) -SET ft.from_financial_account_id = NULL, - ft.to_financial_account_id = tempU.to_financial_account_id, - ft.status_id = tempU.contribution_status_id, - ft.payment_instrument_id = tempU.payment_instrument_id, - ft.check_number = tempU.check_number, - ft.contribution_id = tempU.contribution_id;"; - CRM_Core_DAO::executeQuery($sql); - - //insert the -ve transaction rows for cancelled contributions - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, - check_number, to_financial_account_id, from_financial_account_id, trxn_date) -SELECT ft.contribution_id, ft.payment_instrument_id, ft.currency, -ft.total_amount, ft.net_amount, ft.fee_amount, ft.trxn_id, - ft.status_id, ft.check_number, ft.to_financial_account_id, ft.from_financial_account_id, ft.trxn_date -FROM civicrm_financial_trxn ft -WHERE ft.status_id = {$cancelledStatus};"; - CRM_Core_DAO::executeQuery($sql); - - //inserting entity financial trxn entries if its not present in entity_financial_trxn for completed and pending contribution statuses - //this also handles +ve and -ve both transaction entries for a cancelled contribution - $sql = " -INSERT INTO civicrm_entity_financial_trxn (entity_table, entity_id, financial_trxn_id, amount) -SELECT 'civicrm_contribution', ft.contribution_id, ft.id, ft.total_amount as amount -FROM civicrm_financial_trxn ft -WHERE contribution_id IS NOT NULL AND - ft.id NOT IN (SELECT financial_trxn_id - FROM civicrm_entity_financial_trxn - WHERE entity_table = 'civicrm_contribution' - AND entity_id = ft.contribution_id)"; - CRM_Core_DAO::executeQuery($sql); - //end of adding financial_trxn records and entity_financial_trxn records related to contribution - - //update all linked line_item rows - // set line_item.financial_type_id = contribution.financial_type_id if contribution page id is null and not participant line item - // set line_item.financial_type_id = price_field_value.financial_type_id if contribution page id is set and not participant line item - // set line_item.financial_type_id = event.financial_type_id if its participant line item and line_item.price_field_value_id is null - // set line_item.financial_type_id = price_field_value.financial_type_id if its participant line item and line_item.price_field_value_id is set - $updateLineItemSql = " -UPDATE civicrm_line_item li - LEFT JOIN civicrm_contribution con - ON (li.entity_id = con.id AND li.entity_table = 'civicrm_contribution') - LEFT JOIN civicrm_price_field_value cpfv - ON li.price_field_value_id = cpfv.id - LEFT JOIN civicrm_participant cp - ON (li.entity_id = cp.id AND li.entity_table = 'civicrm_participant') - LEFT JOIN civicrm_event ce - ON ce.id = cp.event_id -SET li.financial_type_id = CASE - WHEN (con.contribution_page_id IS NULL || li.price_field_value_id IS NULL) AND cp.id IS NULL THEN - con.financial_type_id - WHEN (con.contribution_page_id IS NOT NULL AND cp.id IS NULL) || (cp.id IS NOT NULL AND li.price_field_value_id IS NOT NULL) THEN - cpfv.financial_type_id - WHEN cp.id IS NOT NULL AND li.price_field_value_id IS NULL THEN - ce.financial_type_id - END"; - CRM_Core_DAO::executeQuery($updateLineItemSql, $queryParams); - - //add the financial_item entries - //add a temp column so that inserting entity_financial_trxn entries gets easy - $sql = "ALTER TABLE civicrm_financial_item ADD COLUMN f_trxn_id INT DEFAULT NULL"; - CRM_Core_DAO::executeQuery($sql); - - //add financial_item entries for contribution completed / pending pay later / cancelled - $contributionlineItemSql = " -INSERT INTO civicrm_financial_item - (transaction_date, contact_id, amount, currency, entity_table, entity_id, description, status_id, financial_account_id, f_trxn_id) - -SELECT REPLACE(REPLACE(REPLACE(ft.trxn_date, '-', ''), ':', ''), ' ', ''), con.contact_id, - IF(ft.total_amount < 0 AND con.contribution_status_id = %3, -li.line_total, li.line_total) as line_total, con.currency, 'civicrm_line_item', - li.id as line_item_id, li.label as line_item_label, - IF(con.contribution_status_id = {$pendingStatus}, {$unpaidStatus}, {$paidStatus}) as status_id, efa.financial_account_id as financial_account_id, - ft.id as f_trxn_id -FROM civicrm_line_item li - INNER JOIN civicrm_contribution con - ON (li.entity_id = con.id AND li.entity_table = 'civicrm_contribution') - INNER JOIN civicrm_financial_trxn ft - ON (con.id = ft.contribution_id) - LEFT JOIN civicrm_entity_financial_account efa - ON (li.financial_type_id = efa.entity_id AND efa.entity_table = 'civicrm_financial_type' - AND efa.account_relationship = {$incomeAccountIs}) -WHERE con.contribution_status_id IN (%1, %3) OR (con.is_pay_later = 1 AND con.contribution_status_id = %2)"; - CRM_Core_DAO::executeQuery($contributionlineItemSql, $queryParams); - - //add financial_item entries for event - $participantLineItemSql = " -INSERT INTO civicrm_financial_item - (transaction_date, contact_id, amount, currency, entity_table, entity_id, description, status_id, financial_account_id, f_trxn_id) - -SELECT REPLACE(REPLACE(REPLACE(ft.trxn_date, '-', ''), ':', ''), ' ', ''), con.contact_id, - IF(ft.total_amount < 0 AND con.contribution_status_id = %3, -li.line_total, li.line_total) as line_total, - con.currency, 'civicrm_line_item', li.id as line_item_id, li.label as line_item_label, - IF(con.contribution_status_id = {$pendingStatus}, {$unpaidStatus}, {$paidStatus}) as status_id, - efa.financial_account_id as financial_account_id, ft.id as f_trxn_id -FROM civicrm_line_item li - INNER JOIN civicrm_participant par - ON (li.entity_id = par.id AND li.entity_table = 'civicrm_participant') - INNER JOIN civicrm_participant_payment pp - ON (pp.participant_id = par.id) - INNER JOIN civicrm_contribution con - ON (pp.contribution_id = con.id) - INNER JOIN civicrm_financial_trxn ft - ON (con.id = ft.contribution_id) - LEFT JOIN civicrm_entity_financial_account efa - ON (li.financial_type_id = efa.entity_id AND - efa.entity_table = 'civicrm_financial_type' AND efa.account_relationship = {$incomeAccountIs}) -WHERE con.contribution_status_id IN (%1, %3) OR (con.is_pay_later = 1 AND con.contribution_status_id = %2)"; - CRM_Core_DAO::executeQuery($participantLineItemSql, $queryParams); - - //fee handling for contributions - //insert fee entries in financial_trxn for contributions - $sql = "ALTER TABLE civicrm_financial_trxn ADD COLUMN is_fee TINYINT DEFAULT NULL"; - CRM_Core_DAO::executeQuery($sql); - - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, check_number, - to_financial_account_id, from_financial_account_id, trxn_date, payment_processor_id, is_fee) - -SELECT DISTINCT con.id, ft.payment_instrument_id, ft.currency, ft.fee_amount, NULL, NULL, ft.trxn_id, %1 as status_id, - ft.check_number, efaFT.financial_account_id as to_financial_account_id, CASE - WHEN efaPP.financial_account_id IS NOT NULL THEN - efaPP.financial_account_id - WHEN tpi.financial_account_id IS NOT NULL THEN - tpi.financial_account_id - ELSE - {$financialAccountId} - END as from_financial_account_id, ft.trxn_date, ft.payment_processor_id, 1 as is_fee -FROM civicrm_contribution con - INNER JOIN civicrm_financial_trxn ft - ON (ft.contribution_id = con.id) - LEFT JOIN civicrm_entity_financial_account efaFT - ON (con.financial_type_id = efaFT.entity_id AND efaFT.entity_table = 'civicrm_financial_type' - AND efaFT.account_relationship = {$expenseAccountIs}) - LEFT JOIN civicrm_entity_financial_account efaPP - ON (ft.payment_processor_id = efaPP.entity_id AND efaPP.entity_table = 'civicrm_payment_processor' - AND efaPP.account_relationship = {$assetAccountIs}) - LEFT JOIN {$tempTableName1} tpi - ON ft.payment_instrument_id = tpi.instrument_id -WHERE ft.fee_amount IS NOT NULL AND ft.fee_amount != 0 AND (con.contribution_status_id IN (%1, %3) OR (con.contribution_status_id =%2 AND con.is_pay_later = 1))"; - CRM_Core_DAO::executeQuery($sql, $queryParams); - - //link financial_trxn to contribution - $sql = " -INSERT INTO civicrm_entity_financial_trxn - (entity_table, entity_id, financial_trxn_id, amount) -SELECT 'civicrm_contribution', ft.contribution_id, ft.id, ft.total_amount -FROM civicrm_financial_trxn ft -WHERE ft.is_fee = 1"; - CRM_Core_DAO::executeQuery($sql); - - //add fee related entries to financial item table - $domainId = CRM_Core_Config::domainID(); - $domainContactId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $domainId, 'contact_id'); - $sql = " -INSERT INTO civicrm_financial_item - (transaction_date, contact_id, amount, currency, entity_table, entity_id, description, status_id, financial_account_id, f_trxn_id) -SELECT ft.trxn_date, {$domainContactId} as contact_id, ft.total_amount, ft.currency, 'civicrm_financial_trxn', ft.id, - 'Fee', {$paidStatus} as status_id, ft.to_financial_account_id as financial_account_id, ft.id as f_trxn_id -FROM civicrm_financial_trxn ft -WHERE ft.is_fee = 1;"; - CRM_Core_DAO::executeQuery($sql); - - //add entries to entity_financial_trxn table - $sql = " -INSERT INTO civicrm_entity_financial_trxn (entity_table, entity_id, financial_trxn_id, amount) -SELECT 'civicrm_financial_item' as entity_table, fi.id as entity_id, fi.f_trxn_id as financial_trxn_id, fi.amount -FROM civicrm_financial_item fi"; - CRM_Core_DAO::executeQuery($sql); - - //drop the temparory columns - $sql = "ALTER TABLE civicrm_financial_trxn - DROP COLUMN contribution_id, - DROP COLUMN is_fee;"; - CRM_Core_DAO::executeQuery($sql); - - $sql = "ALTER TABLE civicrm_financial_item DROP f_trxn_id"; - CRM_Core_DAO::executeQuery($sql); - - return TRUE; - } - - /** - * @return array - */ - public function createDomainContacts() { - $domainParams = $context = []; - $query = " -ALTER TABLE civicrm_domain ADD contact_id INT( 10 ) UNSIGNED NULL DEFAULT NULL COMMENT 'FK to Contact ID. This is specifically not an FK to avoid circular constraints', - ADD CONSTRAINT FK_civicrm_domain_contact_id FOREIGN KEY (contact_id) REFERENCES civicrm_contact(id);"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - $query = ' -SELECT cd.id, cd.name, ce.email FROM civicrm_domain cd -LEFT JOIN civicrm_loc_block clb ON clb.id = cd. loc_block_id -LEFT JOIN civicrm_email ce ON ce.id = clb.email_id ; -'; - $dao = CRM_Core_DAO::executeQuery($query); - while ($dao->fetch()) { - $query = " -SELECT cc.id FROM civicrm_contact cc -LEFT JOIN civicrm_email ce ON ce.contact_id = cc.id -WHERE cc.contact_type = 'Organization' AND cc.organization_name = %1 -"; - $params = [1 => [$dao->name, 'String']]; - if ($dao->email) { - $query .= " AND ce.email = %2 "; - $params[2] = [$dao->email, 'String']; - } - $contactID = CRM_Core_DAO::singleValueQuery($query, $params); - $context[1] = $dao->name; - if (empty($contactID)) { - $params = [ - 'sort_name' => $dao->name, - 'display_name' => $dao->name, - 'legal_name' => $dao->name, - 'organization_name' => $dao->name, - 'contact_type' => 'Organization', - ]; - $contact = CRM_Contact_BAO_Contact::add($params); - $contactID = $contact->id; - $context[0] = 'added'; - } - else { - $context[0] = 'merged'; - } - $domainParams['contact_id'] = $contactID; - CRM_Core_BAO_Domain::edit($domainParams, $dao->id); - } - return $context; - } - - public function task_4_3_alpha1_checkDBConstraints() { - //checking whether the foreign key exists before dropping it CRM-11260 - $config = CRM_Core_Config::singleton(); - $dbUf = DB::parseDSN($config->dsn); - $tables = [ - 'autorenewal_msg_id' => [ - 'tableName' => 'civicrm_membership_type', - 'fkey' => 'FK_civicrm_membership_autorenewal_msg_id', - ], - 'to_account_id' => [ - 'tableName' => 'civicrm_financial_trxn', - 'constraintName' => 'civicrm_financial_trxn_ibfk_2', - ], - 'from_account_id' => [ - 'tableName' => 'civicrm_financial_trxn', - 'constraintName' => 'civicrm_financial_trxn_ibfk_1', - ], - 'contribution_type_id' => [ - 'tableName' => 'civicrm_contribution_recur', - 'fkey' => 'FK_civicrm_contribution_recur_contribution_type_id', - ], - ]; - $query = " -SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS -WHERE table_name = 'civicrm_contribution_recur' -AND constraint_name = 'FK_civicrm_contribution_recur_contribution_type_id' -AND TABLE_SCHEMA = %1 -"; - $params = [1 => [$dbUf['database'], 'String']]; - $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - foreach ($tables as $columnName => $value) { - if ($value['tableName'] == 'civicrm_membership_type' || $value['tableName'] == 'civicrm_contribution_recur') { - $foreignKeyExists = CRM_Core_DAO::checkConstraintExists($value['tableName'], $value['fkey']); - $fKey = $value['fkey']; - } - else { - $foreignKeyExists = CRM_Core_DAO::checkFKConstraintInFormat($value['tableName'], $columnName); - $fKey = "`FK_{$value['tableName']}_{$columnName}`"; - } - if ($foreignKeyExists || $value['tableName'] == 'civicrm_financial_trxn') { - if ($value['tableName'] != 'civicrm_contribution_recur' || ($value['tableName'] == 'civicrm_contribution_recur' && $dao->N)) { - $constraintName = $foreignKeyExists ? $fKey : $value['constraintName']; - $query = "ALTER TABLE {$value['tableName']} DROP FOREIGN KEY {$constraintName}"; - CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - } - $query = "ALTER TABLE {$value['tableName']} DROP INDEX {$fKey}"; - CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - } - } - // check if column contact_id is present or not in civicrm_financial_account - $fieldExists = CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_financial_account', 'contact_id', FALSE); - if (!$fieldExists) { - $query = " -ALTER TABLE civicrm_financial_account - ADD contact_id int(10) unsigned DEFAULT NULL COMMENT 'Version identifier of financial_type' AFTER name, - ADD CONSTRAINT FK_civicrm_financial_account_contact_id FOREIGN KEY (contact_id) REFERENCES civicrm_contact(id); -"; - CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - } - } - - /** - * Read creation and modification times from civicrm_log; add them to civicrm_contact. - * - * @param \CRM_Queue_TaskContext $ctx - * @param int $startId - * @param int $endId - * - * @return bool - */ - public function convertTimestamps(CRM_Queue_TaskContext $ctx, $startId, $endId) { - $sql = " - SELECT entity_id, min(modified_date) AS created, max(modified_date) AS modified - FROM civicrm_log - WHERE entity_table = 'civicrm_contact' - AND entity_id BETWEEN %1 AND %2 - GROUP BY entity_id - "; - $params = [ - 1 => [$startId, 'Integer'], - 2 => [$endId, 'Integer'], - ]; - $dao = CRM_Core_DAO::executeQuery($sql, $params); - while ($dao->fetch()) { - // FIXME civicrm_log.modified_date is DATETIME; civicrm_contact.modified_date is TIMESTAMP - CRM_Core_DAO::executeQuery( - 'UPDATE civicrm_contact SET created_date = FROM_UNIXTIME(UNIX_TIMESTAMP(%1)), modified_date = FROM_UNIXTIME(UNIX_TIMESTAMP(%2)) WHERE id = %3', - [ - 1 => [$dao->created, 'String'], - 2 => [$dao->modified, 'String'], - 3 => [$dao->entity_id, 'Integer'], - ] - ); - } - - return TRUE; - } - - /** - * Change index and add missing constraints for civicrm_contribution_recur. - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public function addMissingConstraints(CRM_Queue_TaskContext $ctx) { - $query = "SHOW KEYS FROM `civicrm_contribution_recur` WHERE key_name = 'UI_contrib_payment_instrument_id'"; - $dao = CRM_Core_DAO::executeQuery($query); - if ($dao->N) { - CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_contribution_recur DROP INDEX UI_contrib_payment_instrument_id'); - CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_contribution_recur ADD INDEX UI_contribution_recur_payment_instrument_id (payment_instrument_id)'); - } - $constraintArray = [ - 'contact_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE ", - 'payment_processor_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor` (`id`) ON DELETE SET NULL ", - 'financial_type_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`) ON DELETE SET NULL ", - 'campaign_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign` (`id`) ON DELETE SET NULL ", - ]; - $constraint = []; - foreach ($constraintArray as $constraintKey => $value) { - $foreignKeyExists = CRM_Core_DAO::checkFKConstraintInFormat('civicrm_contribution_recur', $constraintKey); - if (!$foreignKeyExists) { - $constraint[] = $value; - } - } - if (!empty($constraint)) { - $query = "ALTER TABLE civicrm_contribution_recur " . implode(' , ', $constraint); - CRM_Core_DAO::executeQuery($query); - } - return TRUE; - } - - /** - * Update financial_account_id for bad data in financial_trxn table. - * CRM-12844 - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public function updateFinancialTrxnData(CRM_Queue_TaskContext $ctx) { - $upgrade = new CRM_Upgrade_Form(); - $sql = "SELECT cc.id contribution_id, cc.contribution_recur_id, cft.payment_processor_id, -cft.id financial_trxn_id, cfi.entity_table, cft.from_financial_account_id, cft.to_financial_account_id - -FROM `civicrm_contribution` cc -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.entity_id = cc.id -LEFT JOIN civicrm_financial_trxn cft ON cft.id = ceft.financial_trxn_id -LEFT JOIN civicrm_entity_financial_trxn ceft1 ON ceft1.financial_trxn_id = ceft.financial_trxn_id -LEFT JOIN civicrm_financial_item cfi ON cfi.id = ceft1.entity_id -WHERE ceft.entity_table = 'civicrm_contribution' AND cc.contribution_recur_id IS NOT NULL -AND ceft1.entity_table = 'civicrm_financial_item' AND cft.id IS NOT NULL AND cft.payment_instrument_id = %1 - -ORDER BY cft.id "; - $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument('name'); - $param = [1 => [array_search('Credit Card', $paymentInstrument), 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($sql, $param); - $financialTrxn = []; - $subsequentPayments = []; - while ($dao->fetch()) { - if (!array_key_exists($dao->contribution_recur_id, $financialTrxn)) { - $financialTrxn[$dao->contribution_recur_id] = [ - 'from_financial_account_id' => $dao->to_financial_account_id, - 'payment_processor_id' => $dao->payment_processor_id, - $dao->contribution_id => 1, - ]; - if (!is_null($dao->from_financial_account_id)) { - $sql = 'UPDATE civicrm_financial_trxn SET from_financial_account_id = NULL WHERE id = %1'; - $params = [1 => [$dao->financial_trxn_id, 'Integer']]; - CRM_Core_DAO::executeQuery($sql, $params); - } - } - elseif (!array_key_exists($dao->contribution_id, $financialTrxn[$dao->contribution_recur_id])) { - if (($dao->entity_table == 'civicrm_line_item' && $dao->to_financial_account_id == $financialTrxn[$dao->contribution_recur_id]['from_financial_account_id']) - || ($dao->entity_table == 'civicrm_financial_trxn' && $dao->from_financial_account_id == $financialTrxn[$dao->contribution_recur_id]['from_financial_account_id']) - ) { - continue; - } - $subsequentPayments[$dao->contribution_recur_id][$dao->entity_table][] = $dao->financial_trxn_id; - } - } - foreach ($subsequentPayments as $key => $value) { - foreach ($value as $table => $val) { - if ($table == 'civicrm_financial_trxn') { - $field = 'from_financial_account_id'; - } - else { - $field = 'to_financial_account_id'; - } - $sql = "UPDATE civicrm_financial_trxn SET $field = " . $financialTrxn[$dao->contribution_recur_id]['from_financial_account_id'] . ', -payment_processor_id = ' . $financialTrxn[$dao->contribution_recur_id]['payment_processor_id'] . ' WHERE -id IN (' . implode(',', $val) . ')'; - CRM_Core_DAO::executeQuery($sql); - } - } - return TRUE; - } - - /** - * Update financial_account_id for bad data in financial_trxn table. - * CRM-12844 - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public function updateLineItemData(CRM_Queue_TaskContext $ctx) { - $sql = "SELECT cc.id contribution_id, cc.contribution_recur_id, -cc.financial_type_id contribution_financial_type, -cli.financial_type_id line_financial_type_id, -cli.price_field_id, cli.price_field_value_id, cli.label, cli.id line_item_id, -cfi.financial_account_id -FROM `civicrm_line_item` cli -LEFT JOIN civicrm_contribution cc ON cc.id = cli.entity_id -LEFT JOIN civicrm_financial_item cfi ON cfi.entity_id = cli.id -LEFT JOIN civicrm_price_field cpf ON cpf.id = cli.price_field_id -LEFT JOIN civicrm_price_set cps ON cps.id = cpf.price_set_id -LEFT JOIN civicrm_price_field_value cpfv ON cpfv.id = cli.price_field_value_id -WHERE cfi.entity_table = 'civicrm_line_item' -AND cli.entity_table = 'civicrm_contribution' -AND cps.is_quick_config = 1 AND cc.contribution_recur_id IS NOT NULL -ORDER BY cli.id"; - $dao = CRM_Core_DAO::executeQuery($sql); - $financialTrxn = $subsequentPayments = []; - while ($dao->fetch()) { - if (!array_key_exists($dao->contribution_recur_id, $financialTrxn)) { - $financialTrxn[$dao->contribution_recur_id] = [ - 'price_field_id' => $dao->price_field_id, - 'price_field_value_id' => $dao->price_field_value_id, - 'label' => strval($dao->label), - 'financial_account_id' => $dao->financial_account_id, - $dao->contribution_id => 1, - ]; - } - else { - if ($dao->price_field_value_id == $financialTrxn[$dao->contribution_recur_id]['price_field_value_id']) { - continue; - } - $subsequentPayments[$dao->contribution_recur_id][] = $dao->line_item_id; - } - } - foreach ($subsequentPayments as $key => $value) { - $sql = "UPDATE civicrm_line_item cli -LEFT JOIN civicrm_financial_item cfi ON cli.id = cfi.entity_id -SET -cli.label = %1, -cli.price_field_id = %2, -cli.price_field_value_id = %3, -cfi.financial_account_id = %4, -cfi.description = %5, -cli.financial_type_id = %6 -WHERE cfi.entity_table = 'civicrm_line_item' -AND cli.entity_table = 'civicrm_contribution' AND cli.id IN (" . implode(',', $value) . ');'; - $params = [ - 1 => [$financialTrxn[$key]['label'], 'String'], - 2 => [$financialTrxn[$key]['price_field_id'], 'Integer'], - 3 => [$financialTrxn[$key]['price_field_value_id'], 'Integer'], - 4 => [$financialTrxn[$key]['financial_account_id'], 'Integer'], - 5 => [$financialTrxn[$key]['label'], 'String'], - 6 => [$dao->contribution_financial_type, 'Integer'], - ]; - CRM_Core_DAO::executeQuery($sql, $params); - } - return TRUE; - } - - /** - * Replace contribution_type to financial_type in table. - * - * Civicrm_saved_search and Structure civicrm_report_instance - * - * @param \CRM_Queue_TaskContext $ctx - * @param string $query - * @param string $table - * - * @return bool - */ - public function replaceContributionTypeId(CRM_Queue_TaskContext $ctx, $query, $table) { - $dao = CRM_Core_DAO::executeQuery($query); - while ($dao->fetch()) { - $formValues = unserialize($dao->form_values); - foreach (['contribution_type_id_op', 'contribution_type_id_value', 'contribution_type_id'] as $value) { - if (array_key_exists($value, $formValues)) { - $key = preg_replace('/contribution/', 'financial', $value); - $formValues[$key] = $formValues[$value]; - unset($formValues[$value]); - } - } - if ($table != 'savedSearch') { - foreach (['fields', 'group_bys'] as $value) { - if (array_key_exists($value, $formValues)) { - if (array_key_exists('contribution_type_id', $formValues[$value])) { - $formValues[$value]['financial_type_id'] = $formValues[$value]['contribution_type_id']; - unset($formValues[$value]['contribution_type_id']); - } - elseif (array_key_exists('contribution_type', $formValues[$value])) { - $formValues[$value]['financial_type'] = $formValues[$value]['contribution_type']; - unset($formValues[$value]['contribution_type']); - } - } - } - if (array_key_exists('order_bys', $formValues)) { - foreach ($formValues['order_bys'] as $key => $values) { - if (preg_grep('/contribution_type/', $values)) { - $formValues['order_bys'][$key]['column'] = preg_replace('/contribution_type/', 'financial_type', $values['column']); - } - } - } - } - - if ($table == 'savedSearch') { - $saveDao = new CRM_Contact_DAO_SavedSearch(); - } - else { - $saveDao = new CRM_Report_DAO_ReportInstance(); - } - $saveDao->id = $dao->id; - - if ($table == 'savedSearch') { - if (array_key_exists('mapper', $formValues)) { - foreach ($formValues['mapper'] as $key => $values) { - foreach ($values as $k => $v) { - if (preg_grep('/contribution_/', $v)) { - $formValues['mapper'][$key][$k] = preg_replace('/contribution_type/', 'financial_type', $v); - } - } - } - } - } - $saveDao->form_values = serialize($formValues); - - $saveDao->save(); - } - return TRUE; - } - - /** - * Add ON DELETE options for constraint if not present. - * CRM-13088 && CRM-12156 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public function task_4_3_x_checkConstraints(CRM_Queue_TaskContext $ctx) { - CRM_Core_DAO::executeQuery('ALTER TABLE `civicrm_financial_account` CHANGE `contact_id` `contact_id` INT( 10 ) UNSIGNED NULL DEFAULT NULL'); - $config = CRM_Core_Config::singleton(); - $dbname = DB::parseDSN($config->dsn); - $constraintArray = [ - "'FK_civicrm_financial_account_contact_id'", - "'FK_civicrm_financial_item_contact_id'", - "'FK_civicrm_contribution_recur_financial_type_id'", - "'FK_civicrm_line_item_financial_type_id'", - "'FK_civicrm_product_financial_type_id'", - "'FK_civicrm_premiums_product_financial_type_id'", - "'FK_civicrm_price_field_value_financial_type_id'", - "'FK_civicrm_contribution_product_financial_type_id'", - "'FK_civicrm_price_set_financial_type_id'", - "'FK_civicrm_grant_financial_type_id'", - ]; - - $sql = "SELECT DELETE_RULE, TABLE_NAME, CONSTRAINT_NAME -FROM information_schema.REFERENTIAL_CONSTRAINTS -WHERE CONSTRAINT_NAME IN (" . implode(',', $constraintArray) . ") -AND CONSTRAINT_SCHEMA = %1"; - $params = [1 => [$dbname['database'], 'String']]; - $onDelete = CRM_Core_DAO::executeQuery($sql, $params, TRUE, FALSE); - while ($onDelete->fetch()) { - if (($onDelete->TABLE_NAME != 'civicrm_financial_item' && $onDelete->DELETE_RULE != 'SET NULL') || - ($onDelete->TABLE_NAME == 'civicrm_financial_item' && $onDelete->DELETE_RULE != 'CASCADE') - ) { - $tableName = 'civicrm_financial_type'; - $onDeleteOption = ' SET NULL '; - $columnName = 'financial_type_id'; - if (preg_match('/contact_id/', $onDelete->CONSTRAINT_NAME)) { - $tableName = 'civicrm_contact'; - $columnName = 'contact_id'; - if ($onDelete->TABLE_NAME == 'civicrm_financial_item') { - $onDeleteOption = 'CASCADE'; - } - } - } - else { - continue; - } - $query = "ALTER TABLE {$onDelete->TABLE_NAME} - DROP FOREIGN KEY {$onDelete->CONSTRAINT_NAME}, - DROP INDEX {$onDelete->CONSTRAINT_NAME};"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - $query = " ALTER TABLE {$onDelete->TABLE_NAME} - ADD CONSTRAINT {$onDelete->CONSTRAINT_NAME} FOREIGN KEY (`" . $columnName . "`) REFERENCES {$tableName} (`id`) ON DELETE {$onDeleteOption}; - "; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - } - return TRUE; - } - - /** - * Check/Add INDEX CRM-12141 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public function task_4_3_x_checkIndexes(CRM_Queue_TaskContext $ctx) { - $query = " -SHOW KEYS -FROM civicrm_entity_financial_trxn -WHERE key_name IN ('UI_entity_financial_trxn_entity_table', 'UI_entity_financial_trxn_entity_id') -"; - $dao = CRM_Core_DAO::executeQuery($query); - if (!$dao->N) { - $query = " -ALTER TABLE civicrm_entity_financial_trxn -ADD INDEX UI_entity_financial_trxn_entity_table (entity_table), -ADD INDEX UI_entity_financial_trxn_entity_id (entity_id); -"; - CRM_Core_DAO::executeQuery($query); - } - return TRUE; - } - - /** - * Update phones CRM-11292 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public static function phoneNumeric(CRM_Queue_TaskContext $ctx) { - CRM_Core_DAO::executeQuery(CRM_Contact_BAO_Contact::DROP_STRIP_FUNCTION_43); - CRM_Core_DAO::executeQuery(CRM_Contact_BAO_Contact::CREATE_STRIP_FUNCTION_43); - CRM_Core_DAO::executeQuery("UPDATE civicrm_phone SET phone_numeric = civicrm_strip_non_numeric(phone)"); - return TRUE; - } - -} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl deleted file mode 100644 index 5283039600321bb370f85ab82ab3edfee5c331f7..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl +++ /dev/null @@ -1,2 +0,0 @@ --- CRM-12290 -UPDATE civicrm_currency SET symbol = 'N$' WHERE name = 'NAD'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl deleted file mode 100644 index b8bbcad97153f8f2ade12b669f2684f43e22cf62..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl +++ /dev/null @@ -1,21 +0,0 @@ --- CRM-12351 -UPDATE civicrm_dedupe_rule_group SET title = name WHERE title IS NULL; - --- CRM-12373 - -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Dns'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) - VALUES - (@bounceTypeID, 'Host or domain name not found'); - -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Host'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) - VALUES - (@bounceTypeID, 'lost connection'), - (@bounceTypeID, 'conversation with [^ ]* timed out while'); - -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Relay'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) - VALUES - (@bounceTypeID, 'No route to host'), - (@bounceTypeID, 'Network is unreachable'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl deleted file mode 100644 index ea0b70fa5085cbe2eb3c428d9f8029a230f92e2f..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* placeholder file for upgrade*} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl deleted file mode 100644 index 4753fab7f12662fb7f8b9c3fb7da1a49badfd1d1..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl +++ /dev/null @@ -1,2 +0,0 @@ --- CRM-12501 -ALTER TABLE civicrm_financial_account CHANGE `tax_rate` `tax_rate` DECIMAL( 10, 8 ) NULL DEFAULT NULL COMMENT 'The percentage of the total_amount that is due for this tax.'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl deleted file mode 100644 index 4da5c51ee89800a7e0edad3dd1a3cf59b629d342..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl +++ /dev/null @@ -1,109 +0,0 @@ -{* file to handle db changes in 4.3.4 during upgrade*} - --- CRM-12466 -INSERT INTO -civicrm_option_group (name, {localize field='title'}title{/localize}, is_reserved, is_active) -VALUES -('contact_smart_group_display', {localize}'{ts escape="sql"}Contact Smart Group View Options{/ts}'{/localize}, 1, 1); - -SELECT @option_group_id_csgOpt := max(id) FROM civicrm_option_group WHERE name = 'contact_smart_group_display'; - -INSERT INTO -civicrm_option_value (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, -`is_default`, `weight`) -VALUES -(@option_group_id_csgOpt, {localize}'Show Smart Groups on Demand'{/localize}, 1, 'showondemand', NULL, 0, 0, 1), -(@option_group_id_csgOpt, {localize}'Always Show Smart Groups'{/localize}, 2, 'alwaysshow', NULL, 0, 0, 2), -(@option_group_id_csgOpt, {localize}'Hide Smart Groups'{/localize}, 3, 'hide' , NULL, 0, 0, 3); - - -INSERT INTO civicrm_setting -(domain_id, contact_id, is_domain, group_name, name, value) -VALUES -({$domainID}, NULL, 1, 'CiviCRM Preferences', 'contact_smart_group_display', '{serialize}1{/serialize}'); - --- CRM-12665 remove options groups -DELETE cov, cog FROM civicrm_option_group cog -INNER JOIN civicrm_option_value cov ON cov.option_group_id = cog.id -WHERE cog.name IN ('grant_program_status', 'allocation_algorithm'); - --- CRM-12470 -UPDATE civicrm_financial_account -SET is_default = 1 -WHERE name IN ('Premiums', 'Banking Fees', 'Accounts Payable', 'Donation'); - -SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; -SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; -SELECT @domainContactId := contact_id from civicrm_domain where id = {$domainID}; - --- for Accounts Receivable Account is -SELECT @option_value_rel_id_ar := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Accounts Receivable Account is'; -SELECT @arAccount := id FROM civicrm_financial_account WHERE name = 'accounts receivable'; -SELECT @arAccountEntity := financial_account_id FROM civicrm_entity_financial_account - WHERE account_relationship = @option_value_rel_id_ar AND entity_table = 'civicrm_financial_type' LIMIT 1; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_ar, IFNULL(@arAccount, @arAccountEntity) -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_ar AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; - --- for income account is -SELECT @option_value_rel_id := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Income Account is'; -SELECT @opval := value FROM civicrm_option_value WHERE name = 'Revenue' and option_group_id = @option_group_id_fat; - --- create FA if not exists with same name as financial type -INSERT INTO civicrm_financial_account (name, contact_id, financial_account_type_id, description, account_type_code, is_active) -SELECT cft.name, @domainContactId, @opval, cft.name as description, 'INC', 1 -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id AND ceft.entity_table = 'civicrm_financial_type' -LEFT JOIN civicrm_financial_account ca ON ca.name = cft.name -WHERE ceft.entity_id IS NULL AND ca.id IS NULL; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id, ca.id -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id AND ceft.entity_table = 'civicrm_financial_type' -LEFT JOIN civicrm_financial_account ca ON ca.name = cft.name -WHERE ceft.entity_id IS NULL; - --- for cost of sales -SELECT @option_value_rel_id_cg := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Cost of Sales Account is'; -SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - --- CRM-13231 -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Premiums', @domainContactId, @opCost, 'Account to record cost of premiums provided to payors', 'COGS', '5100', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_cg, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_cg AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; - --- for Expense Account is -SELECT @option_value_rel_id_exp := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Expense Account is'; -SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and option_group_id = @option_group_id_fat; -SET @financialAccountId := ''; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; - --- CRM-13231 -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Banking Fees', @domainContactId, @opexp, 'Payment processor fees and manually recorded banking fees', 'EXP', '5200', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; - - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_exp, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_exp AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl deleted file mode 100644 index bac8a190588e8bea0ed90f5f1e9fabfc3a75a28d..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl +++ /dev/null @@ -1,11 +0,0 @@ -{* file to handle db changes in 4.3.5 during upgrade*} -{include file='../CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl'} --- CRM-12799 -DROP TABLE IF EXISTS civicrm_payment; - --- CRM-12929 - -INSERT INTO civicrm_setting -(domain_id, contact_id, is_domain, group_name, name, value) -VALUES -({$domainID}, NULL, 1, 'CiviCRM Preferences', 'allowPermDeleteFinancial', '{serialize}0{/serialize}'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl deleted file mode 100644 index e693e84752b7be8d1d82b1c8607da4af6f2bc3cb..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{* file to handle db changes in 4.3.6 during upgrade *} --- CRM-13060 -UPDATE civicrm_price_set_entity cpse -LEFT JOIN civicrm_price_set cps ON cps.id = cpse.price_set_id -LEFT JOIN civicrm_price_field cpf ON cps.id = cpf.price_set_id -LEFT JOIN civicrm_price_field_value cpfv ON cpf.id = cpfv.price_field_id -LEFT JOIN civicrm_event ce ON cpse.entity_id = ce.id AND cpse.entity_table = 'civicrm_event' -LEFT JOIN civicrm_contribution_page ccg ON cpse.entity_id = ccg.id AND cpse.entity_table = 'civicrm_contribution_page' -SET cpfv.financial_type_id = CASE - WHEN ce.id IS NOT NULL - THEN ce.financial_type_id - WHEN ccg.id IS NOT NULL - THEN ccg.financial_type_id -END, -cps.financial_type_id = CASE - WHEN ce.id IS NOT NULL - THEN ce.financial_type_id - WHEN ccg.id IS NOT NULL - THEN ccg.financial_type_id -END -WHERE cps.is_quick_config = 1; - --- CRM-12844 --- DELETE bad data -DELETE cli FROM `civicrm_contribution` cc -LEFT JOIN civicrm_line_item cli ON cli.entity_id = cc.id -LEFT JOIN civicrm_financial_item cfi ON cfi.entity_id = cli.id AND cfi.entity_table = 'civicrm_line_item' -LEFT JOIN civicrm_price_field cpf ON cpf.id = cli.price_field_id -LEFT JOIN civicrm_price_set cps ON cps.id = cpf.price_set_id -WHERE cc.contribution_recur_id IS NOT NULL -AND cli.entity_table = 'civicrm_contribution' AND cfi.id IS NULL -AND cps.is_quick_config = 1; - --- Set from_financial_account_id to null -UPDATE `civicrm_contribution` cc -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.entity_id = cc.id -LEFT JOIN civicrm_financial_trxn cft ON cft.id = ceft.financial_trxn_id -LEFT JOIN civicrm_entity_financial_trxn ceft1 ON ceft1.financial_trxn_id = ceft.financial_trxn_id -LEFT JOIN civicrm_financial_item cfi ON cfi.id = ceft1.entity_id -LEFT JOIN civicrm_entity_financial_account cefa ON cefa.entity_id = cft.payment_processor_id -SET cft.from_financial_account_id = NULL -WHERE ceft.entity_table = 'civicrm_contribution' AND cc.contribution_recur_id IS NOT NULL -AND ceft1.entity_table = 'civicrm_financial_item' AND cft.id IS NOT NULL AND cft.payment_instrument_id = 1 AND cfi.entity_table = 'civicrm_line_item' AND cft.from_financial_account_id IS NOT NULL -AND cefa.entity_table = 'civicrm_payment_processor' AND cefa.financial_account_id = cft.to_financial_account_id; - --- CRM-13096 -DROP TABLE IF EXISTS civicrm_official_receipt; - --- CRM-13231 -SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; -SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; -SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and option_group_id = @option_group_id_fat; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; -SELECT @domainContactId := contact_id from civicrm_domain where id = {$domainID}; - -SELECT @option_value_rel_id_exp := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Expense Account is'; - -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Banking Fees', @domainContactId, @opexp, 'Payment processor fees and manually recorded banking fees', 'EXP', '5200', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_exp, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_exp AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; - -UPDATE civicrm_financial_trxn cft -INNER JOIN civicrm_entity_financial_trxn ceft ON ceft.financial_trxn_id = cft .id -INNER JOIN civicrm_entity_financial_trxn ceft1 ON ceft1.financial_trxn_id = cft .id -INNER JOIN civicrm_financial_item cfi ON cfi.id = ceft1.entity_id -INNER JOIN civicrm_contribution cc ON cc.id = ceft.entity_id -INNER JOIN civicrm_entity_financial_account cefa ON cefa.entity_id = cc.financial_type_id -SET cft.to_financial_account_id = cefa.financial_account_id -WHERE ceft.entity_table = 'civicrm_contribution' AND ceft1.entity_table = 'civicrm_financial_item' AND cfi.entity_table = 'civicrm_financial_trxn' AND cft.to_financial_account_id IS NULL AND cefa.entity_table = 'civicrm_financial_type' AND cefa.account_relationship = @option_value_rel_id_exp; - --- Add COGS account relationship -SELECT @option_value_rel_id_cg := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Cost of Sales Account is'; -SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; -SET @financialAccountId := ''; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - --- CRM-13231 -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Premiums', @domainContactId, @opCost, 'Account to record cost of premiums provided to payors', 'COGS', '5100', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_cg, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_cg AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl deleted file mode 100644 index 4892128d49ef41e09aa2d3ea056a0c33d7f30283..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 4.3.7 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl deleted file mode 100644 index c37ba06ff7055d1b8c847dc003828248e1ec6565..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 4.3.8 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl deleted file mode 100644 index 39dec10fb260be2f5872ada50420ee44c4c415ae..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 4.3.9 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl deleted file mode 100644 index 5fe6f42fc2c448b95ece7c53941494ec18b555ef..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl +++ /dev/null @@ -1,876 +0,0 @@ -{include file='../CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl'} - --- CRM-10999 -ALTER TABLE `civicrm_premiums` -ADD COLUMN `premiums_nothankyou_position` int(10) unsigned DEFAULT '1'; - --- CRM-11514 if contribution type name is null, assign it a name -UPDATE civicrm_contribution_type -SET name = CONCAT('Unknown_', id) -WHERE name IS NULL OR TRIM(name) = ''; - --- CRM-8507 -ALTER TABLE civicrm_custom_field - ADD UNIQUE INDEX `UI_name_custom_group_id` (`name`, `custom_group_id`); - ---CRM-10473 Added Missing Provinces of Ningxia Autonomous Region of China -INSERT INTO `civicrm_state_province`(`country_id`, `abbreviation`, `name`) VALUES -(1045, 'YN', 'Yinchuan'), -(1045, 'SZ', 'Shizuishan'), -(1045, 'WZ', 'Wuzhong'), -(1045, 'GY', 'Guyuan'), -(1045, 'ZW', 'Zhongwei'); - --- CRM-10553 -ALTER TABLE civicrm_contact - ADD COLUMN `created_date` timestamp NULL DEFAULT NULL - COMMENT 'When was the contact was created.'; -ALTER TABLE civicrm_contact - ADD COLUMN `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - COMMENT 'When was the contact (or closely related entity) was created or modified or deleted.'; - --- CRM-10296 -DELETE FROM civicrm_job WHERE `api_action` = 'process_membership_reminder_date'; -ALTER TABLE civicrm_membership DROP COLUMN reminder_date; -ALTER TABLE civicrm_membership_log DROP COLUMN renewal_reminder_date; -ALTER TABLE civicrm_membership_type - DROP COLUMN renewal_reminder_day, - DROP FOREIGN KEY FK_civicrm_membership_type_renewal_msg_id, - DROP INDEX FK_civicrm_membership_type_renewal_msg_id, - DROP COLUMN renewal_msg_id, - DROP COLUMN autorenewal_msg_id; - --- CRM-10738 -ALTER TABLE civicrm_msg_template - CHANGE msg_text msg_text LONGTEXT NULL COMMENT 'Text formatted message', - CHANGE msg_html msg_html LONGTEXT NULL COMMENT 'HTML formatted message'; - --- CRM-10860 -ALTER TABLE civicrm_contribution_page ADD COLUMN is_recur_installments tinyint(4) DEFAULT '0'; -UPDATE civicrm_contribution_page SET is_recur_installments='1'; - --- CRM-10863 -SELECT @country_id := id from civicrm_country where name = 'Luxembourg' AND iso_code = 'LU'; -INSERT IGNORE INTO `civicrm_state_province`(`country_id`, `abbreviation`, `name`) VALUES -(@country_id, 'L', 'Luxembourg'); - --- CRM-10899 and CRM-10999 -{if $multilingual} - {foreach from=$locales item=locale} - UPDATE civicrm_option_group SET title_{$locale} = '{ts escape="sql"}Currencies Enabled{/ts}' WHERE name = "currencies_enabled"; - ALTER TABLE `civicrm_premiums` - ADD COLUMN premiums_nothankyou_label_{$locale} varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Label displayed for No Thank-you option in premiums block (e.g. No thank you)'; - {/foreach} -{else} - UPDATE civicrm_option_group SET title = '{ts escape="sql"}Currencies Enabled{/ts}' WHERE name = "currencies_enabled"; -{/if} - --- CRM-11047 -ALTER TABLE civicrm_job DROP COLUMN api_prefix; - --- CRM-11068, CRM-10678, CRM-11759 -ALTER TABLE civicrm_group - ADD refresh_date datetime default NULL COMMENT 'Date and time when we need to refresh the cache next.' AFTER `cache_date`, - ADD COLUMN `created_id` INT(10) unsigned DEFAULT NULL COMMENT 'FK to contact table, creator of the group.'; - --- CRM-11759 -ALTER TABLE civicrm_group - ADD CONSTRAINT `FK_civicrm_group_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL; - -INSERT INTO `civicrm_job` - ( domain_id, run_frequency, last_run, name, description, api_entity, api_action, parameters, is_active ) -VALUES - ( {$domainID}, 'Always' , NULL, '{ts escape="sql" skip="true"}Rebuild Smart Group Cache{/ts}', '{ts escape="sql" skip="true"}Rebuilds the smart group cache.{/ts}', 'job', 'group_rebuild', '{ts escape="sql" skip="true"}limit=Number optional-Limit the number of smart groups rebuild{/ts}', 0), - ( {$domainID}, 'Daily' , NULL, '{ts escape="sql" skip="true"}Validate Email Address from Mailings.{/ts}', '{ts escape="sql" skip="true"}Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.{/ts}', 'mailing', 'update_email_resetdate', '{ts escape="sql" skip="true"}minDays, maxDays=Consider mailings that have completed between minDays and maxDays{/ts}', 0); - --- CRM-11117 -INSERT IGNORE INTO `civicrm_setting` (`group_name`, `name`, `value`, `domain_id`, `is_domain`) VALUES ('CiviCRM Preferences', 'activity_assignee_notification_ics', 's:1:"0";', {$domainID}, '1'); - --- CRM-10885 -ALTER TABLE civicrm_dedupe_rule_group - ADD used enum('Unsupervised','Supervised','General') COLLATE utf8_unicode_ci NOT NULL COMMENT 'Whether the rule should be used for cases where usage is Unsupervised, Supervised OR General(programatically)' AFTER threshold; - -UPDATE civicrm_dedupe_rule_group - SET used = 'General' WHERE is_default = 0; - -UPDATE civicrm_dedupe_rule_group - SET used = CASE level - WHEN 'Fuzzy' THEN 'Supervised' - WHEN 'Strict' THEN 'Unsupervised' - END -WHERE is_default = 1; - -UPDATE civicrm_dedupe_rule_group - SET name = CONCAT_WS('', `contact_type`, `used`) -WHERE is_default = 1 OR is_reserved = 1; - -UPDATE civicrm_dedupe_rule_group - SET title = 'Name and Email' -WHERE contact_type IN ('Organization', 'Household') AND used IN ('Unsupervised', 'Supervised'); - -UPDATE civicrm_dedupe_rule_group - SET title = CASE used - WHEN 'Supervised' THEN 'Name and Email (reserved)' - WHEN 'Unsupervised' THEN 'Email (reserved)' - WHEN 'General' THEN 'Name and Address (reserved)' - END -WHERE contact_type = 'Individual' AND is_reserved = 1; - -ALTER TABLE civicrm_dedupe_rule_group DROP COLUMN level; - --- CRM-10771 -ALTER TABLE civicrm_uf_field - ADD `is_multi_summary` tinyint(4) DEFAULT '0' COMMENT 'Include in multi-record listing?'; - --- CRM-1115 --- note that country names are not translated in the DB -SELECT @region_id := max(id) from civicrm_worldregion where name = "Europe and Central Asia"; -INSERT IGNORE INTO civicrm_country (name,iso_code,region_id,is_province_abbreviated) VALUES("Kosovo", "XK", @region_id, 0); - -UPDATE civicrm_country SET name = 'Libya' WHERE name LIKE 'Libyan%'; -UPDATE civicrm_country SET name = 'Congo, Republic of the' WHERE name = 'Congo'; - --- CRM-10621 Add component report links to reports menu for upgrade -SELECT @reportlastID := MAX(id) FROM civicrm_navigation where name = 'Reports' AND domain_id = {$domainID}; -SELECT @max_weight := MAX(ROUND(weight)) from civicrm_navigation WHERE parent_id = @reportlastID; - -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=99&reset=1', '{ts escape="sql" skip="true"}Contact Reports{/ts}', 'Contact Reports', 'administer CiviCRM', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=2&reset=1', '{ts escape="sql" skip="true"}Contribution Reports{/ts}', 'Contribution Reports', 'access CiviContribute', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=6&reset=1', '{ts escape="sql" skip="true"}Pledge Reports{/ts}', 'Pledge Reports', 'access CiviPledge', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=1&reset=1', '{ts escape="sql" skip="true"}Event Reports{/ts}', 'Event Reports', 'access CiviEvent', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=4&reset=1', '{ts escape="sql" skip="true"}Mailing Reports{/ts}', 'Mailing Reports', 'access CiviMail', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=3&reset=1', '{ts escape="sql" skip="true"}Membership Reports{/ts}', 'Membership Reports', 'access CiviMember', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=9&reset=1', '{ts escape="sql" skip="true"}Campaign Reports{/ts}', 'Campaign Reports', 'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts', 'OR', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=7&reset=1', '{ts escape="sql" skip="true"}Case Reports{/ts}', 'Case Reports', 'access my cases and activities,access all cases and activities,administer CiviCase', 'OR', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=5&reset=1', '{ts escape="sql" skip="true"}Grant Reports{/ts}', 'Grant Reports', 'access CiviGrant', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); - --- CRM-11148 Multiple terms membership signup and renewal via price set -ALTER TABLE `civicrm_price_field_value` ADD COLUMN `membership_num_terms` INT(10) NULL DEFAULT NULL COMMENT 'Maximum number of related memberships.' AFTER `membership_type_id`; - --- CRM-11070 -SELECT @option_group_id_tuf := max(id) from civicrm_option_group where name = 'tag_used_for'; -SELECT @weight := MAX(weight) FROM civicrm_option_value WHERE option_group_id = @option_group_id_tuf; - -INSERT INTO -`civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`) -VALUES -(@option_group_id_tuf, {localize}'Attachments'{/localize}, 'civicrm_file', 'Attachments', NULL, 0, 0, @weight = @weight + 1); - -ALTER TABLE civicrm_extension MODIFY COLUMN type ENUM( 'payment', 'search', 'report', 'module','sms') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ; - --- CRM-9914 -SELECT @option_group_id_sms_provider_name := max(id) from civicrm_option_group where name = 'sms_provider_name'; -DELETE FROM civicrm_option_value WHERE option_group_id = @option_group_id_sms_provider_name AND name = 'Clickatell'; - --- CRM-11292 -ALTER TABLE `civicrm_phone` -ADD `phone_numeric` varchar(32) -COMMENT 'Phone number stripped of all whitespace, letters, and punctuation.' -AFTER `phone_ext`, -ADD INDEX phone_numeric_index(`phone_numeric`); - - --- civiaccounts upgrade - --- ADD fields w.r.t 10.6 mwb -ALTER TABLE `civicrm_financial_account` -CHANGE `account_type_id` financial_account_type_id int(10) unsigned NOT NULL DEFAULT '3' COMMENT 'Version identifier of financial_type', -ADD `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Financial Type Description.', -ADD `parent_id` int(10) unsigned DEFAULT NULL COMMENT 'Parent ID in account hierarchy', -ADD `is_header_account` tinyint(4) DEFAULT NULL COMMENT 'Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?', -ADD `accounting_code` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Optional value for mapping monies owed and received to accounting system codes.', -ADD `account_type_code` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Optional value for mapping account types to accounting system account categories (QuickBooks Account Type Codes for example).', -ADD `is_deductible` tinyint(4) DEFAULT '1' COMMENT 'Is this account tax-deductible?', -ADD `is_tax` tinyint(4) DEFAULT '0' COMMENT 'Is this account for taxes?', -ADD `tax_rate` decimal(9,8) DEFAULT '0.00' COMMENT 'The percentage of the total_amount that is due for this tax.', -ADD `is_reserved` tinyint(4) DEFAULT NULL COMMENT 'Is this a predefined system object?', -ADD `is_active` tinyint(4) DEFAULT NULL COMMENT 'Is this property active?', -ADD `is_default` tinyint(4) DEFAULT NULL COMMENT 'Is this account the default one (or default tax one) for its financial_account_type?', -ADD CONSTRAINT `UI_name` UNIQUE INDEX (`name`), -ADD CONSTRAINT `FK_civicrm_financial_account_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_financial_account`(id); - --- CRM-8425 --- Rename table civicrm_contribution_type to civicrm_financial_type -RENAME TABLE `civicrm_contribution_type` TO `civicrm_financial_type`; - -ALTER TABLE `civicrm_financial_type` -CHANGE `name` `name` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Financial Type Name.', -ADD CONSTRAINT `UI_id` UNIQUE INDEX(id), -DROP INDEX UI_name; - -CREATE TABLE IF NOT EXISTS `civicrm_entity_financial_account` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', - `entity_table` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Links to an entity_table like civicrm_financial_type', - `entity_id` int(10) unsigned NOT NULL COMMENT 'Links to an id in the entity_table, such as vid in civicrm_financial_type', - `account_relationship` int(10) unsigned NOT NULL COMMENT 'FK to a new civicrm_option_value (account_relationship)', - `financial_account_id` int(10) unsigned NOT NULL COMMENT 'FK to the financial_account_id', - PRIMARY KEY (`id`), -KEY `FK_civicrm_entity_financial_account_financial_account_id` (`financial_account_id`) -)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - --- Constraints for table `civicrm_entity_financial_account` - ALTER TABLE `civicrm_entity_financial_account` - ADD CONSTRAINT `FK_civicrm_entity_financial_account_financial_account_id` FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account` (`id`); - --- CRM-9730 Table structure for table `civicrm_financial_item` --- - -CREATE TABLE IF NOT EXISTS `civicrm_financial_item` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time the item was created', - `transaction_date` datetime NOT NULL COMMENT 'Date and time of the source transaction', - `contact_id` int(10) unsigned NOT NULL COMMENT 'FK to Contact ID of contact the item is from', - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Human readable description of this item, to ease display without lookup of source item.', - `amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'Total amount of this item', - `currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Currency for the amount', - `financial_account_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to civicrm_financial_account', - `status_id` int(10) unsigned DEFAULT NULL COMMENT 'Payment status: test, paid, part_paid, unpaid (if empty assume unpaid)', - `entity_table` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The table providing the source of this item such as civicrm_line_item', - `entity_id` int(10) unsigned DEFAULT NULL COMMENT 'The specific source item that is responsible for the creation of this financial_item', - PRIMARY KEY (`id`), - UNIQUE KEY `UI_id` (`id`), - KEY `IX_created_date` (`created_date`), - KEY `IX_transaction_date` (`transaction_date`), - KEY `IX_entity` (`entity_table`,`entity_id`), - KEY `FK_civicrm_financial_item_contact_id` (`contact_id`), - KEY `FK_civicrm_financial_item_financial_account_id` (`financial_account_id`) -)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -ALTER TABLE `civicrm_batch` -ADD `payment_instrument_id` int(10) unsigned DEFAULT NULL COMMENT 'fk to Payment Instrument options in civicrm_option_values', -ADD `exported_date` datetime DEFAULT NULL; - -ALTER TABLE `civicrm_financial_item` - ADD CONSTRAINT `FK_civicrm_financial_item_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`), - ADD CONSTRAINT `FK_civicrm_financial_item_financial_account_id` FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account` (`id`); - -ALTER TABLE `civicrm_entity_financial_trxn` -DROP currency; - --- CRM-12312 -UPDATE civicrm_event SET contribution_type_id = NULL WHERE contribution_type_id = 0; - --- CRM-9189 and CRM-8425 change fk's to financial_account.id in our branch that will need to be changed to an fk to financial_type.id - -ALTER TABLE `civicrm_pledge` -DROP FOREIGN KEY FK_civicrm_pledge_contribution_type_id, -DROP INDEX FK_civicrm_pledge_contribution_type_id; - -ALTER TABLE `civicrm_pledge` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'FK to Financial Type'; - -ALTER TABLE `civicrm_pledge` -ADD CONSTRAINT FK_civicrm_pledge_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_membership_type` -DROP FOREIGN KEY FK_civicrm_membership_type_contribution_type_id, -DROP INDEX FK_civicrm_membership_type_contribution_type_id; - -ALTER TABLE `civicrm_membership_type` -CHANGE `contribution_type_id` `financial_type_id` int unsigned NOT NULL COMMENT 'If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id'; - -ALTER TABLE `civicrm_membership_type` -ADD CONSTRAINT FK_civicrm_membership_type_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_price_set` -DROP FOREIGN KEY FK_civicrm_price_set_contribution_type_id, -DROP INDEX FK_civicrm_price_set_contribution_type_id; - -ALTER TABLE `civicrm_price_set` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id'; - -ALTER TABLE `civicrm_price_set` -ADD CONSTRAINT FK_civicrm_price_set_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_event` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'Financial type assigned to paid event registrations for this event. Required if is_monetary is true.'; - -ALTER TABLE `civicrm_contribution` -DROP FOREIGN KEY FK_civicrm_contribution_contribution_type_id, -DROP INDEX FK_civicrm_contribution_contribution_type_id; - -ALTER TABLE `civicrm_contribution` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'FK to Financial Type for (total_amount - non_deductible_amount).'; - -ALTER TABLE `civicrm_contribution` -ADD CONSTRAINT FK_civicrm_contribution_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_contribution_page` -DROP FOREIGN KEY FK_civicrm_contribution_page_contribution_type_id, -DROP INDEX FK_civicrm_contribution_page_contribution_type_id; - -ALTER TABLE `civicrm_contribution_page` -CHANGE `contribution_type_id` `financial_type_id` int unsigned DEFAULT NULL COMMENT 'default financial type assigned to contributions submitted via this page, e.g. Contribution, Campaign Contribution', -ADD `is_partial_payment` tinyint(4) DEFAULT '0' COMMENT 'is partial payment enabled for this event', -ADD `min_initial_amount` decimal(20,2) DEFAULT NULL COMMENT 'Minimum initial amount for partial payment'; - -{if $multilingual} - {foreach from=$locales item=loc} - ALTER TABLE `civicrm_contribution_page` - ADD `initial_amount_label_{$loc}` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text_{$loc}` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; - {/foreach} -{else} - ALTER TABLE `civicrm_contribution_page` - ADD `initial_amount_label` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; -{/if} - -ALTER TABLE `civicrm_contribution_page` -ADD CONSTRAINT FK_civicrm_contribution_page_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_contribution_recur` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'FK to Financial Type'; - -ALTER TABLE `civicrm_contribution_recur` -ADD CONSTRAINT FK_civicrm_contribution_recur_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - --- CRM-9083 -ALTER TABLE `civicrm_financial_trxn` CHANGE `to_account_id` `to_financial_account_id` int unsigned COMMENT 'FK to financial_financial_account table.', -CHANGE `from_account_id` `from_financial_account_id` int unsigned COMMENT 'FK to financial_account table.', -ADD `status_id` int(10) unsigned DEFAULT NULL, -CHANGE `trxn_id` trxn_id varchar(255) COMMENT 'unique processor transaction id, bank id + trans id,... depending on payment_method', -CHANGE `trxn_date` trxn_date datetime DEFAULT NULL, -ADD `payment_instrument_id` int unsigned DEFAULT NULL COMMENT 'FK to payment_instrument option group values', -ADD `check_number` VARCHAR( 255 ) NULL DEFAULT NULL, -ADD INDEX `UI_ftrxn_check_number` (`check_number`), -ADD INDEX `UI_ftrxn_payment_instrument_id` (`payment_instrument_id`); - -ALTER TABLE `civicrm_financial_trxn` -ADD CONSTRAINT FK_civicrm_financial_trxn_to_financial_account_id FOREIGN KEY (`to_financial_account_id`) REFERENCES civicrm_financial_account (id), -ADD CONSTRAINT FK_civicrm_financial_trxn_from_financial_account_id FOREIGN KEY (`from_financial_account_id`) REFERENCES civicrm_financial_account (id); - -ALTER TABLE `civicrm_financial_trxn` ADD `payment_processor_id` int unsigned COMMENT 'Payment Processor for this contribution Page'; - --- Fill in the payment_processor_id based on a lookup using the payment_processor field -UPDATE `civicrm_payment_processor` cppt, `civicrm_financial_trxn` cft -SET cft.`payment_processor_id` = cppt.`id` -WHERE cft.`payment_processor` = cppt.`payment_processor_type` and `is_test` = 0; - --- remove payment_processor field -ALTER TABLE `civicrm_financial_trxn` DROP `payment_processor`; - -ALTER TABLE `civicrm_financial_trxn` - ADD CONSTRAINT `FK_civicrm_financial_trxn_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor` (`id`) ON DELETE SET NULL; - --- Drop index for civicrm_financial_trxn.trxn_id and set default to null -ALTER TABLE `civicrm_financial_trxn` CHANGE `trxn_id` `trxn_id` varchar( 255 ) DEFAULT NULL ; -ALTER TABLE `civicrm_financial_trxn` DROP INDEX UI_ft_trxn_id; - --- remove trxn_type field -ALTER TABLE `civicrm_financial_trxn` DROP `trxn_type`; - --- CRM-9731 - -ALTER TABLE `civicrm_payment_processor` ADD `payment_processor_type_id` int(10) unsigned NULL AFTER `description`, -ADD CONSTRAINT `FK_civicrm_payment_processor_payment_processor_type_id` FOREIGN KEY (`payment_processor_type_id`) REFERENCES `civicrm_payment_processor_type` (`id`); - -UPDATE `civicrm_payment_processor` , `civicrm_payment_processor_type` -SET payment_processor_type_id = `civicrm_payment_processor_type`.id -WHERE payment_processor_type = `civicrm_payment_processor_type`.name; - -ALTER TABLE `civicrm_payment_processor` DROP `payment_processor_type`; - --- CRM-9730 -ALTER TABLE `civicrm_price_field_value` ADD `deductible_amount` DECIMAL( 20, 2 ) NOT NULL DEFAULT '0.00' COMMENT 'Tax-deductible portion of the amount'; - -ALTER TABLE `civicrm_line_item` ADD `deductible_amount` DECIMAL( 20, 2 ) NOT NULL DEFAULT '0.00' COMMENT 'Tax-deductible portion of the amount'; - -ALTER TABLE `civicrm_price_field_value` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', - ADD CONSTRAINT `FK_civicrm_price_field_value_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_line_item` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', - ADD CONSTRAINT `FK_civicrm_line_item_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_grant` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', - ADD CONSTRAINT `FK_civicrm_grant_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_product` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', -ADD CONSTRAINT `FK_civicrm_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_premiums_product` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', -ADD CONSTRAINT `FK_civicrm_premiums_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_contribution_product` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', -ADD CONSTRAINT `FK_civicrm_contribution_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - --- CRM-11122 -ALTER TABLE `civicrm_discount` -DROP FOREIGN KEY FK_civicrm_discount_option_group_id, -DROP INDEX FK_civicrm_discount_option_group_id; - -ALTER TABLE `civicrm_discount` CHANGE `option_group_id` `price_set_id` INT( 10 ) UNSIGNED NOT NULL COMMENT 'FK to civicrm_price_set'; - -ALTER TABLE `civicrm_discount` - ADD CONSTRAINT `FK_civicrm_discount_price_set_id` FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set` (`id`) ON DELETE CASCADE; - --- CRM-8425 - -UPDATE civicrm_navigation SET `label` = 'Financial Types', `name` = 'Financial Types', `url` = 'civicrm/admin/financial/financialType?reset=1' WHERE `name` = 'Contribution Types'; - --- CRM-9199 --- Insert menu item at Administer > CiviContribute, below the section break below Premiums (Thank-you Gifts), just below Financial Account. - -SELECT @parent_id := id from `civicrm_navigation` where name = 'CiviContribute' AND domain_id = {$domainID}; -SELECT @add_weight_id := weight from `civicrm_navigation` where `name` = 'Financial Types' and `parent_id` = @parent_id; - -UPDATE `civicrm_navigation` -SET `weight` = `weight`+1 -WHERE `parent_id` = @parent_id -AND `weight` > @add_weight_id; - -INSERT INTO `civicrm_navigation` - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/admin/financial/financialAccount&reset=1', '{ts escape="sql" skip="true"}Financial Account{/ts}', 'Financial Account', 'access CiviContribute,administer CiviCRM', 'AND', @parent_id, '1', NULL, @add_weight_id + 1 ); - --- CRM-10944 -SELECT @contributionlastID := max(id) from civicrm_navigation where name = 'Contributions' AND domain_id = {$domainID}; - -SELECT @pledgeWeight := weight from civicrm_navigation where name = 'Pledges' and parent_id = @contributionlastID; - -UPDATE `civicrm_navigation` -SET `weight` = `weight`+1 -WHERE `parent_id` = @contributionlastID -AND `weight` > @pledgeWeight; - -INSERT INTO civicrm_navigation - (domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight) -VALUES - ({$domainID}, NULL, '{ts escape="sql" skip="true"}Accounting Batches{/ts}', 'Accounting Batches', 'access CiviContribute', '', @contributionlastID, '1', 1, @pledgeWeight+1); -SET @financialTransactionID:=LAST_INSERT_ID(); - -INSERT INTO civicrm_navigation - (domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ({$domainID}, 'civicrm/financial/batch&reset=1&action=add', '{ts escape="sql" skip="true"}New Batch{/ts}', 'New Batch', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 1), - ({$domainID}, 'civicrm/financial/financialbatches?reset=1&batchStatus=1', '{ts escape="sql" skip="true"}Open Batches{/ts}', 'Open Batches', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 2), - ({$domainID}, 'civicrm/financial/financialbatches?reset=1&batchStatus=2', '{ts escape="sql" skip="true"}Closed Batches{/ts}', 'Closed Batches', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 3), - ({$domainID}, 'civicrm/financial/financialbatches?reset=1&batchStatus=5', '{ts escape="sql" skip="true"}Exported Batches{/ts}', 'Exported Batches', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 4); - --- Insert an entry for financial_account_type in civicrm_option_group and for the the following financial account types in civicrm_option_value as per CRM-8425 -INSERT INTO - `civicrm_option_group` (`name`, {localize field='title'}title{/localize}, `is_reserved`, `is_active`) -VALUES - ('financial_account_type', {localize}'{ts escape="sql"}Financial Account Type{/ts}'{/localize}, 1, 1), - ('account_relationship', {localize}'{ts escape="sql"}Account Relationship{/ts}'{/localize}, 1, 1), - ('financial_item_status', {localize}'{ts escape="sql"}Financial Item Status{/ts}'{/localize}, 1, 1), - ('batch_mode', {localize}'{ts escape="sql"}Batch Mode{/ts}'{/localize}, 1, 1); - -SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; -SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; -SELECT @option_group_id_financial_item_status := max(id) from civicrm_option_group where name = 'financial_item_status'; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, {localize field='description'}`description`{/localize}, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_fat, {localize}'{ts escape="sql"}Asset{/ts}'{/localize}, 1, 'Asset', NULL, 0, 0, 1, {localize}'Things you own'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Liability{/ts}'{/localize}, 2, 'Liability', NULL, 0, 0, 2, {localize}'Things you own, like a grant still to be disbursed'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Revenue{/ts}'{/localize}, 3, 'Revenue', NULL, 0, 1, 3, {localize}'Income from contributions and sales of tickets and memberships'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Cost of Sales{/ts}'{/localize}, 4, 'Cost of Sales', NULL, 0, 0, 4, {localize}'Costs incurred to get revenue, e.g. premiums for donations, dinner for a fundraising dinner ticket'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Expenses{/ts}'{/localize}, 5, 'Expenses', NULL, 0, 0, 5, {localize}'Things that are paid for that are consumable, e.g. grants disbursed'{/localize}, 0, 1, 1, 2, NULL), - --- Financial account relationship - (@option_group_id_arel, {localize}'{ts escape="sql"}Income Account is{/ts}'{/localize}, 1, 'Income Account is', NULL, 0, 1, 1, {localize}'Income Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Credit/Contra Account is{/ts}'{/localize}, 2, 'Credit/Contra Account is', NULL, 0, 0, 2, {localize}'Credit/Contra Account is'{/localize}, 0, 1, 0, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Accounts Receivable Account is{/ts}'{/localize}, 3, 'Accounts Receivable Account is', NULL, 0, 0, 3, {localize}'Accounts Receivable Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Credit Liability Account is{/ts}'{/localize}, 4, 'Credit Liability Account is', NULL, 0, 0, 4, {localize}'Credit Liability Account is'{/localize}, 0, 1, 0, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Expense Account is{/ts}'{/localize}, 5, 'Expense Account is', NULL, 0, 0, 5, {localize}'Expense Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Asset Account is{/ts}'{/localize}, 6, 'Asset Account is', NULL, 0, 0, 6, {localize}'Asset Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Cost of Sales Account is{/ts}'{/localize}, 7, 'Cost of Sales Account is', NULL, 0, 0, 7, {localize}'Cost of Sales Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Premiums Inventory Account is{/ts}'{/localize}, 8, 'Premiums Inventory Account is', NULL, 0, 0, 8, {localize}'Premiums Inventory Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Discounts Account is{/ts}'{/localize}, 9, 'Discounts Account is', NULL, 0, 0, 9, {localize}'Discounts Account is'{/localize}, 0, 1, 1, 2, NULL), - --- Financial Item Status - (@option_group_id_financial_item_status, {localize}'{ts escape="sql"}Paid{/ts}'{/localize}, 1, 'Paid', NULL, 0, 0, 1, {localize}'Paid'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_financial_item_status, {localize}'{ts escape="sql"}Partially paid{/ts}'{/localize}, 2, 'Partially paid', NULL, 0, 0, 2, {localize}'Partially paid'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_financial_item_status, {localize}'{ts escape="sql"}Unpaid{/ts}'{/localize}, 3, 'Unpaid', NULL, 0, 0, 1, {localize}'Unpaid'{/localize}, 0, 1, 1, 2, NULL); - --- Data migration from civicrm_contibution_type to civicrm_financial_account, civicrm_financial_type, civicrm_entity_financial_account -SELECT @opval := value FROM civicrm_option_value WHERE name = 'Revenue' and option_group_id = @option_group_id_fat; -SELECT @domainContactId := contact_id from civicrm_domain where id = {$domainID}; - -INSERT INTO `civicrm_financial_account` - (`id`, `name`, `description`, `is_deductible`, `is_reserved`, `is_active`, `financial_account_type_id`, `contact_id`, accounting_code) - SELECT id, name, CONCAT('Default account for ', name), is_deductible, is_reserved, is_active, @opval, @domainContactId, accounting_code - FROM `civicrm_financial_type`; - --- CRM-9306 and CRM-11657 -UPDATE `civicrm_financial_account` SET `is_default` = 0, `account_type_code` = 'INC'; - -SELECT @option_value_rel_id := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Income Account is'; -SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and option_group_id = @option_group_id_fat; -SELECT @opAsset := value FROM civicrm_option_value WHERE name = 'Asset' and option_group_id = @option_group_id_fat; -SELECT @opLiability := value FROM civicrm_option_value WHERE name = 'Liability' and option_group_id = @option_group_id_fat; -SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; - --- CRM-11522 drop accounting_code after coping its values into financial_account -ALTER TABLE civicrm_financial_type DROP accounting_code; - -INSERT INTO - `civicrm_financial_account` (`name`, `contact_id`, `financial_account_type_id`, `description`, `accounting_code`, `account_type_code`, `is_reserved`, `is_active`, `is_deductible`, `is_default`) -VALUES - ('Banking Fees' , @domainContactId, @opexp, 'Payment processor fees and manually recorded banking fees', '5200', 'EXP', 0, 1, 0, 0), - ('Deposit Bank Account' , @domainContactId, @opAsset, 'All manually recorded cash and cheques go to this account', '1100', 'BANK', 0, 1, 0, 1), - ('Accounts Receivable' , @domainContactId, @opAsset, 'Amounts to be received later (eg pay later event revenues)', '1200', 'AR', 0, 1, 0, 0), - ('Accounts Payable' , @domainContactId, @opLiability, 'Amounts to be paid out such as grants and refunds', '2200', 'AP', 0, 1, 0, 0), - ('Premiums' , @domainContactId, @opCost, 'Account to record cost of premiums provided to payors', '5100', 'COGS', 0, 1, 0, 0), - ('Premiums Inventory' , @domainContactId, @opAsset, 'Account representing value of premiums inventory', '1375', 'OCASSET', 0, 1, 0, 0), - ('Discounts' , @domainContactId, @opval, 'Contra-revenue account for amounts discounted from sales', '4900', 'INC', 0, 1, 0, 0), - ('Payment Processor Account', @domainContactId, @opAsset, 'Account to record payments into a payment processor merchant account', '1150', 'BANK', 0, 1, 0, 0); - --- CRM-10926 -SELECT @option_value_rel_id_exp := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Expense Account is'; -SELECT @option_value_rel_id_ar := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Accounts Receivable Account is'; -SELECT @option_value_rel_id_as := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Asset Account is'; - -SELECT @financial_account_id_bf := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Banking Fees'; -SELECT @financial_account_id_ap := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Accounts Receivable'; - -INSERT INTO `civicrm_entity_financial_account` - ( entity_table, entity_id, account_relationship, financial_account_id ) -SELECT 'civicrm_financial_type', ft.id, @option_value_rel_id, fa.id -FROM `civicrm_financial_type` as ft LEFT JOIN `civicrm_financial_account` as fa ON ft.id = fa.id; - --- Banking Fees -INSERT INTO `civicrm_entity_financial_account` - ( entity_table, entity_id, account_relationship, financial_account_id ) -SELECT 'civicrm_financial_type', ft.id, @option_value_rel_id_exp, @financial_account_id_bf -FROM `civicrm_financial_type` as ft; - --- Accounts Receivable -INSERT INTO `civicrm_entity_financial_account` - ( entity_table, entity_id, account_relationship, financial_account_id ) -SELECT 'civicrm_financial_type', ft.id, @option_value_rel_id_ar, @financial_account_id_ap -FROM `civicrm_financial_type` as ft; - --- CRM-11516 -SELECT @financial_account_id_ar := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Deposit Bank Account'; -SELECT @financial_account_id_pp := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Payment Processor Account'; - -INSERT INTO civicrm_entity_financial_account (entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_option_value', cov.id, @option_value_rel_id_as, @financial_account_id_ar FROM `civicrm_option_group` cog -LEFT JOIN civicrm_option_value cov ON cog.id = cov.option_group_id -WHERE cog.name = 'payment_instrument' AND cov.name NOT IN ('Credit Card', 'Debit Card'); - -INSERT INTO civicrm_entity_financial_account (entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_option_value', cov.id, @option_value_rel_id_as, @financial_account_id_pp FROM `civicrm_option_group` cog -LEFT JOIN civicrm_option_value cov ON cog.id = cov.option_group_id -WHERE cog.name = 'payment_instrument' AND cov.name IN ('Credit Card', 'Debit Card'); - - --- CRM-11515 -SELECT @financial_account_id_ppa := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Payment Processor Account'; - -INSERT INTO civicrm_entity_financial_account (`entity_table`, `entity_id`, `account_relationship`, `financial_account_id`) -SELECT 'civicrm_payment_processor', id, @option_value_rel_id_as, @financial_account_id_ppa FROM `civicrm_payment_processor`; - --- CRM-9923 and CRM-11037 -SELECT @option_group_id_batch_status := max(id) from civicrm_option_group where name = 'batch_status'; - -SELECT @weight := MAX(ROUND(value)) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`) -VALUES - (@option_group_id_batch_status, {localize}'Data Entry'{/localize}, @weight + 1, 'Data Entry', NULL, 0, 0, @weight + 1), - (@option_group_id_batch_status, {localize}'Reopened'{/localize}, @weight + 2, 'Reopened', NULL, 0, 0, @weight + 2), - (@option_group_id_batch_status, {localize}'Exported'{/localize}, @weight + 3, 'Exported' , NULL, 0, 0, @weight + 3); - --- Insert Batch Modes. -SELECT @option_group_id_batch_modes := max(id) from civicrm_option_group where name = 'batch_mode'; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`) -VALUES - (@option_group_id_batch_modes, {localize}'Manual Batch'{/localize}, 1, 'Manual Batch', NULL, 0, 0, 1), - (@option_group_id_batch_modes, {localize}'Automatic Batch'{/localize}, 2, 'Automatic Batch' , NULL, 0, 0, 2); - --- End of civiaccounts upgrade - --- CRM-10933 -ALTER TABLE `civicrm_report_instance` -ADD COLUMN `drilldown_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to instance ID drilldown to', -ADD CONSTRAINT `FK_civicrm_report_instance_drilldown_id` FOREIGN KEY (`drilldown_id`) REFERENCES `civicrm_report_instance` (`id`) ON DELETE SET NULL; - --- CRM-10012 -ALTER TABLE `civicrm_membership_type` -ADD COLUMN `max_related` INT(10) unsigned DEFAULT NULL COMMENT 'Maximum number of related memberships.' AFTER `relationship_direction`; -ALTER TABLE `civicrm_membership` -ADD COLUMN `max_related` INT(10) unsigned DEFAULT NULL COMMENT 'Maximum number of related memberships (membership_type override).' AFTER `owner_membership_id`; -ALTER TABLE `civicrm_membership_log` -ADD COLUMN `max_related` INT(10) unsigned DEFAULT NULL COMMENT 'Maximum number of related memberships.' AFTER `membership_type_id`; - --- CRM-11358 -DELETE FROM civicrm_dashboard_contact WHERE contact_id NOT IN (SELECT id FROM civicrm_contact); -INSERT INTO `civicrm_dashboard` -(`domain_id`, {localize field='label'}`label`{/localize}, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `fullscreen_url`, `is_fullscreen`, `is_reserved`) -SELECT id, {localize}'{ts escape="sql"}CiviCRM News{/ts}'{/localize}, 'civicrm/dashlet/blog&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 0, 'civicrm/dashlet/blog&reset=1&snippet=5&context=dashletFullscreen', 1, 1 -FROM `civicrm_domain`; - -INSERT INTO `civicrm_dashboard_contact` (dashboard_id, contact_id, column_no, is_active) -SELECT (SELECT MAX(id) FROM `civicrm_dashboard`), contact_id, 1, IF (SUM(is_active) > 0, 0, 1) -FROM `civicrm_dashboard_contact` WHERE 1 GROUP BY contact_id; - --- CRM-11387 -ALTER TABLE `civicrm_event` - ADD `is_partial_payment` tinyint(4) DEFAULT '0' COMMENT 'is partial payment enabled for this event', - ADD `min_initial_amount` decimal(20,2) DEFAULT NULL COMMENT 'Minimum initial amount for partial payment'; - -{if $multilingual} - {foreach from=$locales item=loc} - ALTER TABLE `civicrm_event` - ADD `initial_amount_label_{$loc}` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text_{$loc}` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; - {/foreach} -{else} - ALTER TABLE `civicrm_event` - ADD `initial_amount_label` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; -{/if} - --- CRM-11347 -UPDATE `civicrm_option_value` SET is_reserved = 0 -WHERE name = 'Urgent' AND option_group_id = (SELECT id FROM `civicrm_option_group` WHERE name = 'case_status'); - --- CRM-11400 -UPDATE `civicrm_state_province` SET name = 'Distrito Federal' WHERE name = 'Diatrito Federal'; - --- CRM-9379 and CRM-11539 -SELECT @option_group_id_act := MAX(id) FROM civicrm_option_group WHERE name = 'activity_type'; -SELECT @max_val := MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = @option_group_id_act; -SELECT @max_wt := MAX(weight) FROM civicrm_option_value WHERE option_group_id = @option_group_id_act; -SELECT @CompId := MAX(id) FROM civicrm_component where name = 'CiviContribute'; - -INSERT INTO civicrm_option_value - (option_group_id, {localize field='label'}label{/localize}, value, name, weight, {localize field='description'}description{/localize}, is_active, is_reserved, component_id, filter) -VALUES - (@option_group_id_act, {localize field='label'}'Export Accounting Batch'{/localize}, @max_val+1, 'Export Accounting Batch', @max_wt+1, {localize field='description'}'Export Accounting Batch'{/localize}, 1, 1, @CompId, 1), - (@option_group_id_act, {localize field='label'}'Create Batch'{/localize}, @max_val+2, 'Create Batch', @max_wt+2, {localize field='description'}'Create Batch'{/localize}, 1, 1, @CompId, 1), - (@option_group_id_act, {localize field='label'}'Edit Batch'{/localize}, @max_val+3, 'Edit Batch', @max_wt+3, {localize field='description'}'Edit Batch'{/localize}, 1, 1, @CompId, 1); - --- CRM-11341 -INSERT INTO - `civicrm_job` (domain_id, run_frequency, last_run, name, description, api_entity, api_action, parameters, is_active) -SELECT - id, 'Daily' , NULL, '{ts escape="sql" skip="true"}Disable expired relationships{/ts}', '{ts escape="sql" skip="true"}Disables relationships that have expired (ie. those relationships whose end date is in the past).{/ts}', 'job', 'disable_expired_relationships', NULL, 0 -FROM `civicrm_domain`; - --- CRM-11367 -SELECT @country_id := max(id) from civicrm_country where name = 'Latvia'; - -DELETE FROM civicrm_state_province WHERE name IN ('Ventspils Apripkis', 'Aizkraukles Apripkis', 'Alkanes Apripkis', 'Balvu Apripkis', 'Bauskas Apripkis', 'Cesu Aprikis', 'Daugavpile Apripkis', 'Dobeles Apripkis', 'Gulbenes Aprlpkis', 'Jelgavas Apripkis', 'Jekabpils Apripkis', 'Kraslavas Apripkis', 'Kuldlgas Apripkis', 'Limbazu Apripkis', 'Liepajas Apripkis', 'Ludzas Apripkis', 'Madonas Apripkis', 'Ogres Apripkis', 'Preilu Apripkis', 'Rezaknes Apripkis', 'Rigas Apripkis', 'Saldus Apripkis', 'Talsu Apripkis', 'Tukuma Apriplcis', 'Valkas Apripkis', 'Valmieras Apripkis'); - -INSERT IGNORE INTO civicrm_state_province (country_id, abbreviation, name) VALUES -(@country_id, '002', 'Aizkraukles novads'), -(@country_id, '038', 'Jaunjelgavas novads'), -(@country_id, '072', 'Pļaviņu novads'), -(@country_id, '046', 'Kokneses novads'), -(@country_id, '065', 'Neretas novads'), -(@country_id, '092', 'SkrÄ«veru novads'), -(@country_id, '007', 'AlÅ«ksnes novads'), -(@country_id, '009', 'Apes novads'), -(@country_id, '015', 'Balvu novads'), -(@country_id, '108', 'Viļakas novads'), -(@country_id, '014', 'Baltinavas novads'), -(@country_id, '082', 'Rug�ju novads'), -(@country_id, '016', 'Bauskas novads'), -(@country_id, '034', 'Iecavas novads'), -(@country_id, '083', 'Rund�les novads'), -(@country_id, '105', 'Vecumnieku novads'), -(@country_id, '022', 'CÄ“su novads'), -(@country_id, '055', 'LÄ«gatnes novads'), -(@country_id, '008', 'Amatas novads'), -(@country_id, '039', 'Jaunpiebalgas novads'), -(@country_id, '075', 'Priekuļu novads'), -(@country_id, '070', 'P�rgaujas novads'), -(@country_id, '076', 'Raunas novads'), -(@country_id, '104', 'Vecpiebalgas novads'), -(@country_id, '025', 'Daugavpils novads'), -(@country_id, '036', 'IlÅ«kstes novads'), -(@country_id, '026', 'Dobeles novads'), -(@country_id, '010', 'Auces novads'), -(@country_id, '098', 'TÄ“rvetes novads'), -(@country_id, '033', 'Gulbenes novads'), -(@country_id, '041', 'Jelgavas novads'), -(@country_id, '069', 'Ozolnieku novads'), -(@country_id, '042', 'JÄ“kabpils novads'), -(@country_id, '004', 'AknÄ«stes novads'), -(@country_id, '107', 'ViesÄ«tes novads'), -(@country_id, '049', 'Krustpils novads'), -(@country_id, '085', 'Salas novads'), -(@country_id, '047', 'Kr�slavas novads'), -(@country_id, '024', 'Dagdas novads'), -(@country_id, '001', 'Aglonas novads'), -(@country_id, '050', 'KuldÄ«gas novads'), -(@country_id, '093', 'Skrundas novads'), -(@country_id, '006', 'Alsungas novads'), -(@country_id, '003', 'Aizputes novads'), -(@country_id, '028', 'Durbes novads'), -(@country_id, '032', 'Grobiņas novads'), -(@country_id, '071', 'P�vilostas novads'), -(@country_id, '074', 'Priekules novads'), -(@country_id, '066', 'NÄ«cas novads'), -(@country_id, '081', 'Rucavas novads'), -(@country_id, '100', 'Vaiņodes novads'), -(@country_id, '054', 'Limbažu novads'), -(@country_id, '005', 'Alojas novads'), -(@country_id, '086', 'SalacgrÄ«vas novads'), -(@country_id, '058', 'Ludzas novads'), -(@country_id, '044', 'K�rsavas novads'), -(@country_id, '110', 'Zilupes novads'), -(@country_id, '023', 'Ciblas novads'), -(@country_id, '059', 'Madonas novads'), -(@country_id, '021', 'Cesvaines novads'), -(@country_id, '057', 'Lub�nas novads'), -(@country_id, '102', 'Varakļ�nu novads'), -(@country_id, '030', 'Ä’rgļu novads'), -(@country_id, '067', 'Ogres novads'), -(@country_id, '035', 'IkÅ¡Ä·iles novads'), -(@country_id, '051', 'Ķeguma novads'), -(@country_id, '053', 'Lielv�rdes novads'), -(@country_id, '073', 'Preiļu novads'), -(@country_id, '056', 'LÄ«v�nu novads'), -(@country_id, '078', 'Riebiņu novads'), -(@country_id, '103', 'V�rkavas novads'), -(@country_id, '077', 'RÄ“zeknes novads'), -(@country_id, '109', 'Viļ�nu novads'), -(@country_id, '013', 'Baldones novads'), -(@country_id, '052', 'Ķekavas novads'), -(@country_id, '068', 'Olaines novads'), -(@country_id, '087', 'Salaspils novads'), -(@country_id, '089', 'Saulkrastu novads'), -(@country_id, '091', 'Siguldas novads'), -(@country_id, '037', 'In�ukalna novads'), -(@country_id, '011', 'Ä€dažu novads'), -(@country_id, '012', 'BabÄ«tes novads'), -(@country_id, '020', 'Carnikavas novads'), -(@country_id, '031', 'Garkalnes novads'), -(@country_id, '048', 'Krimuldas novads'), -(@country_id, '061', 'M�lpils novads'), -(@country_id, '062', 'M�rupes novads'), -(@country_id, '080', 'Ropažu novads'), -(@country_id, '090', 'SÄ“jas novads'), -(@country_id, '095', 'Stopiņu novads'), -(@country_id, '088', 'Saldus novads'), -(@country_id, '018', 'BrocÄ“nu novads'), -(@country_id, '097', 'Talsu novads'), -(@country_id, '027', 'Dundagas novads'), -(@country_id, '063', 'MÄ“rsraga novads'), -(@country_id, '079', 'Rojas novads'), -(@country_id, '099', 'Tukuma novads'), -(@country_id, '043', 'Kandavas novads'), -(@country_id, '029', 'Engures novads'), -(@country_id, '040', 'Jaunpils novads'), -(@country_id, '101', 'Valkas novads'), -(@country_id, '094', 'Smiltenes novads'), -(@country_id, '096', 'Stren�u novads'), -(@country_id, '045', 'KocÄ“nu novads'), -(@country_id, '060', 'Mazsalacas novads'), -(@country_id, '084', 'RÅ«jienas novads'), -(@country_id, '017', 'BeverÄ«nas novads'), -(@country_id, '019', 'Burtnieku novads'), -(@country_id, '064', 'NaukÅ¡Ä“nu novads'), -(@country_id, '106', 'Ventspils novads'), -(@country_id, 'JKB', 'JÄ“kabpils'), -(@country_id, 'VMR', 'Valmiera'); - --- CRM-11507 -ALTER TABLE `civicrm_batch` CHANGE `type_id` `type_id` INT( 10 ) UNSIGNED NULL COMMENT 'fk to Batch Type options in civicrm_option_values'; -UPDATE `civicrm_batch` SET `mode_id` = '1'; - --- add Refunded in contribution status -SELECT @option_group_id_cs := MAX(id) FROM civicrm_option_group WHERE name = 'contribution_status'; - -SELECT @max_weight := MAX(weight) FROM civicrm_option_value WHERE option_group_id = @option_group_id_cs; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_cs, {localize}'{ts escape="sql"}Refunded{/ts}'{/localize}, @max_weight + 1, 'Refunded', NULL, 0, NULL, @max_weight + 1, 0, 1, 1, NULL, NULL); - --- Payprocs from extensions may have long titles -ALTER TABLE civicrm_payment_processor_type MODIFY COLUMN title varchar(127); - --- CRM-11665 -ALTER TABLE `civicrm_address` - ADD COLUMN manual_geo_code tinyint(4) DEFAULT '0' COMMENT 'Is this a manually entered geo code.'; - --- CRM-11761 -UPDATE `civicrm_setting` SET `group_name` = 'Personal Preferences' WHERE `group_name` = 'Navigation Menu'; - --- CRM-11779 - -INSERT INTO civicrm_action_mapping ( entity, entity_value, entity_value_label, entity_status, entity_status_label, entity_date_start, entity_date_end, entity_recipient ) -VALUES -( 'civicrm_participant', 'event_template', 'Event Template', 'civicrm_participant_status_type', 'Participant Status', 'event_start_date', 'event_end_date', 'event_contacts'); - --- CRM-11802 Fix ON DELETE CASCADE constraint for line_item.price_field_id -ALTER TABLE `civicrm_line_item` - DROP FOREIGN KEY `FK_civicrm_line_item_price_field_id`, - CHANGE `price_field_id` `price_field_id` INT( 10 ) UNSIGNED DEFAULT NULL; - -ALTER TABLE `civicrm_line_item` - ADD CONSTRAINT `FK_civicrm_line_item_price_field_id` FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field`(id) ON DELETE SET NULL; - --- CRM-11821 --- update all location info of domain --- like address, email, phone etc. -UPDATE civicrm_domain cd -LEFT JOIN civicrm_loc_block clb ON cd.loc_block_id = clb.id -LEFT JOIN civicrm_address ca ON clb.address_id = ca.id -LEFT JOIN civicrm_phone cp ON cp.id = clb.phone_id -LEFT JOIN civicrm_email ce ON ce.id = clb.email_id -SET -ca.contact_id = cd.contact_id, cp.contact_id = cd.contact_id, ce.contact_id = cd.contact_id; - --- Delete rows from civicrm_loc_block used for civicrm_domain -DELETE clb.* FROM civicrm_domain cd -LEFT JOIN civicrm_loc_block clb ON clb.id = cd.loc_block_id; - --- Delete loc_block_id from civicrm_domain -ALTER TABLE `civicrm_domain` DROP loc_block_id; - --- CRM11818 --- pledge payments should not be cancelled if the contribution was --- compledged but the pledge is cancelled -UPDATE -civicrm_pledge_payment pp -INNER JOIN civicrm_contribution c ON -c.id = pp.contribution_id AND pp.status_id =3 -AND contribution_status_id = 1 -SET pp.status_id = contribution_status_id - diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl deleted file mode 100644 index 72c703f35f60e50be807768faee794bda857c9ae..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl +++ /dev/null @@ -1,40 +0,0 @@ --- CRM-11847 -UPDATE `civicrm_dedupe_rule_group` - SET name = 'IndividualGeneral' - WHERE name = 'IndividualComplete'; - --- CRM-11791 -INSERT IGNORE INTO `civicrm_relationship_type` ( name_a_b,label_a_b, name_b_a,label_b_a, description, contact_type_a, contact_type_b, is_reserved ) - VALUES - ( 'Partner of', '{ts escape="sql"}Partner of{/ts}', 'Partner of', '{ts escape="sql"}Partner of{/ts}', '{ts escape="sql"}Partner relationship.{/ts}', 'Individual', 'Individual', 0 ); - --- CRM-11886 -UPDATE `civicrm_navigation` - SET permission = 'view own manual batches,view all manual batches' - WHERE - name = 'Open Batches' OR - name = 'Closed Batches' OR - name = 'Exported Batches' OR - name = 'Accounting Batches'; - -UPDATE `civicrm_navigation` - SET permission = 'create manual batch' - WHERE - name = 'Accounting Batches'; - --- CRM-11891 -SELECT @contributionlastID := max(id) from civicrm_navigation where name = 'Contributions' AND domain_id = {$domainID}; -SELECT @importWeight := weight from civicrm_navigation where name = 'Import Contributions' and parent_id = @contributionlastID; - --- since 'Bulk Data Entry' was renamed to 'Batch Data Entry' -UPDATE `civicrm_navigation` SET label = '{ts escape="sql"}Batch Data Entry{/ts}', name = 'Batch Data Entry' -WHERE url = 'civicrm/batch&reset=1'; - -UPDATE `civicrm_navigation` - SET `weight` = `weight`+2 - WHERE `parent_id` = @contributionlastID - AND (`weight` > @importWeight OR `name` = 'Accounting Batches'); - -UPDATE `civicrm_navigation` - SET `weight` = @importWeight+1 - WHERE `name` = 'Batch Data Entry'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl deleted file mode 100644 index 17d54c7f1d56235a2a5cac2cf3ce8e7b408e38ff..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl +++ /dev/null @@ -1,4 +0,0 @@ -{include file='../CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl'} --- CRM-11906 - -ALTER TABLE `civicrm_batch` CHANGE `item_count` `item_count` INT( 10 ) UNSIGNED NULL DEFAULT NULL COMMENT 'Number of items in a batch.'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl deleted file mode 100644 index 752533be8ae1cef41453e8a34eddce994cb2404a..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{include file='../CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl'} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl deleted file mode 100644 index 1f2e8300878f283e2df1b4778aeb8490986be7e3..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{include file='../CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl'} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl deleted file mode 100644 index 0bf6fd7eb6fac28981acce6a0ace0a0f99e77cfd..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl +++ /dev/null @@ -1,31 +0,0 @@ -{include file='../CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl'} --- CRM-12077 -DELETE cog, cov FROM `civicrm_option_group` cog -LEFT JOIN civicrm_option_value cov ON cov.option_group_id = cog.id -WHERE cog.name = 'account_type'; - -{if $multilingual} - UPDATE civicrm_uf_field - SET field_name = 'financial_type' - WHERE field_name LIKE 'contribution_type'; - {foreach from=$locales item=locale} - UPDATE civicrm_uf_field - SET label_{$locale} = 'Financial Type' - WHERE field_name = 'financial_type' AND label_{$locale} = 'Contribution Type'; - {/foreach} - -{else} - UPDATE civicrm_uf_field - SET field_name = 'financial_type', - label = CASE - WHEN label = 'Contribution Type' - THEN 'Financial Type' - ELSE label - END - WHERE field_name = 'contribution_type'; -{/if} - --- CRM-12065 -UPDATE `civicrm_mapping_field` -SET name = replace(name, 'contribution_type', 'financial_type') -where name LIKE '%contribution_type%'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl deleted file mode 100644 index 471686ad2219580b689bce22e5609896c47cf4ab..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl +++ /dev/null @@ -1,25 +0,0 @@ --- CRM-12151 -ALTER TABLE civicrm_option_value - DROP INDEX index_option_group_id_value, - ADD INDEX index_option_group_id_value (value(128), option_group_id), - DROP INDEX index_option_group_id_name, - ADD INDEX index_option_group_id_name (option_group_id, name(128)); - --- CRM-12127 -UPDATE civicrm_membership_type cmt -LEFT JOIN civicrm_price_field_value cpfv ON cpfv.membership_type_id = cmt.id -LEFT JOIN civicrm_price_field cpf ON cpf.id = cpfv.price_field_id -LEFT JOIN civicrm_price_set cps ON cps.id = cpf.price_set_id -SET -cpfv.financial_type_id = cmt.financial_type_id, -{if !$multilingual} - cpfv.label = cmt.name, - cpfv.description = cmt.description, -{else} - {foreach from=$locales item=locale} - cpfv.label_{$locale} = cmt.name_{$locale}, - cpfv.description_{$locale} = cmt.description_{$locale}, - {/foreach} -{/if} -cpfv.amount = IFNULL(cmt.minimum_fee, 0.00) -WHERE cps.is_quick_config = 1 AND cpfv.membership_type_id IS NOT NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl deleted file mode 100644 index 2f2b4e8d3b23b634dc455c36c9f052f50474fcab..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl +++ /dev/null @@ -1,9 +0,0 @@ --- CRM-12142 --- Populate default text for premiums_nothankyou_label -UPDATE `civicrm_premiums` SET {localize field="premiums_nothankyou_label"}premiums_nothankyou_label = '{ts escape="sql"}No thank-you{/ts}'{/localize}; - --- CRM-12233 Fix price field label for quick config membership signup field -UPDATE `civicrm_price_field` cpf -LEFT JOIN `civicrm_price_set` cps ON cps.id = cpf.price_set_id -SET {localize field="label"}cpf.label = '{ts escape="sql"}Membership{/ts}'{/localize} -WHERE cps.is_quick_config = 1 AND cpf.name = 'membership_amount'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl deleted file mode 100644 index 1b102146df9a13b5e32a6ec014039a6ca2f32bde..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{* file to handle db changes in 4.4.0 during upgrade *} --- CRM-13571 -UPDATE civicrm_state_province SET name = 'Møre og Romsdal' WHERE name = 'Møre ag Romsdal'; - --- CRM-13604 -UPDATE civicrm_state_province SET name = 'Alta Verapaz' WHERE name = 'Alta Verapez'; -UPDATE civicrm_state_province SET name = 'Baja Verapaz' WHERE name = 'Baja Verapez'; -UPDATE civicrm_state_province SET name = 'Retalhuleu' WHERE name = 'Reta.thuleu'; -UPDATE civicrm_state_province SET name = 'Sololá' WHERE name = 'Solol6'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl deleted file mode 100644 index b200c273528c5b6cd29c8cbeca114dfaf2c2ccd8..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{* file to handle db changes in 4.4.1 during upgrade *} --- CRM-13327 -SELECT @option_group_id_name_badge := max(id) from civicrm_option_group where name = 'name_badge'; -UPDATE civicrm_option_value -SET value = '{literal}{"name":"Avery 5395","paper-size":"a4","metric":"mm","lMargin":15,"tMargin":26,"NX":2,"NY":4,"SpaceX":10,"SpaceY":5,"width":83,"height":57,"font-size":12,"orientation":"portrait","font-name":"helvetica","font-style":"","lPadding":3,"tPadding":3}{/literal}' -WHERE option_group_id = @option_group_id_name_badge AND name = 'Avery 5395'; - --- CRM-13669 -{literal} -UPDATE civicrm_option_value SET name = 'Dear {contact.household_name}' -WHERE name = 'Dear {contact.househols_name}'; -{/literal} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl deleted file mode 100644 index 6cf155aa5fd2796581c0854014d062db71dc4d6d..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl +++ /dev/null @@ -1,5 +0,0 @@ -{* file to handle db changes in 4.4.2 during upgrade *} --- CRM-13758 -UPDATE civicrm_uf_field SET field_name = 'gender_id' WHERE field_name = 'gender'; -UPDATE civicrm_uf_field SET field_name = 'prefix_id' WHERE field_name = 'individual_prefix'; -UPDATE civicrm_uf_field SET field_name = 'suffix_id' WHERE field_name = 'individual_suffix'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl deleted file mode 100644 index 6d2787d441750d3b1c40e0b8d664cfd9d6955989..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl +++ /dev/null @@ -1,8 +0,0 @@ -{* file to handle db changes in 4.4.3 during upgrade *} -{include file='../CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl'} - --- CRM-13420 -UPDATE civicrm_option_value -INNER JOIN civicrm_option_group ON civicrm_option_value.option_group_id = civicrm_option_group.id -SET civicrm_option_value.is_default = 1 -WHERE civicrm_option_group.name = 'payment_instrument' AND civicrm_option_value.name = 'Check'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl deleted file mode 100644 index 3244650630ee6c2cf289824713b3e41121ba379f..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl +++ /dev/null @@ -1,28 +0,0 @@ -{* file to handle db changes in 4.4.4 during upgrade *} - -{* update comment for civicrm_report_instance.grouprole *} -ALTER TABLE civicrm_report_instance MODIFY grouprole varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'role required to be able to run this instance'; - -{* CRM-14117 *} -UPDATE civicrm_navigation SET url = 'http://civicrm.org/what/whatiscivicrm' WHERE name = 'About'; - --- CRM-13968 -SELECT @inprogressstatus := value FROM civicrm_option_value cov -LEFT JOIN civicrm_option_group cg ON cov.option_group_id = cg.id -WHERE cg.name = 'contribution_status' AND cov.name = 'In Progress'; - -SELECT @financialstatus := value FROM civicrm_option_value cov -LEFT JOIN civicrm_option_group cg ON cov.option_group_id = cg.id -WHERE cg.name = 'financial_item_status' AND cov.name = 'Unpaid'; - -SELECT @accountrecievable := id FROM `civicrm_financial_account` WHERE `name` LIKE 'Accounts Receivable'; - -UPDATE civicrm_financial_trxn cft -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.financial_trxn_id = cft.id -LEFT JOIN civicrm_entity_financial_trxn ceft_financial_item ON ceft_financial_item.financial_trxn_id = cft.id -LEFT JOIN civicrm_financial_item cfi ON cfi.id = ceft_financial_item.entity_id -SET to_financial_account_id = @accountrecievable, cfi.status_id = @financialstatus -WHERE ceft.entity_table = 'civicrm_contribution' AND ceft_financial_item.entity_table = 'civicrm_financial_item' AND cft.status_id = @inprogressstatus AND cfi.status_id IS NULL; - -{* CRM-14167 *} -ALTER TABLE civicrm_activity_contact ADD INDEX index_record_type ( activity_id, record_type_id ); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl deleted file mode 100644 index 99441185a89127f2c1ac616509f57a6be542aca6..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{* file to handle db changes in 4.4.5 during upgrade *} --- CRM-14191 -SELECT @option_group_id_batch_status := max(id) from civicrm_option_group where name = 'batch_status'; -SELECT @weight := MAX(ROUND(value)) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status; - -UPDATE civicrm_option_value -SET value = (Select @weight := @weight +1), -weight = @weight -WHERE option_group_id = @option_group_id_batch_status AND name IN ('Data Entry', 'Reopened', 'Exported') AND value = 0 ORDER BY id; - -SELECT @option_group_id_batch_modes := max(id) from civicrm_option_group where name = 'batch_mode'; -SELECT @weights := MAX(ROUND(value)) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_modes; - -UPDATE civicrm_option_value -SET value = (Select @weights := @weights +1), -weight = @weights -WHERE option_group_id = @option_group_id_batch_modes AND name IN ('Manual Batch', 'Automatic Batch') AND value = 0; - -SELECT @manual_mode_id := MAX(value) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_modes AND name = 'Manual Batch'; -UPDATE civicrm_batch SET mode_id = @manual_mode_id WHERE (mode_id IS NULL OR mode_id = 0) AND type_id IS NULL; - -SELECT @data_entry_status_id := MAX(value) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status AND name = 'Data Entry'; -UPDATE civicrm_batch SET status_id = @data_entry_status_id WHERE status_id = 3 AND type_id IS NOT NULL; - -SELECT @exported_status_id := MAX(value) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status AND name = 'Exported'; -UPDATE civicrm_navigation SET url = CONCAT('civicrm/financial/financialbatches?reset=1&batchStatus=', @exported_status_id) WHERE name = 'Exported Batches'; - --- update status_id to Exported -SELECT @export_activity_type := max(value) FROM civicrm_option_value cov -INNER JOIN civicrm_option_group cog ON cog.id = cov.option_group_id -WHERE cog.name = 'activity_type' AND cov.name = 'Export Accounting Batch'; - -UPDATE civicrm_batch cb -INNER JOIN civicrm_activity ca ON ca.source_record_id = cb.id -SET cb.status_id = @exported_status_id -WHERE cb.status_id = 0 AND ca.activity_type_id = @export_activity_type; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl deleted file mode 100644 index 82916b9041a81261fc280cf1c0f09c964543727d..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl +++ /dev/null @@ -1,5 +0,0 @@ -{* CRM-16846 - This file is never run, but it doesn't matter because the below query is undone by another alteration to the same column in 4.5.alpha1 *} - --- CRM-14903 -ALTER TABLE `civicrm_mapping_field` -CHANGE COLUMN `operator` `operator` ENUM('=','!=','>','<','>=','<=','IN','NOT IN','LIKE','NOT LIKE','IS NULL','IS NOT NULL', 'IS EMPTY', 'IS NOT EMPTY', 'RLIKE'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl deleted file mode 100644 index c3c3c63f3d19d6538a8a486aa72f8225c9a99b50..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl +++ /dev/null @@ -1,161 +0,0 @@ -{include file='../CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl'} - --- CRM-12357 -SELECT @option_group_id_cvOpt := max(id) FROM civicrm_option_group WHERE name = 'contact_view_options'; -SELECT @max_val := MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = @option_group_id_cvOpt; -SELECT @max_wt := MAX(ROUND(val.weight)) FROM civicrm_option_value val WHERE val.option_group_id = @option_group_id_cvOpt; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}`label`{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_cvOpt, {localize}'{ts escape="sql"}Mailings{/ts}'{/localize}, @max_val+1, 'CiviMail', NULL, 0, NULL, @max_wt+1, 0, 0, 1, NULL, NULL); - -INSERT INTO civicrm_setting - (domain_id, contact_id, is_domain, group_name, name, value) -VALUES - ({$domainID}, NULL, 1, 'Mailing Preferences', 'write_activity_record', '{serialize}1{/serialize}'); - --- CRM-12580 -ALTER TABLE civicrm_contact ADD INDEX index_is_deleted_sort_name(is_deleted, sort_name, id); -ALTER TABLE civicrm_contact DROP INDEX index_is_deleted; - --- CRM-12495 -DROP TABLE IF EXISTS `civicrm_task_status`; -DROP TABLE IF EXISTS `civicrm_task`; -DROP TABLE IF EXISTS `civicrm_project`; - --- CRM-12425 -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Spam'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) -VALUES (@bounceTypeID, 'X-HmXmrOriginalRecipient'); - --- CRM-12716 -UPDATE civicrm_custom_field SET text_length = NULL WHERE html_type = 'TextArea' AND text_length = 255; - --- CRM-12288 - -SELECT @option_group_id_activity_type := max(id) from civicrm_option_group where name = 'activity_type'; -SELECT @max_val := MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = @option_group_id_activity_type; -SELECT @max_wt := max(weight) from civicrm_option_value where option_group_id=@option_group_id_activity_type; - -INSERT INTO civicrm_option_value - (option_group_id, {localize field='label'}label{/localize}, {localize field='description'}description{/localize}, value, name, weight, filter, component_id) -VALUES - (@option_group_id_activity_type, {localize}'Inbound SMS'{/localize},{localize}'Inbound SMS'{/localize}, (SELECT @max_val := @max_val+1), 'Inbound SMS', (SELECT @max_wt := @max_wt+1), 1, NULL), - (@option_group_id_activity_type, {localize}'SMS delivery'{/localize},{localize}'SMS delivery'{/localize}, (SELECT @max_val := @max_val+1), 'SMS delivery', (SELECT @max_wt := @max_wt+1), 1, NULL); - --- CRM-13015 replaced if $multilingual w/ localize method -UPDATE `civicrm_option_value` SET {localize field="label"}label = '{ts escape="sql"}Outbound SMS{/ts}'{/localize} - WHERE name = 'SMS' and option_group_id = @option_group_id_activity_type; - --- CRM-12689 -ALTER TABLE civicrm_action_schedule - ADD COLUMN limit_to tinyint(4) DEFAULT '1' COMMENT 'Is this the recipient criteria limited to OR in addition to?' AFTER recipient; - --- CRM-12653 -SELECT @uf_group_contribution_batch_entry := max(id) FROM civicrm_uf_group WHERE name = 'contribution_batch_entry'; -SELECT @uf_group_membership_batch_entry := max(id) FROM civicrm_uf_group WHERE name = 'membership_batch_entry'; - -INSERT INTO civicrm_uf_field - ( uf_group_id, field_name, is_required, is_reserved, weight, visibility, in_selector, is_searchable, location_type_id, {localize field='label'}label{/localize}, field_type) -VALUES - ( @uf_group_contribution_batch_entry, 'soft_credit', 0, 0, 10, 'User and User Admin Only', 0, 0, NULL, {localize}'Soft Credit'{/localize}, 'Contribution'), - ( @uf_group_membership_batch_entry, 'soft_credit', 0, 0, 13, 'User and User Admin Only', 0, 0, NULL, {localize}'Soft Credit'{/localize}, 'Membership'); - --- CRM-12809 -ALTER TABLE `civicrm_custom_group` - ADD COLUMN `is_reserved` tinyint(4) DEFAULT '0' COMMENT 'Is this a reserved Custom Group?'; - ---CRM-12986 fix event_id & contact_id to NOT NULL fields on participant table -SET foreign_key_checks = 0; -ALTER TABLE `civicrm_participant` - CHANGE COLUMN `event_id` `event_id` INT(10) UNSIGNED NOT NULL, - CHANGE COLUMN `contact_id` `contact_id` INT(10) UNSIGNED NOT NULL; -SET foreign_key_checks = 1; - --- CRM-12964 civicrm_print_label table creation -CREATE TABLE IF NOT EXISTS `civicrm_print_label` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'User title for for this label layout', - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'variable name/programmatic handle for this field.', - `description` text COLLATE utf8_unicode_ci COMMENT 'Description of this label layout', - `label_format_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'This refers to name column of civicrm_option_value row in name_badge option group', - `label_type_id` int(10) unsigned DEFAULT NULL COMMENT 'Implicit FK to civicrm_option_value row in NEW label_type option group', - `data` longtext COLLATE utf8_unicode_ci COMMENT 'contains json encode configurations options', - `is_default` tinyint(4) DEFAULT '1' COMMENT 'Is this default?', - `is_active` tinyint(4) DEFAULT '1' COMMENT 'Is this option active?', - `is_reserved` tinyint(4) DEFAULT '1' COMMENT 'Is this reserved label?', - `created_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to civicrm_contact, who created this label layout', - PRIMARY KEY (`id`), - KEY `FK_civicrm_print_label_created_id` (`created_id`), - CONSTRAINT `FK_civicrm_print_label_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1; - --- CRM-12964 adding meta-data -INSERT INTO - `civicrm_option_group` (`name`, {localize field='title'}`title`{/localize}, `is_reserved`, `is_active`) -VALUES - ('label_type', {localize}'{ts escape="sql"}Label Type{/ts}'{/localize}, 1, 1), - ('name_badge', {localize}'{ts escape="sql"}Name Badge Format{/ts}'{/localize}, 1, 1); - -SELECT @option_group_id_label_type := max(id) from civicrm_option_group where name = 'label_type'; -SELECT @option_group_id_name_badge := max(id) from civicrm_option_group where name = 'name_badge'; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}`label`{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_label_type, {localize}'{ts escape="sql"}Event Badge{/ts}'{/localize}, 1, 'Event Badge', NULL, 0, NULL, 1, 0, 0, 1, NULL, NULL), - (@option_group_id_name_badge, {localize}'{ts escape="sql"}Avery 5395{/ts}'{/localize}, '{literal}{"name":"Avery 5395","paper-size":"a4","metric":"mm","lMargin":13.5,"tMargin":3,"NX":2,"NY":4,"SpaceX":15,"SpaceY":8.5,"width":85.7,"height":59.2,"font-size":12,"orientation":"portrait","font-name":"helvetica","font-style":"","lPadding":0,"tPadding":0}{/literal}', 'Avery 5395', NULL, 0, NULL, 1, 0, 0, 1, NULL, NULL); - --- CRM-12964 adding navigation -UPDATE civicrm_navigation - SET url = 'civicrm/admin/badgelayout&reset=1', - name = 'Event Name Badge Layouts', - label= '{ts escape="sql" skip="true"}Event Name Badge Layouts{/ts}' - WHERE name = 'Event Badge Formats'; - ---CRM-12539 change 'Greater London' to 'London' -UPDATE `civicrm_state_province` SET `name` = 'London' WHERE `name` = 'Greater London'; - -UPDATE `civicrm_premiums` SET {localize field="premiums_nothankyou_label"}premiums_nothankyou_label = '{ts escape="sql"}No thank-you{/ts}'{/localize}; - --- CRM-13015 Change address option labels from Additional Address to Supplemental Address -SELECT @option_group_id_addroptions := max(id) from civicrm_option_group where name = 'address_options'; - -UPDATE civicrm_option_value - SET {localize field="label"}label = '{ts escape="sql"}Supplemental Address 1{/ts}'{/localize} - WHERE name = 'supplemental_address_1' AND option_group_id = @option_group_id_addroptions; - -UPDATE civicrm_option_value - SET {localize field="label"}label = '{ts escape="sql"}Supplemental Address 2{/ts}'{/localize} - WHERE name = 'supplemental_address_2' AND option_group_id = @option_group_id_addroptions; - --- CRM-12717 -UPDATE `civicrm_navigation` SET label = '{ts escape="sql"}Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.){/ts}', name = 'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)' -WHERE url = 'civicrm/admin/setting/misc&reset=1'; - --- CRM-13112 -ALTER TABLE civicrm_survey - ADD is_share TINYINT( 4 ) NULL DEFAULT '1' COMMENT 'Can people share the petition through social media?'; - --- CRM-12439 -{if $multilingual} - ALTER TABLE `civicrm_uf_group` - ADD `description` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT 'Optional verbose description of the profile.' AFTER `group_type`; -{else} - ALTER TABLE `civicrm_uf_group` - ADD `description` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT 'Optional verbose description of the profile.' AFTER `title`; -{/if} - ---CRM-13142 -UPDATE - civicrm_uf_field uf - INNER JOIN - civicrm_uf_group ug ON uf.uf_group_id = ug.id AND ug.is_reserved = 1 AND name = 'membership_batch_entry' -SET uf.is_reserved = 0 -WHERE uf.field_name IN ('join_date', 'membership_start_date', 'membership_end_date'); - ---CRM-13155 - Add searching for recurring contribution data to search has been successfully created. -ALTER TABLE `civicrm_contribution_recur` - CHANGE COLUMN `next_sched_contribution` `next_sched_contribution_date` DATETIME NULL DEFAULT NULL COMMENT 'At Groundspring this was used by the cron job which triggered payments. If we\'re not doing that but we know about payments, it might still be useful to store for display to org andor contributors.' AFTER `cycle_day`; - diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl deleted file mode 100644 index ede9a6e3f844ccd092e5a60c1f171331d9962303..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{* file to handle db changes in 4.4.beta1 during upgrade *} --- CRM-13314 Added States for Uruguay -INSERT IGNORE INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES -(NULL, 1229, "FL", "Florida"), -(NULL, 1229, "RN", "Rio Negro"), -(NULL, 1229, "SJ", "San Jose"); - -ALTER TABLE civicrm_email -MODIFY email VARCHAR(254); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl deleted file mode 100644 index acff258d09eb64d9f93105372a2c4f0266ef495c..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl deleted file mode 100644 index 46fa031fe5eb1061dbefaa23b4794866c0d37507..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl deleted file mode 100644 index 3140fe775e2ca89d0140be9029b26214f9e591dd..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.2 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl deleted file mode 100644 index 30fbade0449fb570e68e8953b284056e44b97ad7..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.3 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl deleted file mode 100644 index 09316482f8d9dcd2c581a425915c030c33c52a4c..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.4 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..a25ed8c29a8dde72eb73f979a4238bec9b15a240 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.29.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..18b176d4b0f0de31ccc1b70281538caa5d8822ef --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl @@ -0,0 +1,47 @@ +{* file to handle db changes in 5.29.alpha1 during upgrade *} + +{* https://github.com/civicrm/civicrm-core/pull/17824 *} +UPDATE civicrm_status_pref SET name = 'checkExtensionsOk' WHERE name = 'extensionsOk'; +UPDATE civicrm_status_pref SET name = 'checkExtensionsUpdates' WHERE name = 'extensionUpdates'; + +-- The RelationshipCache is a high-level index/cache for querying relationships. +DROP TABLE IF EXISTS `civicrm_relationship_cache`; +CREATE TABLE `civicrm_relationship_cache` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship Cache ID', + `relationship_id` int unsigned NOT NULL COMMENT 'id of the relationship (FK to civicrm_relationship.id)', + `relationship_type_id` int unsigned NOT NULL COMMENT 'id of the relationship type', + `orientation` char(3) NOT NULL COMMENT 'The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.', + `near_contact_id` int unsigned NOT NULL COMMENT 'id of the first contact', + `near_relation` varchar(64) COMMENT 'name for relationship of near_contact to far_contact.', + `far_contact_id` int unsigned NOT NULL COMMENT 'id of the second contact', + `far_relation` varchar(64) COMMENT 'name for relationship of far_contact to near_contact.', + `is_active` tinyint DEFAULT 1 COMMENT 'is the relationship active ?', + `start_date` date COMMENT 'date when the relationship started', + `end_date` date COMMENT 'date when the relationship ended', + PRIMARY KEY (`id`), + UNIQUE INDEX `UI_relationship`(relationship_id, orientation), + INDEX `index_nearid_nearrelation`(near_contact_id, near_relation), + INDEX `index_nearid_farrelation`(near_contact_id, far_relation), + INDEX `index_near_relation`(near_relation), + CONSTRAINT FK_civicrm_relationship_cache_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_relationship_cache_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_relationship_cache_near_contact_id FOREIGN KEY (`near_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_relationship_cache_far_contact_id FOREIGN KEY (`far_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; + +-- Fix missing resubscribeUrl token. There doesn't seem to be any precedent +-- for doing an upgrade for these, since the last update was in 2009 when +-- the token went missing and it had no upgrade script for it. Also unlike +-- message templates, there doesn't seem to be a way to tell whether it's +-- been changed. Using ts is a bit unreliable if the translation has changed +-- but it would be no worse than now and just end up not updating it. +-- Also, I'm drawing a blank on why the %3 is replaced differently during +-- install than during upgrade, hence the OR clause. +{capture assign=unsubgroup}{ldelim}unsubscribe.group{rdelim}{/capture} +{capture assign=actresub}{ldelim}action.resubscribe{rdelim}{/capture} +{capture assign=actresuburl}{ldelim}action.resubscribeUrl{rdelim}{/capture} +UPDATE civicrm_mailing_component +SET body_text = '{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}' +WHERE component_type = 'Unsubscribe' +AND (body_text = '{ts escape="sql" 1=$unsubgroup 2=$actresub}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}' + OR body_text = '{ts escape="sql" 1=$unsubgroup 2=$actresub}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking {/ts}'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..4b2bf5addbf3a23c74c773b495175676162fb02a --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.29.beta1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/README.txt b/civicrm/CRM/Upgrade/Incremental/sql/README.txt index a5d166d50e5329656022ee2ebc329a897378ae2d..f7954bce542e4a715e3c3913fb26c733409a64f5 100644 --- a/civicrm/CRM/Upgrade/Incremental/sql/README.txt +++ b/civicrm/CRM/Upgrade/Incremental/sql/README.txt @@ -80,4 +80,4 @@ VALUES (@option_group_id_activity_type, {localize}'{ts escape="sql"}Change Custom Data{/ts}'{/localize},{localize}''{/localize}, (SELECT @max_val := @max_val+1), 'Change Custom Data', (SELECT @max_wt := @max_wt+1), 0, @caseCompId); ------------------------------------------------------------------------------ -More details on the wiki: http://wiki.civicrm.org/confluence/display/CRMDOC/Internationalisation+for+Developers#InternationalisationforDevelopers-Localisedfieldsschemachanges +More details: https://docs.civicrm.org/dev/en/latest/translation/database/#localised-fields-schema-changes diff --git a/civicrm/CRM/Utils/Cache/Interface.php b/civicrm/CRM/Utils/Cache/Interface.php index 439dcc63a6f0cce63468878f9521dc1d52e70512..5169db14451a16647beb122d8856f4d5b96723bc 100644 --- a/civicrm/CRM/Utils/Cache/Interface.php +++ b/civicrm/CRM/Utils/Cache/Interface.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * CRM_Utils_Cache_Interface is a long-standing interface used within CiviCRM * for interacting with a cache service. In style and substance, it is extremely * similar to PHP-FIG's SimpleCache interface (PSR-16). Consequently, beginning diff --git a/civicrm/CRM/Utils/Cache/NaiveHasTrait.php b/civicrm/CRM/Utils/Cache/NaiveHasTrait.php index 69712431b1d4b5d141f013176f2092dafbb11078..8843eb288143975a1b8b95963e057c38eea76493 100644 --- a/civicrm/CRM/Utils/Cache/NaiveHasTrait.php +++ b/civicrm/CRM/Utils/Cache/NaiveHasTrait.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * The traditional CRM_Utils_Cache_Interface did not support has(). * To get drop-in compliance with PSR-16, we use a naive adapter. * diff --git a/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php b/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php index 2981f39f6555f8e433f0ee5cc4e02ebc2547346d..c7ae050b39ad17daab1c07dec4e9a867caf7627a 100644 --- a/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php +++ b/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * The traditional CRM_Utils_Cache_Interface did not support multiple-key * operations. To get drop-in compliance with PSR-16, we use a naive adapter. * An operation like `getMultiple()` just calls `get()` multiple times. diff --git a/civicrm/CRM/Utils/Cache/Redis.php b/civicrm/CRM/Utils/Cache/Redis.php index b9db031f07708843622994642cb21f86be5c76f8..d56427d86745f224519cdd5ba3d9427f30e66326 100644 --- a/civicrm/CRM/Utils/Cache/Redis.php +++ b/civicrm/CRM/Utils/Cache/Redis.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { diff --git a/civicrm/CRM/Utils/Check.php b/civicrm/CRM/Utils/Check.php index e8eb744ab21a43d9902982032d12d29df0a834d3..1e4d9f7df707bee0cd99aa5e5944f0ea89299cd7 100644 --- a/civicrm/CRM/Utils/Check.php +++ b/civicrm/CRM/Utils/Check.php @@ -170,31 +170,20 @@ class CRM_Utils_Check { } /** - * Run all system checks. + * Run all enabled system checks. * * This functon is wrapped by the System.check api. * * Calls hook_civicrm_check() for extensions to add or modify messages. - * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_check + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_check/ * * @param bool $max * Whether to return just the maximum non-hushed severity * - * @return array - * Array of CRM_Utils_Check_Message objects + * @return CRM_Utils_Check_Message[] */ public static function checkAll($max = FALSE) { - $messages = []; - foreach (glob(__DIR__ . '/Check/Component/*.php') as $filePath) { - $className = 'CRM_Utils_Check_Component_' . basename($filePath, '.php'); - /* @var CRM_Utils_Check_Component $check */ - $check = new $className(); - if ($check->isEnabled()) { - $messages = array_merge($messages, $check->checkAll()); - } - } - - CRM_Utils_Hook::check($messages); + $messages = self::checkStatus(); uasort($messages, [__CLASS__, 'severitySort']); @@ -212,6 +201,38 @@ class CRM_Utils_Check { return ($max) ? $maxSeverity : $messages; } + /** + * @param array $statusNames + * Optionally specify the names of specific checks to run, or leave empty to run all + * @param bool $includeDisabled + * Run checks that have been explicitly disabled (default false) + * + * @return CRM_Utils_Check_Message[] + */ + public static function checkStatus($statusNames = [], $includeDisabled = FALSE) { + $messages = []; + $checksNeeded = $statusNames; + foreach (glob(__DIR__ . '/Check/Component/*.php') as $filePath) { + $className = 'CRM_Utils_Check_Component_' . basename($filePath, '.php'); + /* @var CRM_Utils_Check_Component $component */ + $component = new $className(); + if ($includeDisabled || $component->isEnabled()) { + $messages = array_merge($messages, $component->checkAll($statusNames, $includeDisabled)); + } + if ($statusNames) { + // Early return if we have already run (or skipped) all the requested checks. + $checksNeeded = array_diff($checksNeeded, $component->getAllChecks()); + if (!$checksNeeded) { + return $messages; + } + } + } + + CRM_Utils_Hook::check($messages, $statusNames, $includeDisabled); + + return $messages; + } + /** * @param int $level * @return string diff --git a/civicrm/CRM/Utils/Check/Component.php b/civicrm/CRM/Utils/Check/Component.php index 68536908600c7447411f5afdb662845acf82061f..37a7171cab4373bd647129b919c41741f43a02da 100644 --- a/civicrm/CRM/Utils/Check/Component.php +++ b/civicrm/CRM/Utils/Check/Component.php @@ -18,11 +18,6 @@ use Civi\Api4\StatusPreference; */ abstract class CRM_Utils_Check_Component { - /** - * @var array - */ - public $checksConfig = []; - /** * Get the configured status checks. * @@ -32,20 +27,18 @@ abstract class CRM_Utils_Check_Component { * @throws \Civi\API\Exception\UnauthorizedException */ public function getChecksConfig() { - if (empty($this->checksConfig)) { - $this->checksConfig = Civi::cache('checks')->get('checksConfig', []); - if (empty($this->checksConfig)) { - $this->checksConfig = StatusPreference::get()->setCheckPermissions(FALSE)->execute()->indexBy('name'); + if (!isset(Civi::$statics[__FUNCTION__])) { + // TODO: Remove this check when MINIMUM_UPGRADABLE_VERSION goes to 4.7. + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version() && !CRM_Core_DAO::checkTableExists('civicrm_status_pref')) { + Civi::$statics[__FUNCTION__] = []; + } + else { + Civi::$statics[__FUNCTION__] = (array) StatusPreference::get(FALSE) + ->addWhere('domain_id', '=', 'current_domain') + ->execute()->indexBy('name'); } } - return $this->checksConfig; - } - - /** - * @param array $checksConfig - */ - public function setChecksConfig(array $checksConfig) { - $this->checksConfig = $checksConfig; + return Civi::$statics[__FUNCTION__]; } /** @@ -57,26 +50,60 @@ abstract class CRM_Utils_Check_Component { return TRUE; } + /** + * Get the names of all check functions in this class + * + * @return string[] + */ + public function getAllChecks() { + return array_filter(get_class_methods($this), function($method) { + return $method !== 'checkAll' && strpos($method, 'check') === 0; + }); + } + /** * Run all checks in this class. * - * @return array - * [CRM_Utils_Check_Message] + * @param array $requestedChecks + * Optionally specify the names of specific checks requested, or leave empty to run all + * @param bool $includeDisabled + * Run checks that have been explicitly disabled (default false) * - * @throws \API_Exception + * @return CRM_Utils_Check_Message[] + * + * @throws API_Exception * @throws \Civi\API\Exception\UnauthorizedException */ - public function checkAll() { + public function checkAll($requestedChecks = [], $includeDisabled = FALSE) { $messages = []; - foreach (get_class_methods($this) as $method) { + foreach ($this->getAllChecks() as $method) { // Note that we should check if the test is disabled BEFORE running it in case it's disabled for performance. - if ($method !== 'checkAll' && strpos($method, 'check') === 0 && !$this->isDisabled($method)) { - $messages = array_merge($messages, $this->$method()); + if ($this->isRequested($method, $requestedChecks) && ($includeDisabled || !$this->isDisabled($method))) { + $messages = array_merge($messages, $this->$method($includeDisabled)); } } return $messages; } + /** + * Is this check one of those requested + * + * @param string $method + * @param array $requestedChecks + * @return bool + */ + private function isRequested($method, $requestedChecks) { + if (!$requestedChecks) { + return TRUE; + } + foreach ($requestedChecks as $name) { + if (strpos($name, $method) === 0) { + return TRUE; + } + } + return FALSE; + } + /** * Is the specified check disabled. * @@ -88,19 +115,10 @@ abstract class CRM_Utils_Check_Component { * @throws \Civi\API\Exception\UnauthorizedException */ public function isDisabled($method) { - try { - $checks = $this->getChecksConfig(); - if (!empty($checks[$method])) { - return (bool) empty($checks[$method]['is_active']); - } - } - catch (PEAR_Exception $e) { - // if we're hitting this, DB migration to 5.19 probably hasn't run yet, so - // is_active doesn't exist. Ignore this error so the status check (which - // might warn about missing migrations!) still renders. - // TODO: remove at some point after 5.19 + $checks = $this->getChecksConfig(); + if (isset($checks[$method]['is_active'])) { + return !$checks[$method]['is_active']; } - return FALSE; } diff --git a/civicrm/CRM/Utils/Check/Component/AddressParsing.php b/civicrm/CRM/Utils/Check/Component/AddressParsing.php index 815402b48e1aabeaf1342503697f7bfc344b81bb..0d42a1771c6ddc624dc458668b8531e2ebeaa426 100644 --- a/civicrm/CRM/Utils/Check/Component/AddressParsing.php +++ b/civicrm/CRM/Utils/Check/Component/AddressParsing.php @@ -16,6 +16,9 @@ */ class CRM_Utils_Check_Component_AddressParsing extends CRM_Utils_Check_Component { + /** + * @return CRM_Utils_Check_Message[] + */ public static function checkLocaleSupportsAddressParsing() { $addressOptions = CRM_Core_BAO_Setting::valueOptions( diff --git a/civicrm/CRM/Utils/Check/Component/Case.php b/civicrm/CRM/Utils/Check/Component/Case.php index 4931f9f37ff7a40db69385bab88098723995ed81..1112b72093bb30367da13622bd7b34e84a1904d7 100644 --- a/civicrm/CRM/Utils/Check/Component/Case.php +++ b/civicrm/CRM/Utils/Check/Component/Case.php @@ -46,7 +46,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { /** * Check that the case-type names don't rely on double-munging. * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkCaseTypeNameConsistency() { @@ -105,7 +105,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { /** * Check that the timestamp columns are populated. (CRM-20958) * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkNullTimestamps() { @@ -149,7 +149,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { /** * Check that the relationship types aren't going to cause problems. * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkRelationshipTypeProblems() { @@ -342,7 +342,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { + array_column($relationshipTypes, 'id', 'label_b_a'); $missing = []; foreach ($caseTypes as $caseType) { - foreach ($caseType['definition']['caseRoles'] as $role) { + foreach ($caseType['definition']['caseRoles'] ?? [] as $role) { if (!isset($allConfigured[$role['name']])) { $missing[$role['name']] = $role['name']; } @@ -387,7 +387,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { * We don't have to think about edge cases because there are already * status checks above for those. * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkExternalXmlFileRoleNames() { diff --git a/civicrm/CRM/Utils/Check/Component/Cms.php b/civicrm/CRM/Utils/Check/Component/Cms.php new file mode 100644 index 0000000000000000000000000000000000000000..a1e8610db44f56c4a407434f921eace792077edf --- /dev/null +++ b/civicrm/CRM/Utils/Check/Component/Cms.php @@ -0,0 +1,159 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ +class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component { + + /** + * For sites running in WordPress, make sure the configured base page exists. + * + * @return CRM_Utils_Check_Message[] + */ + public static function checkWpBasePage() { + $config = CRM_Core_Config::singleton(); + if ($config->userFramework != 'WordPress') { + return []; + } + if (is_multisite()) { + // There are a lot potential configurations in a multisite context where + // this could show a false positive. This completely skips multisite for + // now. + return []; + } + + switch (self::pageExists($config->wpBasePage)) { + case 1: + // Page is here and published + return []; + + case 0: + $messageText = [ + ts( + 'CiviCRM relies upon a <a href="%1%2">base page in WordPress</a>, but it is not published.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $config->wpBasePage, + ] + ), + ]; + break; + + case -1: + // Page is missing, but let's look around to see if the default is there + // --either the default as modified by civicrm_basepage_slug or the + // default default, `civicrm`. + $cmsSettings = CRM_Utils_System::url( + 'civicrm/admin/setting', + $query = ['reset' => 1], + FALSE, + NULL, + TRUE, + FALSE, + TRUE + ); + $messageText = [ + ts( + 'CiviCRM relies upon a base page in WordPress at %1%2, but it is missing.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $config->wpBasePage, + ] + ), + ]; + + $altSlugs = array_unique([ + apply_filters('civicrm_basepage_slug', 'civicrm'), + 'civicrm', + ]); + + if (in_array($config->wpBasePage, $altSlugs)) { + $messageText[] = ts( + 'If you have an alternative base page, it can be set in the <a href="%2">WordPress integration settings</a>.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $cmsSettings, + ] + ); + } + else { + foreach ($altSlugs as $slug) { + $exists = self::pageExists($slug); + if ($exists >= 0) { + // One of the possible defaults is here, published or not. + $messageText[] = ts( + 'The default is %1%2, which <a href="%1%2">does exist on this site</a>.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $slug, + ] + ); + if ($exists == 0) { + $messageText[] = ts('However, it is not published.'); + } + // We've found one, and if the `civicrm_basepage_slug` filter has + // modified the default, we should go with it. + break; + } + } + if ($exists == -1) { + // We went through the default(s) and couldn't find one. Defer to + // the one modified by the filter. + $messageText[] = ts( + 'The default is %1%2, but that does not exist on this site either.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $altSlugs[0], + ] + ); + } + + $messageText[] = ts( + 'You can set the correct base page in the <a href="%1">WordPress integration settings</a>.', + [1 => $cmsSettings] + ); + } + } + + return [ + new CRM_Utils_Check_Message( + __FUNCTION__, + implode(' ', $messageText), + ts('WordPress Base Page Missing'), + \Psr\Log\LogLevel::ERROR, + 'fa-wordpress' + ), + ]; + } + + /** + * See if a page exists and is published. + * + * @param string $slug + * The page path. + * @return int + * -1 if it's missing + * 0 if it's present but not published + * 1 if it's present and published + */ + private static function pageExists($slug) { + $basePage = get_page_by_path($slug); + if (!$basePage) { + return -1; + } + + return (int) ($basePage->post_status == 'publish'); + } + +} diff --git a/civicrm/CRM/Utils/Check/Component/Env.php b/civicrm/CRM/Utils/Check/Component/Env.php index 299e0ea4c930694d48a8ffddd895e1a7c45530d2..26e77d8caedd52249cb00a0ebe8a1707a0d3b6d8 100644 --- a/civicrm/CRM/Utils/Check/Component/Env.php +++ b/civicrm/CRM/Utils/Check/Component/Env.php @@ -17,7 +17,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkPhpVersion() { $messages = []; @@ -82,7 +82,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkPhpMysqli() { $messages = []; @@ -107,7 +107,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check that the MySQL time settings match the PHP time settings. * - * @return array<CRM_Utils_Check_Message> an empty array, or a list of warnings + * @return CRM_Utils_Check_Message[] */ public function checkMysqlTime() { $messages = []; @@ -117,11 +117,10 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if (!CRM_Utils_Time::isEqual($phpNow, $sqlNow, 2.5 * 60)) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts('Timestamps reported by MySQL (eg "%2") and PHP (eg "%3" ) are mismatched.<br /><a href="%1">Read more about this warning</a>', [ - 1 => CRM_Utils_System::docURL2('sysadmin/requirements/#mysql-time', TRUE), - 2 => $sqlNow, - 3 => $phpNow, - ]), + ts('Timestamps reported by MySQL (eg "%1") and PHP (eg "%2" ) are mismatched.', [ + 1 => $sqlNow, + 2 => $phpNow, + ]) . '<br />' . CRM_Utils_System::docURL2('sysadmin/requirements/#mysql-time'), ts('Timestamp Mismatch'), \Psr\Log\LogLevel::ERROR, 'fa-server' @@ -132,7 +131,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkDebug() { $config = CRM_Core_Config::singleton(); @@ -142,7 +141,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { ts('Warning: Debug is enabled in <a href="%1">system settings</a>. This should not be enabled on production servers.', [1 => CRM_Utils_System::url('civicrm/admin/setting/debug', 'reset=1')]), ts('Debug Mode Enabled'), - \Psr\Log\LogLevel::WARNING, + CRM_Core_Config::environment() == 'Production' ? \Psr\Log\LogLevel::WARNING : \Psr\Log\LogLevel::INFO, 'fa-bug' ); $message->addAction( @@ -158,11 +157,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * @return array + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkOutboundMail() { + public function checkOutboundMail($force = FALSE) { $messages = []; + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + $mailingInfo = Civi::settings()->get('mailing_backend'); if (($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_REDIRECT_TO_DB || (defined('CIVICRM_MAIL_LOG') && CIVICRM_MAIL_LOG) @@ -184,11 +189,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check that domain email and org name are set - * @return array + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkDomainNameEmail() { + public function checkDomainNameEmail($force = FALSE) { $messages = []; + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + list($domainEmailName, $domainEmailAddress) = CRM_Core_BAO_Domain::getNameAndEmail(TRUE); $domain = CRM_Core_BAO_Domain::getDomain(); $domainName = $domain->name; @@ -218,7 +229,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, $msg, - ts('Complete Setup'), + ts('Organization Setup'), \Psr\Log\LogLevel::WARNING, 'fa-check-square-o' ); @@ -229,10 +240,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if a default bounce handling mailbox is set up - * @return array + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkDefaultMailbox() { + public function checkDefaultMailbox($force = FALSE) { $messages = []; + + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + $config = CRM_Core_Config::singleton(); if (in_array('CiviMail', $config->enableComponents) && @@ -246,10 +264,9 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { \Psr\Log\LogLevel::WARNING, 'fa-envelope' ); - $docUrl = 'target="_blank" href="' . CRM_Utils_System::docURL(['page' => 'user/advanced-configuration/email-system-configuration/', 'URLonly' => TRUE]) . '""'; $message->addHelp( ts('A default mailbox must be configured for email bounce processing.') . '<br />' . - ts("Learn more in the <a %1>online documentation</a>.", [1 => $docUrl]) + CRM_Utils_System::docURL2('user/advanced-configuration/email-system-configuration/') ); $messages[] = $message; } @@ -258,55 +275,78 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * Checks if cron has run in a reasonable amount of time - * @return array + * Checks if cron has run in the past hour (3600 seconds) + * @param bool $force + * @return CRM_Utils_Check_Message[] + * @throws CRM_Core_Exception */ - public function checkLastCron() { + public function checkLastCron($force = FALSE) { + // TODO: Remove this check when MINIMUM_UPGRADABLE_VERSION goes to 4.7. + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version()) { + return []; + } + $messages = []; + // Cron doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + $statusPreference = new CRM_Core_DAO_StatusPreference(); $statusPreference->domain_id = CRM_Core_Config::domainID(); - $statusPreference->name = 'checkLastCron'; + $statusPreference->name = __FUNCTION__; + + $level = \Psr\Log\LogLevel::INFO; + $now = gmdate('U'); + // Get timestamp of last cron run if ($statusPreference->find(TRUE) && !empty($statusPreference->check_info)) { - $lastCron = $statusPreference->check_info; - $msg = ts('Last cron run at %1.', [1 => CRM_Utils_Date::customFormat(date('c', $lastCron))]); + $msg = ts('Last cron run at %1.', [1 => CRM_Utils_Date::customFormat(date('c', $statusPreference->check_info))]); } + // If cron record doesn't exist, this is a new install. Make a placeholder record (prefs='new'). else { - $lastCron = 0; - $msg = ts('No cron runs have been recorded.'); + $statusPreference = CRM_Core_BAO_StatusPreference::create([ + 'name' => __FUNCTION__, + 'check_info' => $now, + 'prefs' => 'new', + ]); } + $lastCron = $statusPreference->check_info; - if ($lastCron > gmdate('U') - 3600) { - $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, - $msg, - ts('Cron Running OK'), - \Psr\Log\LogLevel::INFO, - 'fa-clock-o' - ); + if ($statusPreference->prefs !== 'new' && $lastCron > $now - 3600) { + $title = ts('Cron Running OK'); } else { - $cronLink = 'target="_blank" href="' . htmlentities(CRM_Utils_System::docURL2('sysadmin/setup/jobs/', TRUE)) . '""'; - $msg .= '<p>' . ts('To enable scheduling support, please <a %1>set up the cron job</a>.', [ - 1 => $cronLink, - ]) . '</p>'; - $message = new CRM_Utils_Check_Message( - __FUNCTION__, - $msg, - ts('Cron Not Running'), - ($lastCron > gmdate('U') - 86400) ? \Psr\Log\LogLevel::WARNING : \Psr\Log\LogLevel::ERROR, - 'fa-clock-o' - ); - $messages[] = $message; + // If placeholder record found, give one day "grace period" for admin to set-up cron + if ($statusPreference->prefs === 'new') { + $title = ts('Set-up Cron'); + $msg = ts('No cron runs have been recorded.'); + // After 1 day (86400 seconds) increase the error level + $level = ($lastCron > $now - 86400) ? \Psr\Log\LogLevel::NOTICE : \Psr\Log\LogLevel::WARNING; + } + else { + $title = ts('Cron Not Running'); + // After 1 day (86400 seconds) increase the error level + $level = ($lastCron > $now - 86400) ? \Psr\Log\LogLevel::WARNING : \Psr\Log\LogLevel::ERROR; + } + $msg .= '<p>' . ts('A cron job is required to execute scheduled jobs automatically.') . + '<br />' . CRM_Utils_System::docURL2('sysadmin/setup/jobs/') . '</p>'; } + $messages[] = new CRM_Utils_Check_Message( + __FUNCTION__, + $msg, + $title, + $level, + 'fa-clock-o' + ); return $messages; } /** * Recommend that sites use path-variables for their directories and URLs. - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkUrlVariables() { $messages = []; @@ -343,7 +383,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Recommend that sites use path-variables for their directories and URLs. - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkDirVariables() { $messages = []; @@ -383,8 +423,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check that important directories are writable. * - * @return array - * Any CRM_Utils_Check_Message instances that need to be generated. + * @return CRM_Utils_Check_Message[] */ public function checkDirsWritable() { $notWritable = []; @@ -432,7 +471,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if new versions are available - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkVersion() { $messages = []; @@ -482,7 +521,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if extensions are set up properly - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkExtensions() { $messages = []; @@ -569,10 +608,9 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { // CRM-13141 There may not be any compatible extensions available for the requested CiviCRM version + CMS. If so, $extdir is empty so just return a notice. $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts('There are currently no extensions on the CiviCRM public extension directory which are compatible with version %1. If you want to install an extension which is not marked as compatible, you may be able to <a %2>download and install extensions manually</a> (depending on access to your web server).', [ + ts('There are currently no extensions on the CiviCRM public extension directory which are compatible with version %1. If you want to install an extension which is not marked as compatible, you may be able to download and install extensions manually (depending on access to your web server).', [ 1 => CRM_Utils_System::majorVersion(), - 2 => 'href="http://wiki.civicrm.org/confluence/display/CRMDOC/Extensions"', - ]), + ]) . '<br />' . CRM_Utils_System::docURL2('sysadmin/customize/extensions/#installing-a-new-extension'), ts('No Extensions Available for this Version'), \Psr\Log\LogLevel::NOTICE, 'fa-plug' @@ -626,7 +664,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if (!$okextensions && !$updates && !$errors) { $messages[] = new CRM_Utils_Check_Message( - 'extensionsOk', + __FUNCTION__ . 'Ok', ts('No extensions installed. <a %1>Browse available extensions</a>.', [ 1 => 'href="' . CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1') . '"', ]), @@ -648,7 +686,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if ($updates) { $messages[] = new CRM_Utils_Check_Message( - 'extensionUpdates', + __FUNCTION__ . 'Updates', '<ul><li>' . implode('</li><li>', $updates) . '</li></ul>', ts('Extension Update Available', ['plural' => '%count Extension Updates Available', 'count' => count($updates)]), \Psr\Log\LogLevel::WARNING, @@ -664,7 +702,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { $message = ts('All extensions are up-to-date:'); } $messages[] = new CRM_Utils_Check_Message( - 'extensionsOk', + __FUNCTION__ . 'Ok', $message . '<ul><li>' . implode('</li><li>', $okextensions) . '</li></ul>', ts('Extensions'), \Psr\Log\LogLevel::INFO, @@ -678,7 +716,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if there are pending extension upgrades. * - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkExtensionUpgrades() { if (CRM_Extension_Upgrades::hasPending()) { @@ -702,7 +740,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if CiviCRM database version is up-to-date - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkDbVersion() { $messages = []; @@ -771,8 +809,8 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * ensure that all CiviCRM tables are InnoDB - * @return array + * Ensure that all CiviCRM tables are InnoDB + * @return CRM_Utils_Check_Message[] */ public function checkDbEngine() { $messages = []; @@ -790,12 +828,18 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * ensure reply id is set to any default value - * @return array + * Ensure reply id is set to any default value + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkReplyIdForMailing() { + public function checkReplyIdForMailing($force = FALSE) { $messages = []; + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + if (!CRM_Mailing_PseudoConstant::defaultComponent('Reply', '')) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, @@ -810,7 +854,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check for required mbstring extension - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkMbstring() { $messages = []; @@ -829,7 +873,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check if environment is Production. - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkEnvironment() { $messages = []; @@ -840,47 +884,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { __FUNCTION__, ts('The environment of this CiviCRM instance is set to \'%1\'. Certain functionality like scheduled jobs has been disabled.', [1 => $environment]), ts('Non-Production Environment'), - \Psr\Log\LogLevel::ALERT, + \Psr\Log\LogLevel::NOTICE, 'fa-bug' ); } return $messages; } - /** - * Check that the resource URL points to the correct location. - * @return array - */ - public function checkResourceUrl() { - $messages = []; - // Skip when run during unit tests, you can't check without a CMS. - if (CRM_Core_Config::singleton()->userFramework == 'UnitTests') { - return $messages; - } - // CRM-21629 Set User Agent to avoid being blocked by filters - stream_context_set_default([ - 'http' => ['user_agent' => 'CiviCRM'], - ]); - - // Does arrow.png exist where we expect it? - $arrowUrl = CRM_Core_Config::singleton()->userFrameworkResourceURL . 'packages/jquery/css/images/arrow.png'; - if ($this->fileExists($arrowUrl) === FALSE) { - $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, - ts('The Resource URL is not set correctly. Please set the <a href="%1">CiviCRM Resource URL</a>.', - [1 => CRM_Utils_System::url('civicrm/admin/setting/url', 'reset=1')]), - ts('Incorrect Resource URL'), - \Psr\Log\LogLevel::ERROR, - 'fa-server' - ); - } - return $messages; - } - /** * Check for utf8mb4 support by MySQL. * - * @return array<CRM_Utils_Check_Message> an empty array, or a list of warnings + * @return CRM_Utils_Check_Message[] */ public function checkMysqlUtf8mb4() { $messages = []; @@ -897,7 +911,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { else { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts("Future versions of CiviCRM may require MySQL to support utf8mb4 encoding. It is recommended, though not yet required. Please discuss with your server administrator about configuring your MySQL server for utf8mb4. CiviCRM's recommended configurations are in the <a href='%1' title='System Administrator Guide'>System Administrator Guide</a>", [1 => CRM_Utils_System::docURL2("sysadmin/requirements/#mysql-configuration", TRUE)]), + ts("Future versions of CiviCRM may require MySQL to support utf8mb4 encoding. It is recommended, though not yet required. Please discuss with your server administrator about configuring your MySQL server for utf8mb4. CiviCRM's recommended configurations are in the System Administrator Guide") . '<br />' . CRM_Utils_System::docURL2('sysadmin/requirements/#mysql-configuration'), ts('MySQL Emoji Support (utf8mb4)'), \Psr\Log\LogLevel::WARNING, 'fa-database' diff --git a/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php b/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php index c46e93152bfa996578557e68efa28bede5be79af..05601e0778abdd12baa945dc057f6f12b8b76fd8 100644 --- a/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php +++ b/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php @@ -16,6 +16,10 @@ */ class CRM_Utils_Check_Component_FinancialTypeAcls extends CRM_Utils_Check_Component { + /** + * @return CRM_Utils_Check_Message[] + * @throws CiviCRM_API3_Exception + */ public static function checkFinancialAclReport() { $messages = []; $ftAclSetting = Civi::settings()->get('acl_financial_type'); diff --git a/civicrm/CRM/Utils/Check/Component/OptionGroups.php b/civicrm/CRM/Utils/Check/Component/OptionGroups.php index 77a1679a14722781d890b39e4934d0644bdfebb9..62017ae83ed6d384ac07a610760cd7e1fb29910c 100644 --- a/civicrm/CRM/Utils/Check/Component/OptionGroups.php +++ b/civicrm/CRM/Utils/Check/Component/OptionGroups.php @@ -17,9 +17,13 @@ class CRM_Utils_Check_Component_OptionGroups extends CRM_Utils_Check_Component { /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkOptionGroupValues() { + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version()) { + return []; + } + $messages = []; $problemValues = []; $optionGroups = civicrm_api3('OptionGroup', 'get', [ diff --git a/civicrm/CRM/Utils/Check/Component/PriceFields.php b/civicrm/CRM/Utils/Check/Component/PriceFields.php index cfb6cf711441909ba421e856f214b8617474de90..03816c98fe7c0ea37fb752b366a6d94a3f5f28c5 100644 --- a/civicrm/CRM/Utils/Check/Component/PriceFields.php +++ b/civicrm/CRM/Utils/Check/Component/PriceFields.php @@ -19,7 +19,7 @@ class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component { /** * Display warning about invalid priceFields - * + * @return CRM_Utils_Check_Message[] */ public function checkPriceFields() { $sql = "SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label diff --git a/civicrm/CRM/Utils/Check/Component/Schema.php b/civicrm/CRM/Utils/Check/Component/Schema.php index c1333dfa051e83ae91314d66366b5eaa268fcd0a..4e9e9c7ed7e0e1d37954adbdaff069e96da9395b 100644 --- a/civicrm/CRM/Utils/Check/Component/Schema.php +++ b/civicrm/CRM/Utils/Check/Component/Schema.php @@ -19,7 +19,7 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { /** * Check defined indices exist. * - * @return array + * @return CRM_Utils_Check_Message[] * @throws \CiviCRM_API3_Exception */ public function checkIndices() { @@ -62,7 +62,7 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkMissingLogTables() { $messages = []; @@ -91,7 +91,7 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { /** * Check that no smart groups exist that contain deleted custom fields. * - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkSmartGroupCustomFieldCriteria() { if (CRM_Core_BAO_Domain::isDBUpdateRequired()) { @@ -182,6 +182,9 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { return $messages; } + /** + * @return CRM_Utils_Check_Message[] + */ public function checkMoneyValueFormatConfig() { $messages = []; if (CRM_Core_Config::singleton()->moneyvalueformat !== '%!i') { diff --git a/civicrm/CRM/Utils/Check/Component/Security.php b/civicrm/CRM/Utils/Check/Component/Security.php index 3a17c834fdcb41033163a986e1e32ce0538fa7cc..943add05d4322677889f3fe8df1f929713bb15d2 100644 --- a/civicrm/CRM/Utils/Check/Component/Security.php +++ b/civicrm/CRM/Utils/Check/Component/Security.php @@ -20,6 +20,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * CMS have a different pattern to their default file path and URL. * * @todo Use Civi::paths instead? + * @return string */ public function getFilePathMarker() { $config = CRM_Core_Config::singleton(); @@ -47,8 +48,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * is browseable or visible to search engines; it means it can be * requested directly. * - * @return array - * Array of messages + * @return CRM_Utils_Check_Message[] * @see CRM-14091 */ public function checkLogFileIsNotAccessible() { @@ -100,8 +100,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * Being retrievable doesn't mean the files are browseable or visible * to search engines; it only means they can be requested directly. * - * @return array - * Array of messages + * @return CRM_Utils_Check_Message[] * @see CRM-14091 * * @todo Test with WordPress, Joomla. @@ -148,8 +147,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * MAY trigger false positives (if you have files named 'a', 'e' * we'll probably match that). * - * @return array - * Array of messages + * @return CRM_Utils_Check_Message[] * @see CRM-14091 * * @todo Test with WordPress, Joomla. @@ -192,35 +190,36 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * These files have generally been deleted but Civi source tree but could be * left online if one does a faulty upgrade. * - * @return array of messages + * @return CRM_Utils_Check_Message[] */ public function checkFilesAreNotPresent() { - global $civicrm_root; + $packages_path = rtrim(\Civi::paths()->getPath('[civicrm.packages]/'), '/' . DIRECTORY_SEPARATOR); + $vendor_path = rtrim(\Civi::paths()->getPath('[civicrm.vendor]/'), '/' . DIRECTORY_SEPARATOR); $messages = []; $files = [ [ // CRM-16005, upgraded from Civi <= 4.5.6 - "{$civicrm_root}/packages/dompdf/dompdf.php", + "{$packages_path}/dompdf/dompdf.php", \Psr\Log\LogLevel::CRITICAL, ], [ // CRM-16005, Civi >= 4.5.7 - "{$civicrm_root}/packages/vendor/dompdf/dompdf/dompdf.php", + "{$packages_path}/vendor/dompdf/dompdf/dompdf.php", \Psr\Log\LogLevel::CRITICAL, ], [ // CRM-16005, Civi >= 4.6.0 - "{$civicrm_root}/vendor/dompdf/dompdf/dompdf.php", + "{$vendor_path}/dompdf/dompdf/dompdf.php", \Psr\Log\LogLevel::CRITICAL, ], [ // CIVI-SA-2013-001 - "{$civicrm_root}/packages/OpenFlashChart/php-ofc-library/ofc_upload_image.php", + "{$packages_path}/OpenFlashChart/php-ofc-library/ofc_upload_image.php", \Psr\Log\LogLevel::CRITICAL, ], [ - "{$civicrm_root}/packages/html2text/class.html2text.inc", + "{$packages_path}/html2text/class.html2text.inc", \Psr\Log\LogLevel::CRITICAL, ], ]; @@ -240,6 +239,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { /** * Discourage use of remote profile forms. + * @return CRM_Utils_Check_Message[] */ public function checkRemoteProfile() { $messages = []; @@ -260,8 +260,8 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { } /** - * Check that the sysadmin has not modified the Cxn - * security setup. + * Check that the sysadmin has not modified the Cxn security setup. + * @return CRM_Utils_Check_Message[] */ public function checkCxnOverrides() { $list = []; diff --git a/civicrm/CRM/Utils/Check/Component/Source.php b/civicrm/CRM/Utils/Check/Component/Source.php index 7a31d3341aa30fd55bc5a0f813d940ec9d81c677..683f7cd3e38fedaf68608e7add122d8939271bf1 100644 --- a/civicrm/CRM/Utils/Check/Component/Source.php +++ b/civicrm/CRM/Utils/Check/Component/Source.php @@ -58,7 +58,7 @@ class CRM_Utils_Check_Component_Source extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] * Each item is an array with keys: * - name: string, an abstract name * - path: string, a full file path @@ -99,7 +99,7 @@ class CRM_Utils_Check_Component_Source extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkOrphans() { $orphans = $this->findOrphanedFiles(); diff --git a/civicrm/CRM/Utils/Check/Component/Timestamps.php b/civicrm/CRM/Utils/Check/Component/Timestamps.php index 3e9808acadeffacb2ee0f8c00d05509460bddbac..432a011e5f69cb8aa98deafdefd7a38166f22d22 100644 --- a/civicrm/CRM/Utils/Check/Component/Timestamps.php +++ b/civicrm/CRM/Utils/Check/Component/Timestamps.php @@ -21,7 +21,7 @@ class CRM_Utils_Check_Component_Timestamps extends CRM_Utils_Check_Component { /** * Check that various columns are TIMESTAMP and not DATETIME. (CRM-9683, etal) * - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkSchema() { $problems = []; diff --git a/civicrm/CRM/Utils/Check/Message.php b/civicrm/CRM/Utils/Check/Message.php index 139ab43ff3dda3c9e1a68d582b185f2ac288e30a..94f51db49d9da3899c647c2fd12a9e9edcfe2372 100644 --- a/civicrm/CRM/Utils/Check/Message.php +++ b/civicrm/CRM/Utils/Check/Message.php @@ -246,6 +246,11 @@ class CRM_Utils_Check_Message { * @throws \CiviCRM_API3_Exception */ private function checkStatusPreference() { + // TODO: Remove this check when MINIMUM_UPGRADABLE_VERSION goes to 4.7. + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version() && !CRM_Core_DAO::checkTableExists('civicrm_status_pref')) { + return FALSE; + } + $this->hiddenUntil = FALSE; // Debug & info can't be hidden if ($this->level < 2) { diff --git a/civicrm/CRM/Utils/EnglishNumber.php b/civicrm/CRM/Utils/EnglishNumber.php index 098dcd21323de0ddbea40aa30e4efc04e759b63c..08a7a2a1f153e649d8b79c82be61b6de713d7c3d 100644 --- a/civicrm/CRM/Utils/EnglishNumber.php +++ b/civicrm/CRM/Utils/EnglishNumber.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * Utilities for rendering numbers as English. * * Note: This file may be used in a standalone environment. Please ensure it diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php index ff1bccb6bf59327a81bdd6e17203f0ac71323789..67da4b10a665daa9c2402aad61e81b434eeffd3b 100644 --- a/civicrm/CRM/Utils/File.php +++ b/civicrm/CRM/Utils/File.php @@ -753,9 +753,16 @@ HTACCESS; * @return array(string) */ public static function findFiles($dir, $pattern, $relative = FALSE) { - if (!is_dir($dir)) { + if (!is_dir($dir) || !is_readable($dir)) { return []; } + // Which dirs should we exclude from our searches? + // If not defined, we default to excluding any dirname that begins + // with a . which is the old behaviour and therefore excludes .git/ + $excludeDirsPattern = defined('CIVICRM_EXCLUDE_DIRS_PATTERN') + ? constant('CIVICRM_EXCLUDE_DIRS_PATTERN') + : '@' . preg_quote(DIRECTORY_SEPARATOR) . '\.@'; + $dir = rtrim($dir, '/'); $todos = [$dir]; $result = []; @@ -769,13 +776,21 @@ HTACCESS; } } } + // Find subdirs to recurse into. if ($dh = opendir($subdir)) { while (FALSE !== ($entry = readdir($dh))) { $path = $subdir . DIRECTORY_SEPARATOR . $entry; - if ($entry{0} == '.') { - // ignore - } - elseif (is_dir($path)) { + // Exclude . (self) and .. (parent) to avoid infinite loop. + // Exclude configured exclude dirs. + // Exclude dirs we can't read. + // Exclude anything that's not a dir. + if ( + $entry !== '.' + && $entry !== '..' + && (empty($excludeDirsPattern) || !preg_match($excludeDirsPattern, $path)) + && is_dir($path) + && is_readable($path) + ) { $todos[] = $path; } } diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 38c1da128e0db51fdf0e1678591e21dea5858ec7..381b69f8f68521ce164e56ebf4fe05589a8130a8 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -132,7 +132,7 @@ abstract class CRM_Utils_Hook { * but also accepts enough information to support Symfony Event * dispatching. * - * @param array|int $names + * @param array $names * (Recommended) Array of parameter names, in order. * Using an array is recommended because it enables full * event-broadcasting behaviors. @@ -152,32 +152,17 @@ abstract class CRM_Utils_Hook { &$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6, $fnSuffix ) { - if (!\Civi\Core\Container::isContainerBooted()) { - $prebootHooks = ['civicrm_container', 'civicrm_entityTypes']; - // 'civicrm_config' ? - if (in_array($fnSuffix, $prebootHooks)) { - $count = is_array($names) ? count($names) : $names; - return $this->invokeViaUF($count, $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $fnSuffix); - } - else { - // TODO: Emit a warning, eg - // error_log("Warning: hook_$fnSuffix fired prematurely. Dropped."); - return; - } - } - if (!is_array($names)) { // We were called with the old contract wherein $names is actually an int. // Symfony dispatcher requires some kind of name. - // TODO: Emit a warning, eg - // error_log("Warning: hook_$fnSuffix does not give names for its parameters. It will present odd names to any Symfony event listeners."); + Civi::log()->warning("hook_$fnSuffix should be updated to pass an array of parameter names to CRM_Utils_Hook::invoke().", ['civi.tag' => 'deprecated']); $compatNames = ['arg1', 'arg2', 'arg3', 'arg4', 'arg5', 'arg6']; $names = array_slice($compatNames, 0, (int) $names); } $event = \Civi\Core\Event\GenericHookEvent::createOrdered( $names, - array(&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6) + [&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6] ); \Civi::dispatcher()->dispatch('hook_' . $fnSuffix, $event); return $event->getReturnValues(); @@ -692,7 +677,7 @@ abstract class CRM_Utils_Hook { * the return value is ignored */ public static function activeTheme(&$theme, $context) { - return self::singleton()->invoke(array('theme', 'context'), $theme, $context, + return self::singleton()->invoke(['theme', 'context'], $theme, $context, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_activeTheme' ); @@ -883,7 +868,7 @@ abstract class CRM_Utils_Hook { * @return mixed */ public static function alterAdminPanel(&$panels) { - return self::singleton()->invoke(array('panels'), $panels, + return self::singleton()->invoke(['panels'], $panels, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_alterAdminPanel' ); @@ -2425,13 +2410,20 @@ abstract class CRM_Utils_Hook { /** * Check system status. * - * @param array $messages - * Array<CRM_Utils_Check_Message>. A list of messages regarding system status. + * @param CRM_Utils_Check_Message[] $messages + * A list of messages regarding system status + * @param array $statusNames + * If specified, only these checks are being requested and others should be skipped + * @param bool $includeDisabled + * Run checks that have been explicitly disabled (default false) * @return mixed */ - public static function check(&$messages) { - return self::singleton() - ->invoke(['messages'], $messages, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_check'); + public static function check(&$messages, $statusNames = [], $includeDisabled = FALSE) { + return self::singleton()->invoke(['messages'], + $messages, $statusNames, $includeDisabled, + self::$_nullObject, self::$_nullObject, self::$_nullObject, + 'civicrm_check' + ); } /** diff --git a/civicrm/CRM/Utils/Hook/WordPress.php b/civicrm/CRM/Utils/Hook/WordPress.php index a82553f1b564aae9c2245a47b55508900c1ef319..4a2c63f377ad6c1fb9aebc4db90bc10fff65d1a0 100644 --- a/civicrm/CRM/Utils/Hook/WordPress.php +++ b/civicrm/CRM/Utils/Hook/WordPress.php @@ -80,13 +80,13 @@ class CRM_Utils_Hook_WordPress extends CRM_Utils_Hook { // are incompatible with the WordPress Plugin API: // // civicrm_upgrade - // http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_upgrade + // https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade/ // // civicrm_caseSummary - // http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_caseSummary + // https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_caseSummary/ // // civicrm_dashboard - // http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_dashboard + // https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_dashboard/ // distinguish between types of hook if (!in_array($fnSuffix, $this->hooksThatReturn)) { diff --git a/civicrm/CRM/Utils/JS.php b/civicrm/CRM/Utils/JS.php index da228d24136a30c4057f2a8468f324a55e946824..66c03e0f483d6175b3a8337723eb98d332cae5ed 100644 --- a/civicrm/CRM/Utils/JS.php +++ b/civicrm/CRM/Utils/JS.php @@ -152,6 +152,7 @@ class CRM_Utils_JS { /** * @param string $str + * @param bool $throwException * @return string|null * @throws CRM_Core_Exception */ diff --git a/civicrm/CRM/Utils/Mail.php b/civicrm/CRM/Utils/Mail.php index 2b6e5120a74ac92bb92c7df668bcd9768001b3ec..0ac404f1431498309f2eb2e2d5720e3da075b387 100644 --- a/civicrm/CRM/Utils/Mail.php +++ b/civicrm/CRM/Utils/Mail.php @@ -152,6 +152,8 @@ class CRM_Utils_Mail { * text : text of the message * html : html version of the message * replyTo : reply-to header in the email + * returnpath : email address for bounces to be sent to + * messageId : Message ID for this email mesage * attachments: an associative array of * fullPath : complete pathname to the file * mime_type: mime type of the attachment @@ -223,7 +225,7 @@ class CRM_Utils_Mail { } $headers['Date'] = date('r'); if ($includeMessageId) { - $headers['Message-ID'] = '<' . uniqid('civicrm_', TRUE) . "@$emailDomain>"; + $headers['Message-ID'] = $params['messageId'] ?? '<' . uniqid('civicrm_', TRUE) . "@$emailDomain>"; } if (!empty($params['autoSubmitted'])) { $headers['Auto-Submitted'] = "Auto-Generated"; @@ -261,7 +263,11 @@ class CRM_Utils_Mail { $msg->addAttachment( $attach['fullPath'], $attach['mime_type'], - $attach['cleanName'] + $attach['cleanName'], + TRUE, + 'base64', + 'attachment', + (isset($attach['charset']) ? $attach['charset'] : '') ); } } diff --git a/civicrm/CRM/Utils/Migrate/Import.php b/civicrm/CRM/Utils/Migrate/Import.php index 420198d7917b374458c323f1d057aad2d0a66a51..819fcc0ea005c47c66039cde840319c7b6dc42ea 100644 --- a/civicrm/CRM/Utils/Migrate/Import.php +++ b/civicrm/CRM/Utils/Migrate/Import.php @@ -349,8 +349,7 @@ AND v.name = %1 } foreach ($fields_indexed_by_group_id as $group_id => $fields) { - \Civi\Api4\CustomField::save() - ->setCheckPermissions(FALSE) + \Civi\Api4\CustomField::save(FALSE) ->setDefaults(['custom_group_id' => $group_id]) ->setRecords(json_decode(json_encode($fields), TRUE)) ->execute(); diff --git a/civicrm/CRM/Utils/PDF/Utils.php b/civicrm/CRM/Utils/PDF/Utils.php index c5cf7003f1ea851739c8fda568369a2f59e62155..6fc9959b8605fce66fa9a7553c4f88c91508b0db 100644 --- a/civicrm/CRM/Utils/PDF/Utils.php +++ b/civicrm/CRM/Utils/PDF/Utils.php @@ -207,7 +207,7 @@ class CRM_Utils_PDF_Utils { * @param string $fileName */ public static function _html2pdf_wkhtmltopdf($paper_size, $orientation, $margins, $html, $output, $fileName) { - require_once 'packages/snappy/src/autoload.php'; + require_once 'snappy/src/autoload.php'; $config = CRM_Core_Config::singleton(); $snappy = new Knp\Snappy\Pdf($config->wkhtmltopdfPath); $snappy->setOption("page-width", $paper_size[2] . "pt"); diff --git a/civicrm/CRM/Utils/REST.php b/civicrm/CRM/Utils/REST.php index 5b436c0f2016a983ea878377f1e9166390adb349..03c7c26d1c0db6530ec04308b7c4aa298b621934 100644 --- a/civicrm/CRM/Utils/REST.php +++ b/civicrm/CRM/Utils/REST.php @@ -212,7 +212,7 @@ class CRM_Utils_REST { // interface can be disabled in more change to the configuration file. // first check for civicrm site key if (!CRM_Utils_System::authenticateKey(FALSE)) { - $docLink = CRM_Utils_System::docURL2("Managing Scheduled Jobs", TRUE, NULL, NULL, NULL, "wiki"); + $docLink = CRM_Utils_System::docURL2('sysadmin/setup/jobs', TRUE); $key = $requestParams['key'] ?? NULL; if (empty($key)) { return self::error("FATAL: mandatory param 'key' missing. More info at: " . $docLink); diff --git a/civicrm/CRM/Utils/ReCAPTCHA.php b/civicrm/CRM/Utils/ReCAPTCHA.php index 93747f7b130ef7e801d42bc06abd38ed858404c5..14c4272f9ddc43b9a00ae8751e351585a7675132 100644 --- a/civicrm/CRM/Utils/ReCAPTCHA.php +++ b/civicrm/CRM/Utils/ReCAPTCHA.php @@ -78,7 +78,7 @@ class CRM_Utils_ReCAPTCHA { $config = CRM_Core_Config::singleton(); $useSSL = FALSE; if (!function_exists('recaptcha_get_html')) { - require_once 'packages/recaptcha/recaptchalib.php'; + require_once 'recaptcha/recaptchalib.php'; } // Load the Recaptcha api.js over HTTPS diff --git a/civicrm/CRM/Utils/SQL/Select.php b/civicrm/CRM/Utils/SQL/Select.php index 4aa6b7e5166974cd334df51fb6b1f27c0dd986b5..642d98ff2b8b7d82c4a53c086186c05632be7b7b 100644 --- a/civicrm/CRM/Utils/SQL/Select.php +++ b/civicrm/CRM/Utils/SQL/Select.php @@ -69,6 +69,7 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { private $insertInto = NULL; private $insertVerb = 'INSERT INTO '; private $insertIntoFields = []; + private $onDuplicates = []; private $selects = []; private $from; private $joins = []; @@ -373,6 +374,45 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { return $this->insertInto($table, $fields); } + /** + * Take the results of the SELECT query and copy them into another + * table. + * + * If the same record already exists in the other table (based on + * primary-key or unique-key), then update the corresponding record. + * + * @param string $table + * The table to write data into. + * @param array|string $keys + * List of PK/unique fields + * NOTE: This must match the unique-key that was declared in the schema. + * @param array $mapping + * List of values to select and where to send them. + * + * For example, consider: + * ['relationship_id' => 'rel.id'] + * + * This would select the value of 'rel.id' and write to 'relationship_id'. + * + * @param null|array $args + * Use NULL to skip interpolation; use an array of variables to enable. + * @return $this + */ + public function syncInto($table, $keys, $mapping, $args = NULL) { + $keys = (array) $keys; + + $this->select(array_values($mapping), $args); + $this->insertInto($table, array_keys($mapping)); + + foreach ($mapping as $intoColumn => $fromValue) { + if (!in_array($intoColumn, $keys)) { + $this->onDuplicate("$intoColumn = $fromValue", $args); + } + } + + return $this; + } + /** * @param array $fields * The fields to fill in the other table (in order). @@ -386,6 +426,22 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { return $this; } + /** + * For INSERT INTO...SELECT...' queries, you may give an "ON DUPLICATE UPDATE" clause. + * + * @param string|array $exprs list of SQL expressions + * @param null|array $args use NULL to disable interpolation; use an array of variables to enable + * @return CRM_Utils_SQL_Select + */ + public function onDuplicate($exprs, $args = NULL) { + $exprs = (array) $exprs; + foreach ($exprs as $expr) { + $evaluatedExpr = $this->interpolate($expr, $args); + $this->onDuplicates[$evaluatedExpr] = $evaluatedExpr; + } + return $this; + } + /** * @param array|NULL $parts * List of fields to check (e.g. 'selects', 'joins'). @@ -463,6 +519,15 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { $sql .= 'OFFSET ' . $this->offset . "\n"; } } + if ($this->onDuplicates) { + if ($this->insertVerb === 'INSERT INTO ') { + $sql .= ' ON DUPLICATE KEY UPDATE ' . implode(", ", $this->onDuplicates) . "\n"; + } + else { + throw new \Exception("The ON DUPLICATE clause and only be used with INSERT INTO queries."); + } + } + if ($this->mode === self::INTERPOLATE_OUTPUT) { $sql = $this->interpolate($sql, $this->params, self::INTERPOLATE_OUTPUT); } diff --git a/civicrm/CRM/Utils/SQL/TempTable.php b/civicrm/CRM/Utils/SQL/TempTable.php index f8c4e82d563f9907e988c98baf81c50ec000c4ee..8993807f3cc5e03a12d7722ab69960b9fde469bb 100644 --- a/civicrm/CRM/Utils/SQL/TempTable.php +++ b/civicrm/CRM/Utils/SQL/TempTable.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Table naming rules: * - MySQL imposes a 64 char limit. * - All temp tables start with "civicrm_tmp". @@ -136,24 +135,13 @@ class CRM_Utils_SQL_TempTable { /** * Get the utf8 string for the table. * - * If the db collation is already utf8 by default (either - * utf8 or utf84mb) then rely on that. Otherwise set to utf8. - * - * Respecting the DB collation supports utf8mb4 adopters, which is currently - * not the norm in civi installs. + * Our tables are either utf8_unicode_ci OR utf8mb8_unicode_ci - check the contact table + * to see which & use the matching one. * * @return string */ public function getUtf8String() { - if (!$this->utf8) { - return ''; - } - $dbUTF = CRM_Core_BAO_SchemaHandler::getDBCollation(); - if (in_array($dbUTF, ['utf8_unicode_ci', 'utf8mb4_unicode_ci']) - && in_array($dbUTF, ['utf8', 'utf8mb4'])) { - return ''; - } - return self::UTF8; + return $this->utf8 ? ('COLLATE ' . CRM_Core_BAO_SchemaHandler::getInUseCollation()) : ''; } /** @@ -169,7 +157,7 @@ class CRM_Utils_SQL_TempTable { $this->toSQL('CREATE'), $columns, $this->memory ? self::MEMORY : self::INNODB, - $this->utf8 ? self::UTF8 : '' + $this->getUtf8String() ); CRM_Core_DAO::executeQuery($sql, [], TRUE, NULL, TRUE, FALSE); $this->createSql = $sql; diff --git a/civicrm/CRM/Utils/String.php b/civicrm/CRM/Utils/String.php index 654b74ff0ebcb41cbd4c28162935265021dbebe0..8ffc390096fd850f21de324560b2655eba96797b 100644 --- a/civicrm/CRM/Utils/String.php +++ b/civicrm/CRM/Utils/String.php @@ -941,7 +941,7 @@ class CRM_Utils_String { public static function pluralize($str) { $lastLetter = substr($str, -1); $lastTwo = substr($str, -2); - if ($lastLetter == 's' || $lastTwo == 'ch') { + if ($lastLetter == 's' || $lastLetter == 'x' || $lastTwo == 'ch') { return $str . 'es'; } if ($lastLetter == 'y' && $lastTwo != 'ey') { diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php index 9a7d12db038acd719f18bc9d3c03a0b8cb71db5c..74ddd37d93a80fd1406968ac431a2ed02c2e0af4 100644 --- a/civicrm/CRM/Utils/System.php +++ b/civicrm/CRM/Utils/System.php @@ -600,7 +600,7 @@ class CRM_Utils_System { // also make sure the key is sent and is valid $key = trim(CRM_Utils_Array::value('key', $_REQUEST)); - $docAdd = "More info at:" . CRM_Utils_System::docURL2("Managing Scheduled Jobs", TRUE, NULL, NULL, NULL, "wiki"); + $docAdd = "More info at: " . CRM_Utils_System::docURL2('sysadmin/setup/jobs', TRUE); if (!$key) { return self::authenticateAbort( @@ -1390,7 +1390,7 @@ class CRM_Utils_System { } if (!isset($params['text']) or $params['text'] === NULL) { - $params['text'] = ts('(learn more...)'); + $params['text'] = ts('(Learn more...)'); } if (!isset($params['style']) || $params['style'] === NULL) { @@ -1419,7 +1419,7 @@ class CRM_Utils_System { * @return mixed */ public static function formatDocUrl($url) { - return preg_replace('#^(user|sysadmin|dev)/#', '\1/en/stable/', $url); + return preg_replace('#^(installation|user|sysadmin|dev)/#', '\1/en/latest/', $url); } /** @@ -1497,7 +1497,7 @@ class CRM_Utils_System { = CRM_Contribute_BAO_Contribution::$_exportableFields = CRM_Pledge_BAO_Pledge::$_exportableFields = CRM_Core_BAO_CustomField::$_importFields - = CRM_Core_BAO_Cache::$_cache = CRM_Core_DAO::$_dbColumnValueCache = NULL; + = CRM_Core_DAO::$_dbColumnValueCache = NULL; CRM_Core_OptionGroup::flushAll(); CRM_Utils_PseudoConstant::flushAll(); diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php index 53e2a67dea34288231577164dc1f9bd4eebe686f..78479501e3ab79599f79ef9af85660070e571ea7 100644 --- a/civicrm/CRM/Utils/System/Drupal8.php +++ b/civicrm/CRM/Utils/System/Drupal8.php @@ -56,6 +56,9 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase { // Validate the user object $violations = $account->validate(); if (count($violations)) { + foreach ($violations as $violation) { + CRM_Core_Session::setStatus($violation->getPropertyPath() . ': ' . $violation->getMessage(), '', 'alert'); + } return FALSE; } diff --git a/civicrm/CRM/Utils/System/UnitTests.php b/civicrm/CRM/Utils/System/UnitTests.php index ee53a4a2c4c45d3f93926f0506253d72bccbffbb..179906dbec0912abcaba25ff55983eaabbb3f774 100644 --- a/civicrm/CRM/Utils/System/UnitTests.php +++ b/civicrm/CRM/Utils/System/UnitTests.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Utils/System/WordPress.php b/civicrm/CRM/Utils/System/WordPress.php index 63672eeeeca536c5175bba2627a4deefa623f6b4..5983774cd7b631d6a7c7e08368330df3dd99efed 100644 --- a/civicrm/CRM/Utils/System/WordPress.php +++ b/civicrm/CRM/Utils/System/WordPress.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -22,6 +20,13 @@ */ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { + /** + * Get a normalized version of the wpBasePage. + */ + public static function getBasePage() { + return rtrim(Civi::settings()->get('wpBasePage'), '/'); + } + /** */ public function __construct() { @@ -84,6 +89,44 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { 'url' => admin_url('admin.php'), ]; }); + Civi::paths()->register('civicrm.files', function () { + $upload_dir = wp_get_upload_dir(); + + $old = CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage(); + $new = [ + 'path' => $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR, + 'url' => $upload_dir['baseurl'] . '/civicrm/', + ]; + + if ($old['path'] === $new['path']) { + return $new; + } + + $oldExists = file_exists($old['path']); + $newExists = file_exists($new['path']); + + if ($oldExists && !$newExists) { + return $old; + } + elseif (!$oldExists && $newExists) { + return $new; + } + elseif (!$oldExists && !$newExists) { + // neither exists. but that's ok. we're in one of these two cases: + // - we're just starting installation... which will get sorted in a moment + // when someone calls mkdir(). + // - we're running a bespoke setup... which will get sorted in a moment + // by applying $civicrm_paths. + return $new; + } + elseif ($oldExists && $newExists) { + // situation ambiguous. encourage admin to set value explicitly. + if (!isset($GLOBALS['civicrm_paths']['civicrm.files'])) { + \Civi::log()->warning("The system has data from both old+new conventions. Please use civicrm.settings.php to set civicrm.files explicitly."); + } + return $new; + } + }); } else { // Legacy support - only relevant for older extern routes. diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php index 7439473c7a749d34ce123fac81f19c95f97bef32..d3774f5d68f05d5660e2768c7d21d6478655fc0c 100644 --- a/civicrm/CRM/Utils/Token.php +++ b/civicrm/CRM/Utils/Token.php @@ -250,7 +250,7 @@ class CRM_Utils_Token { /** * @param $token - * @param $domain + * @param CRM_Core_BAO_Domain $domain * @param bool $html * @param bool $escapeSmarty * @@ -261,7 +261,7 @@ class CRM_Utils_Token { // we have to do this because this function is // called only when we find a token in the string - $loc = &$domain->getLocationValues(); + $loc = $domain->getLocationValues(); if (!in_array($token, self::$_tokens['domain'])) { $value = "{domain.$token}"; diff --git a/civicrm/CRM/Utils/VisualBundle.php b/civicrm/CRM/Utils/VisualBundle.php index 8d817290b551acf44ca8a760f04f12c39b2ab96b..a4b01aa03c7184d85b19124679c42407e10eabf4 100644 --- a/civicrm/CRM/Utils/VisualBundle.php +++ b/civicrm/CRM/Utils/VisualBundle.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Utils_VisualBundle { diff --git a/civicrm/CRM/Widget/Widget.php b/civicrm/CRM/Widget/Widget.php deleted file mode 100644 index dbc4afe80cce8294af82ba1585eac9d934ed25e5..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Widget/Widget.php +++ /dev/null @@ -1,197 +0,0 @@ -<?php -/* - * Copyright (C) 2007 Jacob Singh, Sam Lerner - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Modified and improved upon by CiviCRM LLC (c) 2007 - */ - -/** - * Class CRM_Widget_Widget - */ -class CRM_Widget_Widget { - - public static $_methodTable; - - public function initialize() { - if (!self::$_methodTable) { - self::$_methodTable = [ - 'getContributionPageData' => [ - 'description' => 'Gets all campaign related data and returns it as a std class.', - 'access' => 'remote', - 'arguments' => [ - 'contributionPageID', - 'widgetID', - ], - ], - 'getEmbedCode' => [ - 'description' => 'Gets embed code. Perhaps overkill, but we can track dropoffs in this case. by # of people requesting embed code / number of unique instances.', - 'access' => 'remote', - 'arguments' => [ - 'contributionPageID', - 'widgetID', - 'format', - ], - ], - ]; - } - } - - public function &methodTable() { - self::initialize(); - - return self::$_methodTable; - } - - /** - * Not implemented - registers an action and unique widget ID. Useful for stats and debugging - * - * @param int $contributionPageID - * @param string $widgetID - * @param string $action - * - * @return string - */ - public function registerRequest($contributionPageID, $widgetID, $action) { - return "I registered a request to $action on $contributionPageID from $widgetID"; - } - - /** - * Gets all campaign related data and returns it as a std class. - * - * @param int $contributionPageID - * @param string $widgetID - * - * @return object - */ - public function getContributionPageData($contributionPageID, $widgetID) { - $config = CRM_Core_Config::singleton(); - - self::registerRequest($contributionPageID, $widgetID, __FUNCTION__); - - $data = new stdClass(); - - if (empty($contributionPageID) || - CRM_Utils_Type::validate($contributionPageID, 'Integer') == NULL - ) { - $data->is_error = TRUE; - CRM_Core_Error::debug_log_message("$contributionPageID is not set"); - return $data; - } - - $widget = new CRM_Contribute_DAO_Widget(); - $widget->contribution_page_id = $contributionPageID; - if (!$widget->find(TRUE)) { - $data->is_error = TRUE; - CRM_Core_Error::debug_log_message("$contributionPageID is not found"); - return $data; - } - - $data->is_error = FALSE; - if (!$widget->is_active) { - $data->is_active = FALSE; - } - - $data->is_active = TRUE; - $data->title = $widget->title; - $data->logo = $widget->url_logo; - $data->button_title = $widget->button_title; - $data->button_url = CRM_Utils_System::url('civicrm/contribute/transact', - "reset=1&id=$contributionPageID", - TRUE, NULL, FALSE, TRUE - ); - $data->about = $widget->about; - - $query = " -SELECT count( id ) as count, - sum( total_amount) as amount -FROM civicrm_contribution -WHERE is_test = 0 -AND contribution_status_id = 1 -AND contribution_page_id = %1"; - $params = [1 => [$contributionPageID, 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($query, $params); - if ($dao->fetch()) { - $data->num_donors = $dao->count; - $data->money_raised = $dao->amount; - } - else { - $data->num_donors = $data->money_raised = 0; - } - - $query = " -SELECT goal_amount, start_date, end_date, is_active -FROM civicrm_contribution_page -WHERE id = %1"; - $params = [1 => [$contributionPageID, 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($query, $params); - if ($dao->fetch()) { - $data->money_target = $dao->goal_amount; - $data->campaign_start = CRM_Utils_Date::customFormat($dao->start_date, $config->dateformatFull); - $data->campaign_end = CRM_Utils_Date::customFormat($dao->end_date, $config->dateformatFull); - - // check for time being between start and end date - $now = time(); - if ($dao->start_date) { - $startDate = CRM_Utils_Date::unixTime($dao->start_date); - if ($startDate && - $startDate >= $now - ) { - $data->is_active = FALSE; - } - } - - if ($dao->end_date) { - $endDate = CRM_Utils_Date::unixTime($dao->end_date); - if ($endDate && - $endDate < $now - ) { - $data->is_active = FALSE; - } - } - } - else { - $data->is_active = FALSE; - } - - // if is_active is false, show this link and hide the contribute button - $data->homepage_link = $widget->url_homepage; - - // movie clip colors, must be in '0xRRGGBB' format - $data->colors = []; - - $hexPrefix = '0x'; - $data->colors["title"] = str_replace('#', $hexPrefix, $widget->color_title); - $data->colors["button"] = str_replace('#', $hexPrefix, $widget->color_button); - $data->colors["bar"] = str_replace('#', $hexPrefix, $widget->color_bar); - $data->colors["main_text"] = str_replace('#', $hexPrefix, $widget->color_main_text); - $data->colors["main"] = str_replace('#', $hexPrefix, $widget->color_main); - $data->colors["main_bg"] = str_replace('#', $hexPrefix, $widget->color_main_bg); - $data->colors["bg"] = str_replace('#', $hexPrefix, $widget->color_bg); - - // these two have colors as normal hex format - // because they're being used in a CSS object - $data->colors["about_link"] = str_replace('#', $hexPrefix, $widget->color_about_link); - $data->colors["homepage_link"] = str_replace('#', $hexPrefix, $widget->color_homepage_link); - - return $data; - } - - /** - * Gets embed code. Perhaps overkill, but we can track dropoffs in this case. - * by # of people reqeusting emebed code / number of unique instances. - * - * @param int $contributionPageID - * @param string $widgetID - * @param string $format - * Either myspace or normal. - * - * @return string - */ - public function getEmbedCode($contributionPageID, $widgetID, $format = "normal") { - self::registerRequest($contributionPageID, $widgetID, __FUNCTION__); - return "<embed>.......................</embed>" . - print_r(func_get_args(), 1); - } - -} diff --git a/civicrm/Civi.php b/civicrm/Civi.php index 95009e35c3fd3df36ba03e43dca7b844d78b9818..f916756883ed7ae8c40756847a70a471576490df 100644 --- a/civicrm/Civi.php +++ b/civicrm/Civi.php @@ -64,7 +64,14 @@ class Civi { * @return \Symfony\Component\EventDispatcher\EventDispatcherInterface */ public static function dispatcher() { - return Civi\Core\Container::singleton()->get('dispatcher'); + // NOTE: The dispatcher object is initially created as a boot service + // (ie `dispatcher.boot`). For compatibility with the container (eg + // `RegisterListenersPass` and `createEventDispatcher` addons), + // it is also available as the `dispatcher` service. + // + // The 'dispatcher.boot' and 'dispatcher' services are the same object, + // but 'dispatcher.boot' is resolvable earlier during bootstrap. + return Civi\Core\Container::getBootService('dispatcher.boot'); } /** diff --git a/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php b/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php index 31e228968224a9a95282ddd8d6b07de28fddbb31..abbd07ae9aaa7c54bb144e1d0f6d5908ea171217 100644 --- a/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php +++ b/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php @@ -73,11 +73,11 @@ abstract class AbstractSettingAction extends \Civi\Api4\Generic\AbstractAction { protected function findDomains() { if ($this->domainId == 'all') { - $this->domainId = Domain::get()->setCheckPermissions(FALSE)->addSelect('id')->execute()->column('id'); + $this->domainId = Domain::get(FALSE)->addSelect('id')->execute()->column('id'); } elseif ($this->domainId) { $this->domainId = (array) $this->domainId; - $domains = Domain::get()->setCheckPermissions(FALSE)->addSelect('id')->execute()->column('id'); + $domains = Domain::get(FALSE)->addSelect('id')->execute()->column('id'); $invalid = array_diff($this->domainId, $domains); if ($invalid) { throw new \API_Exception('Invalid domain id: ' . implode(', ', $invalid)); diff --git a/civicrm/Civi/Api4/Action/System/Check.php b/civicrm/Civi/Api4/Action/System/Check.php index 9080f60a8d4ec7ab28c8c1f196fd1575d957575e..19df2a2a1150c1a8d3fdebda38991d93d580ad09 100644 --- a/civicrm/Civi/Api4/Action/System/Check.php +++ b/civicrm/Civi/Api4/Action/System/Check.php @@ -14,12 +14,39 @@ namespace Civi\Api4\Action\System; /** * Retrieve system notices, warnings, errors, etc. + * @method bool getIncludeDisabled() */ class Check extends \Civi\Api4\Generic\BasicGetAction { + /** + * Run checks that have been explicitly disabled (default false) + * @var bool + */ + protected $includeDisabled = FALSE; + + /** + * @param bool $includeDisabled + * @return Check + */ + public function setIncludeDisabled(bool $includeDisabled): Check { + $this->includeDisabled = $includeDisabled; + return $this; + } + protected function getRecords() { - $messages = []; - foreach (\CRM_Utils_Check::checkAll() as $message) { + $messages = $names = []; + + // Filtering by name relies on the component check rather than the api arrayQuery + // @see \CRM_Utils_Check_Component::isCheckable + foreach ($this->where as $i => $clause) { + if ($clause[0] == 'name' && !empty($clause[2]) && in_array($clause[1], ['=', 'IN'], TRUE)) { + $names = (array) $clause[2]; + unset($this->where[$i]); + break; + } + } + + foreach (\CRM_Utils_Check::checkStatus($names, $this->includeDisabled) as $message) { $messages[] = $message->toArray(); } return $messages; diff --git a/civicrm/Civi/Api4/ActivityContact.php b/civicrm/Civi/Api4/ActivityContact.php index 3c306ef1397665661f240cef6999a0e7f57bb18b..e0d39cfb2797ac7813f43e14f64c4097f4946946 100644 --- a/civicrm/Civi/Api4/ActivityContact.php +++ b/civicrm/Civi/Api4/ActivityContact.php @@ -29,6 +29,6 @@ namespace Civi\Api4; * @see \Civi\Api4\Activity * @package Civi\Api4 */ -class ActivityContact extends Generic\DAOEntity { +class ActivityContact extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Address.php b/civicrm/Civi/Api4/Address.php index 003e5456d23d1a21d44801d3074e429cc283b18a..038e544ea71efb6d955b1306dc08891b1b7d0f19 100644 --- a/civicrm/Civi/Api4/Address.php +++ b/civicrm/Civi/Api4/Address.php @@ -33,24 +33,30 @@ namespace Civi\Api4; class Address extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Address\Create + * @param bool $checkPermissions + * @return Action\Address\Create */ - public static function create() { - return new \Civi\Api4\Action\Address\Create(__CLASS__, __FUNCTION__); + public static function create($checkPermissions = TRUE) { + return (new Action\Address\Create(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Action\Address\Save + * @param bool $checkPermissions + * @return Action\Address\Save */ - public static function save() { - return new \Civi\Api4\Action\Address\Save(__CLASS__, __FUNCTION__); + public static function save($checkPermissions = TRUE) { + return (new Action\Address\Save(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Action\Address\Update + * @param bool $checkPermissions + * @return Action\Address\Update */ - public static function update() { - return new \Civi\Api4\Action\Address\Update(__CLASS__, __FUNCTION__); + public static function update($checkPermissions = TRUE) { + return (new Action\Address\Update(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Campaign.php b/civicrm/Civi/Api4/Campaign.php index 479a6577bf91f13b29afe0fc3a0bc3de4bcd0ea3..7d15c1b598659f087ffc7c6fa49bed51cdf143f2 100644 --- a/civicrm/Civi/Api4/Campaign.php +++ b/civicrm/Civi/Api4/Campaign.php @@ -28,10 +28,12 @@ namespace Civi\Api4; class Campaign extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Campaign\Get + * @param bool $checkPermissions + * @return Action\Campaign\Get */ - public static function get() { - return new \Civi\Api4\Action\Campaign\Get(__CLASS__, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Campaign\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Contact.php b/civicrm/Civi/Api4/Contact.php index 9e13c833c46f832aab36734a60486b70565c2888..59abcc742e5ad5580aa371f7a83da1576205ab8c 100644 --- a/civicrm/Civi/Api4/Contact.php +++ b/civicrm/Civi/Api4/Contact.php @@ -33,17 +33,21 @@ namespace Civi\Api4; class Contact extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Contact\GetChecksum + * @param bool $checkPermissions + * @return Action\Contact\GetChecksum */ - public static function getChecksum() { - return new Action\Contact\GetChecksum(__CLASS__, __FUNCTION__); + public static function getChecksum($checkPermissions = TRUE) { + return (new Action\Contact\GetChecksum(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Action\Contact\ValidateChecksum + * @param bool $checkPermissions + * @return Action\Contact\ValidateChecksum */ - public static function validateChecksum() { - return new Action\Contact\ValidateChecksum(__CLASS__, __FUNCTION__); + public static function validateChecksum($checkPermissions = TRUE) { + return (new Action\Contact\ValidateChecksum(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/CustomValue.php b/civicrm/Civi/Api4/CustomValue.php index 71881da65995b0ed8863ccbbf7c52adf0be0fec7..9cc2e5f753e937dadc2738b60a6157583b5d996b 100644 --- a/civicrm/Civi/Api4/CustomValue.php +++ b/civicrm/Civi/Api4/CustomValue.php @@ -37,74 +37,90 @@ class CustomValue { /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Get * @throws \API_Exception */ - public static function get($customGroup) { - return new Action\CustomValue\Get($customGroup, __FUNCTION__); + public static function get($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Get($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\GetFields * @throws \API_Exception */ - public static function getFields($customGroup = NULL) { - return new Action\CustomValue\GetFields($customGroup, __FUNCTION__); + public static function getFields($customGroup = NULL, $checkPermissions = TRUE) { + return (new Action\CustomValue\GetFields($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Save * @throws \API_Exception */ - public static function save($customGroup) { - return new Action\CustomValue\Save($customGroup, __FUNCTION__); + public static function save($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Save($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Create * @throws \API_Exception */ - public static function create($customGroup) { - return new Action\CustomValue\Create($customGroup, __FUNCTION__); + public static function create($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Create($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Update * @throws \API_Exception */ - public static function update($customGroup) { - return new Action\CustomValue\Update($customGroup, __FUNCTION__); + public static function update($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Update($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Delete * @throws \API_Exception */ - public static function delete($customGroup) { - return new Action\CustomValue\Delete($customGroup, __FUNCTION__); + public static function delete($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Delete($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Replace * @throws \API_Exception */ - public static function replace($customGroup) { - return new Action\CustomValue\Replace($customGroup, __FUNCTION__); + public static function replace($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Replace($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\GetActions * @throws \API_Exception */ - public static function getActions($customGroup = NULL) { - return new Action\CustomValue\GetActions($customGroup, __FUNCTION__); + public static function getActions($customGroup = NULL, $checkPermissions = TRUE) { + return (new Action\CustomValue\GetActions($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/DashboardContact.php b/civicrm/Civi/Api4/DashboardContact.php index 4a4bdc732cee0e9808b68286d53b9f8212f8583c..313327204109da16e053694d1fdbed1e3d23febe 100644 --- a/civicrm/Civi/Api4/DashboardContact.php +++ b/civicrm/Civi/Api4/DashboardContact.php @@ -26,6 +26,6 @@ namespace Civi\Api4; * @see \Civi\Api4\Dashboard * @package Civi\Api4 */ -class DashboardContact extends Generic\DAOEntity { +class DashboardContact extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Domain.php b/civicrm/Civi/Api4/Domain.php index 589f57052e568c13c642ac5f0d53f7d8889fdc5d..a8a40cac74d4ef75bae23801bdc7cd3e7811aca1 100644 --- a/civicrm/Civi/Api4/Domain.php +++ b/civicrm/Civi/Api4/Domain.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -30,8 +28,13 @@ namespace Civi\Api4; */ class Domain extends Generic\DAOEntity { - public static function get() { - return new \Civi\Api4\Action\Domain\Get(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Domain\Get + */ + public static function get($checkPermissions = TRUE) { + return (new Action\Domain\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Email.php b/civicrm/Civi/Api4/Email.php index 92cdf955fd882a681a732267f392fa20c04f0aa5..cfb9ef99e868ecf8925f9e9141b60863ac76f727 100644 --- a/civicrm/Civi/Api4/Email.php +++ b/civicrm/Civi/Api4/Email.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Entity.php b/civicrm/Civi/Api4/Entity.php index a7767eab47bcfd74108d1fd2392a12ab28669d51..49f39859ecc6b090f4326dc14a5f784aa9b5e9bd 100644 --- a/civicrm/Civi/Api4/Entity.php +++ b/civicrm/Civi/Api4/Entity.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,17 +29,20 @@ namespace Civi\Api4; class Entity extends Generic\AbstractEntity { /** + * @param bool $checkPermissions * @return Action\Entity\Get */ - public static function get() { - return new Action\Entity\Get('Entity', __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Entity\Get('Entity', __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Generic\BasicGetFieldsAction + * @param bool $checkPermissions + * @return Generic\BasicGetFieldsAction */ - public static function getFields() { - return new \Civi\Api4\Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function() { + public static function getFields($checkPermissions = TRUE) { + return (new Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function() { return [ [ 'name' => 'name', @@ -51,6 +52,11 @@ class Entity extends Generic\AbstractEntity { 'name' => 'title', 'description' => 'Localized title', ], + [ + 'name' => 'type', + 'description' => 'Base class for this entity', + 'options' => ['DAOEntity' => 'DAOEntity', 'BasicEntity' => 'BasicEntity', 'BridgeEntity' => 'BridgeEntity', 'AbstractEntity' => 'AbstractEntity'], + ], [ 'name' => 'description', 'description' => 'Description from docblock', @@ -73,14 +79,16 @@ class Entity extends Generic\AbstractEntity { 'description' => 'Any @see annotations from docblock', ], ]; - }); + }))->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return Action\Entity\GetLinks */ - public static function getLinks() { - return new Action\Entity\GetLinks('Entity', __FUNCTION__); + public static function getLinks($checkPermissions = TRUE) { + return (new Action\Entity\GetLinks('Entity', __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/EntityTag.php b/civicrm/Civi/Api4/EntityTag.php index e2a48276a0196e6fe1fdd5ccfad95e93179efa1d..aeefb3d747e26a8af89fbc8b1d443f7483fe3e8e 100644 --- a/civicrm/Civi/Api4/EntityTag.php +++ b/civicrm/Civi/Api4/EntityTag.php @@ -25,6 +25,6 @@ namespace Civi\Api4; * * @package Civi\Api4 */ -class EntityTag extends Generic\DAOEntity { +class EntityTag extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Event.php b/civicrm/Civi/Api4/Event.php index c21a0def34eb4741afeca68a09e6c4442d77bdf5..66c504a5341bbc8410db543a85f0e1c4d7870e2c 100644 --- a/civicrm/Civi/Api4/Event.php +++ b/civicrm/Civi/Api4/Event.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,10 +29,12 @@ namespace Civi\Api4; class Event extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Event\Get + * @param bool $checkPermissions + * @return Action\Event\Get */ - public static function get() { - return new \Civi\Api4\Action\Event\Get(__CLASS__, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Event\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Event/Events.php b/civicrm/Civi/Api4/Event/Events.php index c5247695c5fbe391acc5709e592b57c9100608d0..83ef7b4c97c3491c633ff658d9d6a192268d2747 100644 --- a/civicrm/Civi/Api4/Event/Events.php +++ b/civicrm/Civi/Api4/Event/Events.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php b/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php index f57cd298f61d5dd22747991b4729f450471fc359..7fd6ce93f4c9605108eaf0163c96d6b6e9ccb0d4 100644 --- a/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php +++ b/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php b/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php index 38dc9890288ff0914a8017db150130e3e4960710..a29b7fddee990d8f2560e0ac8c34bd099a9f7965 100644 --- a/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php +++ b/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php index 806a3d451ed45876841940b2571f3e9c06815547..ceb6ccc842f3afd9fc71cde330546eb7fddc13da 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -35,8 +33,7 @@ class ActivityPreCreationSubscriber extends Generic\PreCreationSubscriber { $activityType = $request->getValue('activity_type'); if ($activityType) { \CRM_Core_Error::deprecatedFunctionWarning('Use activity_type_id:name instead of activity_type in APIv4'); - $result = OptionValue::get() - ->setCheckPermissions(FALSE) + $result = OptionValue::get(FALSE) ->addWhere('name', '=', $activityType) ->addWhere('option_group.name', '=', 'activity_type') ->execute(); diff --git a/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php index 72adfb0e18b1b351783373524d733008acae7806..fa8d4af8d9c2fe1c7f4e613ece561af87283e0be 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php index 1d9a573e9db0a3caae11569375ebc7bcd2861547..b2d2180d5028ffe2c5df153f1b347b37e95d700a 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php index 4fae715c70a02dff7dbbbbae19cf2b197c9c4553..9689f4bc207f001d211e0cfb3e9e2f352196ff18 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php index d2344803d158328fc9f4306c742b2cfa900d1996..b3bf36f6dfa4da5b4afd6cb263403787c1bf0e18 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php index 509640bd159ff2ed2957bb4cae69a184a70ec725..e0615aae143bc5cf177ee588040bac0bf783ca23 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php index 3835c70d28850af74b78d57a3130f1365778b887..032c0f07e5b13e075064b6f747c954348a69004f 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php index af664a0bdf4e145ae884026688c0ac308c384443..256af1f5f5bde68761f21b5ea24295d9ed4731f8 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php index 1e2d9d9a13577c67f9dc77a93828d3233643726a..648843468c2c26a5bf08d0ec8809641c7a76ebbd 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php index 355738cf86e9b69d1281fb425451c3aa5397cbbe..0396eb16b0e4714cca65e2de01723a19582405bb 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -53,8 +51,7 @@ class OptionValuePreCreationSubscriber extends Generic\PreCreationSubscriber { return; } \CRM_Core_Error::deprecatedFunctionWarning('Use option_group_id:name instead of option_group in APIv4'); - $optionGroup = OptionGroup::get() - ->setCheckPermissions(FALSE) + $optionGroup = OptionGroup::get(FALSE) ->addSelect('id') ->addWhere('name', '=', $optionGroupName) ->execute(); diff --git a/civicrm/Civi/Api4/Generic/AbstractAction.php b/civicrm/Civi/Api4/Generic/AbstractAction.php index 7a90e1c0a343d10e5db10bbc38e05767f72bf509..8d0111e6b35dccafc9fda3949ca5ad8ec4b11a7a 100644 --- a/civicrm/Civi/Api4/Generic/AbstractAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractAction.php @@ -33,7 +33,6 @@ use Civi\Api4\Utils\ReflectionUtils; * - Expose the param in the Api Explorer (be sure to add a doc-block as it displays in the help panel). * - Require a value for the param if you add the "@required" annotation. * - * @method $this setCheckPermissions(bool $value) Enable/disable permission checks * @method bool getCheckPermissions() * @method $this setDebug(bool $value) Enable/disable debug output * @method bool getDebug() @@ -174,6 +173,15 @@ abstract class AbstractAction implements \ArrayAccess { return $this; } + /** + * @param bool $checkPermissions + * @return $this + */ + public function setCheckPermissions(bool $checkPermissions) { + $this->checkPermissions = $checkPermissions; + return $this; + } + /** * @param string $name * Unique name for this chained request diff --git a/civicrm/Civi/Api4/Generic/AbstractEntity.php b/civicrm/Civi/Api4/Generic/AbstractEntity.php index 254f626a059ff93859cfa620ab9019a67d91a0fe..269bcc31b3c9bcb12bfaeadaf26a9539cd1d7252 100644 --- a/civicrm/Civi/Api4/Generic/AbstractEntity.php +++ b/civicrm/Civi/Api4/Generic/AbstractEntity.php @@ -24,33 +24,30 @@ use Civi\Api4\Utils\ReflectionUtils; /** * Base class for all api entities. * - * When adding your own api from an extension, extend this class only - * if your entity does not have an associated DAO. Otherwise extend DAOEntity. + * This is the most generic of 3 possible base classes for an APIv4 Entity + * (the other 2, which extend this class, are `BasicEntity` and `DAOEntity`). * - * The recommended way to create a non-DAO-based api is to extend this class - * and then add a getFields function and any other actions you wish, e.g. - * - a get() function which returns BasicGetAction using your custom getter callback. - * - a create() function which returns BasicCreateAction using your custom setter callback. - * - a save() function which returns BasicSaveAction using your custom setter callback. - * - an update() function which returns BasicUpdateAction using your custom setter callback. - * - a delete() function which returns BasicBatchAction using your custom delete callback. - * - a replace() function which returns BasicReplaceAction (no callback needed but - * depends on the existence of get, save & delete actions). + * Implementing an API by extending this class directly is appropriate when it does not implement + * all of the CRUD actions, or only a subset like `get` without `create`, `update` or `delete`; + * for example the RelationshipCache entity. * - * Note that you can use the same setter callback function for update as create - - * that function can distinguish between new & existing records by checking if the - * unique identifier has been set (identifier field defaults to "id" but you can change - * that when constructing BasicUpdateAction). + * For all other APIs that do implement CRUD it is recommended to use: + * 1. `DAOEntity` for all entities with a DAO (sql table). + * 2. `BasicEntity` for all others, e.g. file-based entities. + * + * An entity which extends this class directly must, at minimum, implement the `getFields` action. * * @see https://lab.civicrm.org/extensions/api4example */ abstract class AbstractEntity { /** + * @param bool $checkPermissions * @return \Civi\Api4\Action\GetActions */ - public static function getActions() { - return new \Civi\Api4\Action\GetActions(self::getEntityName(), __FUNCTION__); + public static function getActions($checkPermissions = TRUE) { + return (new \Civi\Api4\Action\GetActions(self::getEntityName(), __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** @@ -78,7 +75,7 @@ abstract class AbstractEntity { * @return string */ protected static function getEntityName() { - return substr(static::class, strrpos(static::class, '\\') + 1); + return self::stripNamespace(static::class); } /** @@ -94,7 +91,7 @@ abstract class AbstractEntity { * Magic method to return the action object for an api. * * @param string $action - * @param null $args + * @param array $args * @return AbstractAction * @throws NotImplementedException */ @@ -104,6 +101,9 @@ abstract class AbstractEntity { $entityAction = "\\Civi\\Api4\\Action\\$entity\\" . ucfirst($action); if (class_exists($entityAction)) { $actionObject = new $entityAction($entity, $action); + if (isset($args[0]) && $args[0] === FALSE) { + $actionObject->setCheckPermissions(FALSE); + } } else { throw new NotImplementedException("Api $entity $action version 4 does not exist."); @@ -121,6 +121,7 @@ abstract class AbstractEntity { $info = [ 'name' => static::getEntityName(), 'title' => static::getEntityTitle(), + 'type' => self::stripNamespace(get_parent_class(static::class)), ]; $reflection = new \ReflectionClass(static::class); $info += ReflectionUtils::getCodeDocs($reflection, NULL, ['entity' => $info['name']]); @@ -128,4 +129,14 @@ abstract class AbstractEntity { return $info; } + /** + * Remove namespace prefix from a class name + * + * @param string $className + * @return string + */ + private static function stripNamespace($className) { + return substr($className, strrpos($className, '\\') + 1); + } + } diff --git a/civicrm/Civi/Api4/Generic/AbstractGetAction.php b/civicrm/Civi/Api4/Generic/AbstractGetAction.php index 1e0d547702138947fc31e3543ed45215b6bffcd1..153f2e60a072b2c265c301a3ab76cf21a6dcdeac 100644 --- a/civicrm/Civi/Api4/Generic/AbstractGetAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractGetAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -107,7 +105,7 @@ abstract class AbstractGetAction extends AbstractQueryAction { protected function _itemsToGet($field) { foreach ($this->where as $clause) { // Look for exact-match operators (=, IN, or LIKE with no wildcard) - if ($clause[0] == $field && (in_array($clause[1], ['=', 'IN']) || ($clause[1] == 'LIKE' && !(is_string($clause[2]) && strpos($clause[2], '%') !== FALSE)))) { + if ($clause[0] == $field && (in_array($clause[1], ['=', 'IN'], TRUE) || ($clause[1] == 'LIKE' && !(is_string($clause[2]) && strpos($clause[2], '%') !== FALSE)))) { return (array) $clause[2]; } } diff --git a/civicrm/Civi/Api4/Generic/AbstractQueryAction.php b/civicrm/Civi/Api4/Generic/AbstractQueryAction.php index 41fa6f65d06c45befbc4664fdf161729d11c12cc..ed7ac9bf374d88e99bf4c2df09bee9c0b087d325 100644 --- a/civicrm/Civi/Api4/Generic/AbstractQueryAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractQueryAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/AbstractSaveAction.php b/civicrm/Civi/Api4/Generic/AbstractSaveAction.php index 953f6c59c90aa92e3ba765c563a77b11c2998eb3..b12dc332049fe5d19b49baac995ef6bc7a8dd49f 100644 --- a/civicrm/Civi/Api4/Generic/AbstractSaveAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractSaveAction.php @@ -20,7 +20,14 @@ namespace Civi\Api4\Generic; /** - * Base class for all `Save` api actions. + * Create or update one or more $ENTITIES. + * + * Pass an array of one or more $ENTITY to save in the `records` param. + * + * If creating more than one $ENTITY with similar values, use the `defaults` param. + * + * Set `reload` if you need the api to return complete records for each saved $ENTITY + * (including values that were unchanged in from updated $ENTITIES). * * @method $this setRecords(array $records) Set array of records to be saved. * @method array getRecords() diff --git a/civicrm/Civi/Api4/Generic/BasicBatchAction.php b/civicrm/Civi/Api4/Generic/BasicBatchAction.php index cf86203a9efeb1d34cf72e70193f4f3003ad0077..d1787bd44a127ca9ee3208c571a9cdfccbd28596 100644 --- a/civicrm/Civi/Api4/Generic/BasicBatchAction.php +++ b/civicrm/Civi/Api4/Generic/BasicBatchAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -34,8 +32,7 @@ class BasicBatchAction extends AbstractBatchAction { /** * @var callable - * - * Function(array $item, BasicBatchAction $thisAction) => array + * Function(array $item, BasicBatchAction $thisAction): array */ private $doer; @@ -54,7 +51,6 @@ class BasicBatchAction extends AbstractBatchAction { * @param string|array $select * One or more fields to select from each matching item. * @param callable $doer - * Function(array $item, BasicBatchAction $thisAction) => array */ public function __construct($entityName, $actionName, $select = 'id', $doer = NULL) { parent::__construct($entityName, $actionName, $select); diff --git a/civicrm/Civi/Api4/Generic/BasicCreateAction.php b/civicrm/Civi/Api4/Generic/BasicCreateAction.php index 7fe0f301da5e6b05edb920dc151e8925c8ab45b6..6a5027d35122d1351cdaa5177633784de86926a3 100644 --- a/civicrm/Civi/Api4/Generic/BasicCreateAction.php +++ b/civicrm/Civi/Api4/Generic/BasicCreateAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -33,8 +31,7 @@ class BasicCreateAction extends AbstractCreateAction { /** * @var callable - * - * Function(array $item, BasicCreateAction $thisAction) => array + * Function(array $item, BasicCreateAction $thisAction): array */ private $setter; @@ -44,7 +41,6 @@ class BasicCreateAction extends AbstractCreateAction { * @param string $entityName * @param string $actionName * @param callable $setter - * Function(array $item, BasicCreateAction $thisAction) => array */ public function __construct($entityName, $actionName, $setter = NULL) { parent::__construct($entityName, $actionName); diff --git a/civicrm/Civi/Api4/Generic/BasicEntity.php b/civicrm/Civi/Api4/Generic/BasicEntity.php new file mode 100644 index 0000000000000000000000000000000000000000..b582d294912bfea5060be439c5534dd43bcff896 --- /dev/null +++ b/civicrm/Civi/Api4/Generic/BasicEntity.php @@ -0,0 +1,139 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Generic; + +/** + * Base class for ad-hoc entities that implement CRUD actions. + * + * This is one of 3 possible base classes for an APIv4 Entity + * (the others are `DAOEntity` and `AbstractEntity`). + * + * This base class is for entities that do not have an associated DAO but do implement CRUD actions. + * It can be used in one of these ways: + * + * 1. Extend this class and define the static variables `$getter`, `$setter` & `$deleter` with callbacks to handle CRUD operations. + * In that case there is no need to implement any actions other than `getFields`. + * 2. Override the `get`, `create`, `delete`, etc. methods with custom BasicAction implementations. + * 3. Some combination of the above two options, e.g. defining a callback for `$getter` and using the default `get` action, + * but leaving `$deleter` unset and overriding the `delete` method with a custom BasicBatchAction to handle deletion. + * + * Note: the `replace` action does not require any callback as it internally calls the entity's `get`, `save` and `delete` actions. + */ +abstract class BasicEntity extends AbstractEntity { + + /** + * Unique identifier for this entity. + * + * @var string + */ + protected static $idField = 'id'; + + /** + * Function to read records. Used by `get` action. + * + * @var callable + * Function(BasicGetAction $thisAction): array[] + * + * This function should return an array of records, and is passed a copy of the BasicGetAction object as its first argument. + * The simplest implementation is for it to return every record and the BasicGetAction automatically handle sorting and filtering. + * + * If performance is a concern, it can take advantage of some helper functions for e.g. fetching item(s) by id. + * @see BasicGetAction::getRecords() + */ + protected static $getter; + + /** + * Function to write a record. Used by `create`, `update` and `save`. + * + * @var callable + * Function(array $item, BasicCreateAction|BasicSaveAction|BasicUpdateAction $thisAction): array + * + * This function is called once per write. It takes a single record as the first param, and a reference to + * the action object as the second. + * + * This callback should check the $idField of the record to determine whether the operation is a create or update. + * + * It should return the updated record as an array. + */ + protected static $setter; + + /** + * Function to delete records. Used by `delete` action. + * + * @var callable + * Function(array $item, BasicBatchAction $thisAction): array + * + * This function is called once per delete. It takes a single record as the first param, and a reference to + * the action object as the second. + * + * This callback should check the $idField of the item to determine which record to delete. + * + * It should return the deleted record as an array. + */ + protected static $deleter; + + /** + * @param bool $checkPermissions + * @return BasicGetAction + */ + public static function get($checkPermissions = TRUE) { + return (new BasicGetAction(static::class, __FUNCTION__, static::$getter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicCreateAction + */ + public static function create($checkPermissions = TRUE) { + return (new BasicCreateAction(static::class, __FUNCTION__, static::$setter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicSaveAction + */ + public static function save($checkPermissions = TRUE) { + return (new BasicSaveAction(static::class, __FUNCTION__, static::$idField, static::$setter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicUpdateAction + */ + public static function update($checkPermissions = TRUE) { + return (new BasicUpdateAction(static::class, __FUNCTION__, static::$idField, static::$setter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicBatchAction + */ + public static function delete($checkPermissions = TRUE) { + return (new BasicBatchAction(static::class, __FUNCTION__, static::$idField, static::$deleter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicReplaceAction + */ + public static function replace($checkPermissions = TRUE) { + return (new BasicReplaceAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + +} diff --git a/civicrm/Civi/Api4/Generic/BasicGetAction.php b/civicrm/Civi/Api4/Generic/BasicGetAction.php index e40215faa77791e5316bb672f95d59f77b2a2421..f436427c921ed8ecd8c16eb97ec51d2608cafa7d 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetAction.php @@ -32,8 +32,7 @@ class BasicGetAction extends AbstractGetAction { /** * @var callable - * - * Function(BasicGetAction $thisAction) => array<array> + * Function(BasicGetAction $thisAction): array[] */ private $getter; @@ -63,14 +62,15 @@ class BasicGetAction extends AbstractGetAction { } /** - * This Basic Get class is a general-purpose api for non-DAO-based entities. + * BasicGet is a general-purpose get action for non-DAO-based entities. * * Useful for fetching records from files or other places. - * You can specify any php function to retrieve the records, and this class will - * automatically filter, sort, select & limit the raw data from your callback. + * Specify any php function to retrieve the records, and this class will + * automatically filter, sort, select & limit the raw data from the callback. * - * You can implement this action in one of two ways: - * 1. Use this class directly by passing a callable ($getter) to the constructor. + * This action is implemented in one of two ways: + * 1. Invoke this class directly by passing a callable ($getter) to the constructor. BasicEntity does this by default. + * The function is passed a copy of $this action as it's first argument. * 2. Extend this class and override this function. * * Either way, this function should return an array of arrays, each representing one retrieved object. diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php index 070d9909bd574200c6bb23cad29bdfeed8dc89ef..ec58714fe46dc52f43d5ca2a2091d3966052f3b0 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/BasicSaveAction.php b/civicrm/Civi/Api4/Generic/BasicSaveAction.php index 855980cbdd50532fbeacc8e90ce5232d5d4e55df..c1316ede9707c4d38e834d94fa3945aed9fd221c 100644 --- a/civicrm/Civi/Api4/Generic/BasicSaveAction.php +++ b/civicrm/Civi/Api4/Generic/BasicSaveAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -24,29 +22,23 @@ namespace Civi\Api4\Generic; use Civi\API\Exception\NotImplementedException; /** - * $ACTION one or more $ENTITIES. - * - * If saving more than one new $ENTITY with similar values, use the `defaults` parameter. - * - * Set `reload` if you need the api to return complete $ENTITY records. + * @inheritDoc */ class BasicSaveAction extends AbstractSaveAction { /** * @var callable - * - * Function(array $item, BasicCreateAction $thisAction) => array + * Function(array $item, BasicCreateAction $thisAction): array */ private $setter; /** - * Basic Create constructor. + * Basic Save constructor. * * @param string $entityName * @param string $actionName * @param string $idField * @param callable $setter - * Function(array $item, BasicCreateAction $thisAction) => array */ public function __construct($entityName, $actionName, $idField = 'id', $setter = NULL) { parent::__construct($entityName, $actionName, $idField); diff --git a/civicrm/Civi/Api4/Generic/BasicUpdateAction.php b/civicrm/Civi/Api4/Generic/BasicUpdateAction.php index 57edbfba1fb3b65f054fe1a269b966ea183e12ad..a7bc7e9bb22b4ec5ff04b7c74c3e02215ae6fd64 100644 --- a/civicrm/Civi/Api4/Generic/BasicUpdateAction.php +++ b/civicrm/Civi/Api4/Generic/BasicUpdateAction.php @@ -30,8 +30,7 @@ class BasicUpdateAction extends AbstractUpdateAction { /** * @var callable - * - * Function(array $item, BasicUpdateAction $thisAction) => array + * Function(array $item, BasicUpdateAction $thisAction): array */ private $setter; @@ -43,7 +42,6 @@ class BasicUpdateAction extends AbstractUpdateAction { * @param string|array $select * One or more fields to select from each matching item. * @param callable $setter - * Function(array $item, BasicUpdateAction $thisAction) => array */ public function __construct($entityName, $actionName, $select = 'id', $setter = NULL) { parent::__construct($entityName, $actionName, $select); diff --git a/civicrm/Civi/Api4/Generic/BridgeEntity.php b/civicrm/Civi/Api4/Generic/BridgeEntity.php new file mode 100644 index 0000000000000000000000000000000000000000..32faea1aa588a668f48ececec085810487442fec --- /dev/null +++ b/civicrm/Civi/Api4/Generic/BridgeEntity.php @@ -0,0 +1,21 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Generic; + +/** + * A bridge is a small table that provides an intermediary link between two other tables. + * + * The API can automatically incorporate a bridgeEntity into a join expression. + */ +class BridgeEntity extends DAOEntity { + +} diff --git a/civicrm/Civi/Api4/Generic/DAOCreateAction.php b/civicrm/Civi/Api4/Generic/DAOCreateAction.php index c65a91f8845a344820164319ba15364bea682c4c..d2371d3180f473f8c9a076989d888fd11d4c2c2a 100644 --- a/civicrm/Civi/Api4/Generic/DAOCreateAction.php +++ b/civicrm/Civi/Api4/Generic/DAOCreateAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/DAOEntity.php b/civicrm/Civi/Api4/Generic/DAOEntity.php index 915b42cc54279dca093becbd8dbbc155dfed80cd..a7c47ee2e9a15e91f6626007b7f129e5c0511840 100644 --- a/civicrm/Civi/Api4/Generic/DAOEntity.php +++ b/civicrm/Civi/Api4/Generic/DAOEntity.php @@ -13,61 +13,81 @@ namespace Civi\Api4\Generic; /** - * Base class for DAO-based entities. + * Base class for DAO entities (sql tables). + * + * This is one of 3 possible base classes for an APIv4 Entity + * (the others are `BasicEntity` and `AbstractEntity`). + * + * This base class is used for entities that have an associated DAO and support CRUD operations. + * + * Entities that extend this class can override actions and add others on an ad-hoc basis. + * + * DAO entities which do not support all CRUD operations should instead extend AbstractEntity + * in order to implement just the actions appropriate to that entity. */ abstract class DAOEntity extends AbstractEntity { /** + * @param bool $checkPermissions * @return DAOGetAction - * - * @throws \API_Exception */ - public static function get() { - return new DAOGetAction(static::class, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new DAOGetAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOSaveAction */ - public static function save() { - return new DAOSaveAction(static::class, __FUNCTION__); + public static function save($checkPermissions = TRUE) { + return (new DAOSaveAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOGetFieldsAction */ - public static function getFields() { - return new DAOGetFieldsAction(static::class, __FUNCTION__); + public static function getFields($checkPermissions = TRUE) { + return (new DAOGetFieldsAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOCreateAction - * - * @throws \API_Exception */ - public static function create() { - return new DAOCreateAction(static::class, __FUNCTION__); + public static function create($checkPermissions = TRUE) { + return (new DAOCreateAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOUpdateAction */ - public static function update() { - return new DAOUpdateAction(static::class, __FUNCTION__); + public static function update($checkPermissions = TRUE) { + return (new DAOUpdateAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAODeleteAction */ - public static function delete() { - return new DAODeleteAction(static::class, __FUNCTION__); + public static function delete($checkPermissions = TRUE) { + return (new DAODeleteAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return BasicReplaceAction */ - public static function replace() { - return new BasicReplaceAction(static::class, __FUNCTION__); + public static function replace($checkPermissions = TRUE) { + return (new BasicReplaceAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/Generic/DAOGetAction.php b/civicrm/Civi/Api4/Generic/DAOGetAction.php index 2b73f18a8ffb3d33a172cd6cc9f4dc8d516baf0a..9ad1d54adc352ba4c9d2ccbdc7450ed0eb6c084c 100644 --- a/civicrm/Civi/Api4/Generic/DAOGetAction.php +++ b/civicrm/Civi/Api4/Generic/DAOGetAction.php @@ -35,7 +35,9 @@ class DAOGetAction extends AbstractGetAction { use Traits\DAOActionTrait; /** - * Fields to return. Defaults to all non-custom fields `[*]`. + * Fields to return. Defaults to all non-custom fields `['*']`. + * + * The keyword `"custom.*"` selects all custom fields. So to select all core + custom fields, select `['*', 'custom.*']`. * * Use the dot notation to perform joins in the select clause, e.g. selecting `['*', 'contact.*']` from `Email::get()` * will select all fields for the email + all fields for the related contact. @@ -48,7 +50,21 @@ class DAOGetAction extends AbstractGetAction { /** * Joins to other entities. * + * Each join is an array of properties: + * + * ``` + * [Entity, Required, Bridge, [field, op, value]...] + * ``` + * + * - `Entity`: the name of the api entity to join onto. + * - `Required`: `TRUE` for an `INNER JOIN`, `FALSE` for a `LEFT JOIN`. + * - `Bridge` (optional): Name of a BridgeEntity to incorporate into the join. + * - `[field, op, value]...`: zero or more conditions for the ON clause, using the same nested format as WHERE and HAVING + * but with the difference that "value" is interpreted as an expression (e.g. can be the name of a field). + * Enclose literal values with quotes. + * * @var array + * @see \Civi\Api4\Generic\BridgeEntity */ protected $join = []; @@ -141,10 +157,14 @@ class DAOGetAction extends AbstractGetAction { /** * @param string $entity * @param bool $required + * @param string $bridge * @param array ...$conditions * @return DAOGetAction */ - public function addJoin(string $entity, bool $required = FALSE, ...$conditions): DAOGetAction { + public function addJoin(string $entity, bool $required = FALSE, $bridge = NULL, ...$conditions): DAOGetAction { + if ($bridge) { + array_unshift($conditions, $bridge); + } array_unshift($conditions, $entity, $required); $this->join[] = $conditions; return $this; diff --git a/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php b/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php index 74afc1715fc9d1446475b30b17c79ff804f927ce..631e91652f025f3dcb7d2206f8aa9a65932f7f31 100644 --- a/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/DAOSaveAction.php b/civicrm/Civi/Api4/Generic/DAOSaveAction.php index 1f0dead3752bf0d1d1c619a3ea1d294266a7493a..a3d8a288f55a9861d30750b9cb36dee1e5f2e7d6 100644 --- a/civicrm/Civi/Api4/Generic/DAOSaveAction.php +++ b/civicrm/Civi/Api4/Generic/DAOSaveAction.php @@ -14,19 +14,13 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4\Generic; /** - * Create or update one or more $ENTITIES. - * - * If creating more than one $ENTITY with similar values, use the `defaults` param. - * - * Set `reload` if you need the api to return complete records for each saved $ENTITY. + * @inheritDoc */ class DAOSaveAction extends AbstractSaveAction { use Traits\DAOActionTrait; diff --git a/civicrm/Civi/Api4/Generic/DAOUpdateAction.php b/civicrm/Civi/Api4/Generic/DAOUpdateAction.php index d039b6e144f8ad15c6f8a2a3fe71cc36354a9ae4..0d4bf17551157b82610da514c5eb62ecff4810d8 100644 --- a/civicrm/Civi/Api4/Generic/DAOUpdateAction.php +++ b/civicrm/Civi/Api4/Generic/DAOUpdateAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php index 08db9f75fac31a31e7fc71c31cd8e3765b2acda1..4ae6096c503965784deff942f29420d785cf50a0 100644 --- a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -62,7 +60,7 @@ trait ArrayQueryActionTrait { * @return bool */ private function evaluateFilters($row) { - $where = $this->getWhere(); + $where = array_values($this->getWhere()); $allConditions = in_array($where[0], ['AND', 'OR', 'NOT']) ? $where : ['AND', $where]; return $this->walkFilters($row, $allConditions); } diff --git a/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php index acf90cdcf5398ccfa862f3d9a4cc584104ecbbd6..78065d55f355ef47c40a163d93690a6ae2f77504 100644 --- a/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php index 85ac173f5e6ce96dfdb8fe98a9204958bacac5c2..6497168a3d955be5ce00096d08a354572dce548b 100644 --- a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -12,6 +12,7 @@ namespace Civi\Api4\Generic\Traits; +use Civi\Api4\CustomField; use Civi\Api4\Utils\FormattingUtil; /** @@ -168,50 +169,29 @@ trait DAOActionTrait { // $customValueID is the ID of the custom value in the custom table for this // entity (i guess this assumes it's not a multi value entity) foreach ($params as $name => $value) { - if (strpos($name, '.') === FALSE) { + $field = $this->getCustomFieldInfo($name); + if (!$field) { continue; } - list($customGroup, $customField) = explode('.', $name); - list($customField, $option) = array_pad(explode(':', $customField), 2, NULL); - - $customFieldId = \CRM_Core_BAO_CustomField::getFieldValue( - \CRM_Core_DAO_CustomField::class, - $customField, - 'id', - 'name' - ); - $customFieldType = \CRM_Core_BAO_CustomField::getFieldValue( - \CRM_Core_DAO_CustomField::class, - $customField, - 'html_type', - 'name' - ); - $customFieldExtends = \CRM_Core_BAO_CustomGroup::getFieldValue( - \CRM_Core_DAO_CustomGroup::class, - $customGroup, - 'extends', - 'name' - ); - // todo are we sure we don't want to allow setting to NULL? need to test - if ($customFieldId && NULL !== $value) { + if (NULL !== $value) { - if ($option) { - $options = FormattingUtil::getPseudoconstantList($this->getEntityName(), 'custom_' . $customFieldId, $option, $params, $this->getActionName()); + if ($field['suffix']) { + $options = FormattingUtil::getPseudoconstantList($this->getEntityName(), 'custom_' . $field['id'], $field['suffix'], $params, $this->getActionName()); $value = FormattingUtil::replacePseudoconstant($options, $value, TRUE); } - if ($customFieldType === 'CheckBox') { + if ($field['html_type'] === 'CheckBox') { // this function should be part of a class - formatCheckBoxField($value, 'custom_' . $customFieldId, $this->getEntityName()); + formatCheckBoxField($value, 'custom_' . $field['id'], $this->getEntityName()); } \CRM_Core_BAO_CustomField::formatCustomField( - $customFieldId, + $field['id'], $customParams, $value, - $customFieldExtends, + $field['custom_group.extends'], // todo check when this is needed NULL, $entityId, @@ -227,6 +207,29 @@ trait DAOActionTrait { } } + /** + * Gets field info needed to save custom data + * + * @param string $name + * Field identifier with possible suffix, e.g. MyCustomGroup.MyField1:label + * @return array|NULL + */ + protected function getCustomFieldInfo($name) { + if (strpos($name, '.') === FALSE) { + return NULL; + } + list($groupName, $fieldName) = explode('.', $name); + list($fieldName, $suffix) = array_pad(explode(':', $fieldName), 2, NULL); + if (empty(\Civi::$statics['APIv4_Custom_Fields'][$groupName])) { + \Civi::$statics['APIv4_Custom_Fields'][$groupName] = (array) CustomField::get(FALSE) + ->addSelect('id', 'name', 'html_type', 'custom_group.extends') + ->addWhere('custom_group.name', '=', $groupName) + ->execute()->indexBy('name'); + } + $info = \Civi::$statics['APIv4_Custom_Fields'][$groupName][$fieldName] ?? NULL; + return $info ? ['suffix' => $suffix] + $info : NULL; + } + /** * Check edit/delete permissions for contacts and related entities. * diff --git a/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php b/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php index 81dde6ab89ab2f514d5ab1e82c9680376377f732..aec4b82e6608daaa16ef0eff8b4a16e82d8d722c 100644 --- a/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4\Generic\Traits; diff --git a/civicrm/Civi/Api4/Group.php b/civicrm/Civi/Api4/Group.php index b1cfa8591a4435e8500163c47e13fed191131399..1b685361b06d9b41157191402d00bc39bbb047d9 100644 --- a/civicrm/Civi/Api4/Group.php +++ b/civicrm/Civi/Api4/Group.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/GroupContact.php b/civicrm/Civi/Api4/GroupContact.php index 62d1b2dc0fae675bd868db7c3c4be8399a5a0a5c..d5935967a6399505eeba1ce7516b897081273fa5 100644 --- a/civicrm/Civi/Api4/GroupContact.php +++ b/civicrm/Civi/Api4/GroupContact.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; @@ -30,27 +28,33 @@ namespace Civi\Api4; * * @package Civi\Api4 */ -class GroupContact extends Generic\DAOEntity { +class GroupContact extends Generic\BridgeEntity { /** + * @param bool $checkPermissions * @return Action\GroupContact\Create */ - public static function create() { - return new Action\GroupContact\Create(__CLASS__, __FUNCTION__); + public static function create($checkPermissions = TRUE) { + return (new Action\GroupContact\Create(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return Action\GroupContact\Save */ - public static function save() { - return new Action\GroupContact\Save(__CLASS__, __FUNCTION__); + public static function save($checkPermissions = TRUE) { + return (new Action\GroupContact\Save(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return Action\GroupContact\Update */ - public static function update() { - return new Action\GroupContact\Update(__CLASS__, __FUNCTION__); + public static function update($checkPermissions = TRUE) { + return (new Action\GroupContact\Update(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/GroupNesting.php b/civicrm/Civi/Api4/GroupNesting.php index 96276beee6a490f1ea4cf97675711d6abd969c27..10e6b8d17430340a91703c06056d0793ea67b20d 100644 --- a/civicrm/Civi/Api4/GroupNesting.php +++ b/civicrm/Civi/Api4/GroupNesting.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/MailSettings.php b/civicrm/Civi/Api4/MailSettings.php index 342ecdbc6eb7a2dc2e294e4052a4b2d4e1f10559..f94667ec99c74dd3919661d8b878107817f9f2df 100644 --- a/civicrm/Civi/Api4/MailSettings.php +++ b/civicrm/Civi/Api4/MailSettings.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/MappingField.php b/civicrm/Civi/Api4/MappingField.php index 16cf57ad5678940c935a8c3339baa989de2afb17..23cb5e0ca96404778be7e4a74f29d433e9e2930f 100644 --- a/civicrm/Civi/Api4/MappingField.php +++ b/civicrm/Civi/Api4/MappingField.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/Navigation.php b/civicrm/Civi/Api4/Navigation.php index 9833842ec7c2bcc19d8e12d9c3441c5c71adeb4e..3ae9e5cb09f69d779835f2f078d0bd7c8c7effe1 100644 --- a/civicrm/Civi/Api4/Navigation.php +++ b/civicrm/Civi/Api4/Navigation.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/Note.php b/civicrm/Civi/Api4/Note.php index 77319f236fcb4f6e6ca0e318b74ae935f745fbe5..575a780a3e7a11b63b425a928dcfbcc4978456ea 100644 --- a/civicrm/Civi/Api4/Note.php +++ b/civicrm/Civi/Api4/Note.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/OpenID.php b/civicrm/Civi/Api4/OpenID.php index 19ad246a534b155aff014218dcee62467238642a..c316e3f9155f92e170e4aed82b0b2c133204248d 100644 --- a/civicrm/Civi/Api4/OpenID.php +++ b/civicrm/Civi/Api4/OpenID.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/OptionGroup.php b/civicrm/Civi/Api4/OptionGroup.php index 22f28d5fcf7f6a9af155d5f0cb6f9040049cdfa3..51a7c60a1deaba865d8af1ed08a501038678552d 100644 --- a/civicrm/Civi/Api4/OptionGroup.php +++ b/civicrm/Civi/Api4/OptionGroup.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/OptionValue.php b/civicrm/Civi/Api4/OptionValue.php index 98e9cae38857b47a0b4f2cd39844d060d62aa6ca..09f741ebb66b9f1a1c4306df676e6bc72235b6ca 100644 --- a/civicrm/Civi/Api4/OptionValue.php +++ b/civicrm/Civi/Api4/OptionValue.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Participant.php b/civicrm/Civi/Api4/Participant.php index 473deace0ccd72c79aa14933ce6bf86bdaf253b6..221ea1f677aca1322d84463226e4ce1849f84fc4 100644 --- a/civicrm/Civi/Api4/Participant.php +++ b/civicrm/Civi/Api4/Participant.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/Phone.php b/civicrm/Civi/Api4/Phone.php index 85789ee363ed7f4224e280079011573217264aba..64760a80854af2603cb7989b5af35ed9dcdd5e0f 100644 --- a/civicrm/Civi/Api4/Phone.php +++ b/civicrm/Civi/Api4/Phone.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php index 9fa607c65e3d3c3ee282f7ddf0985b256e99cc4f..ced568e7b795b5c48957b8829515b247476f6450 100644 --- a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php +++ b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php @@ -116,7 +116,8 @@ class ActionObjectProvider implements EventSubscriberInterface, ProviderInterfac } } elseif (is_string($val) && strlen($val) > 1 && substr($val, 0, 1) === '$') { - $val = \CRM_Utils_Array::pathGet($result, explode('.', substr($val, 1))); + $key = substr($val, 1); + $val = $result[$key] ?? \CRM_Utils_Array::pathGet($result, explode('.', $key)); } } diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php index b9bedfa86bbc7a17d0ae1ebd79d42f08f8e256f4..5721e919688e1207f882aedd1da5ea7469c49a83 100644 --- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php +++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php @@ -187,10 +187,25 @@ class Api4SelectQuery { $select = array_merge(['id'], $select); } + // Expand the superstar 'custom.*' to select all fields in all custom groups + $customStar = array_search('custom.*', array_values($select), TRUE); + if ($customStar !== FALSE) { + $customGroups = civicrm_api4($this->getEntity(), 'getFields', [ + 'checkPermissions' => FALSE, + 'where' => [['custom_group', 'IS NOT NULL']], + ], ['custom_group' => 'custom_group']); + $customSelect = []; + foreach ($customGroups as $groupName) { + $customSelect[] = "$groupName.*"; + } + array_splice($select, $customStar, 1, $customSelect); + } + // Expand wildcards in joins (the api wrapper already expanded non-joined wildcards) $wildFields = array_filter($select, function($item) { return strpos($item, '*') !== FALSE && strpos($item, '.') !== FALSE && strpos($item, '(') === FALSE && strpos($item, ' ') === FALSE; }); + foreach ($wildFields as $item) { $pos = array_search($item, array_values($select)); $this->autoJoinFK($item); @@ -439,7 +454,7 @@ class Api4SelectQuery { // Prevent (most) redundant acl sub clauses if they have already been applied to the main entity. // FIXME: Currently this only works 1 level deep, but tracking through multiple joins would increase complexity // and just doing it for the first join takes care of most acl clause deduping. - if (count($stack) === 1 && in_array($stack[0], $this->aclFields)) { + if (count($stack) === 1 && in_array($stack[0], $this->aclFields, TRUE)) { return []; } $clauses = $baoName::getSelectWhereClause($tableAlias); @@ -494,12 +509,18 @@ class Api4SelectQuery { // First item in the array is a boolean indicating if the join is required (aka INNER or LEFT). // The rest are join conditions. $side = array_shift($join) ? 'INNER' : 'LEFT'; + // Add all fields from joined entity to spec $joinEntityGet = \Civi\API\Request::create($entity, 'get', ['version' => 4, 'checkPermissions' => $this->getCheckPermissions()]); foreach ($joinEntityGet->entityFields() as $field) { $field['sql_name'] = '`' . $alias . '`.`' . $field['column_name'] . '`'; $this->addSpecField($alias . '.' . $field['name'], $field); } - $conditions = $this->getJoinConditions($entity, $alias); + if (!empty($join[0]) && is_string($join[0]) && \CRM_Utils_Rule::alphanumeric($join[0])) { + $conditions = $this->getBridgeJoin($join, $entity, $alias); + } + else { + $conditions = $this->getJoinConditions($join, $entity, $alias); + } foreach (array_filter($join) as $clause) { $conditions[] = $this->treeWalkClauses($clause, 'ON'); } @@ -511,35 +532,133 @@ class Api4SelectQuery { /** * Supply conditions for an explicit join. * - * @param $entity - * @param $alias + * @param array $joinTree + * @param string $joinEntity + * @param string $alias * @return array */ - private function getJoinConditions($entity, $alias) { + private function getJoinConditions($joinTree, $joinEntity, $alias) { $conditions = []; // getAclClause() expects a stack of 1-to-1 join fields to help it dedupe, but this is more flexible, // so unless this is a direct 1-to-1 join with the main entity, we'll just hack it // with a padded empty stack to bypass its deduping. $stack = [NULL, NULL]; - foreach ($this->apiFieldSpec as $name => $field) { - if ($field['entity'] !== $entity && $field['fk_entity'] === $entity) { - $conditions[] = $this->treeWalkClauses([$name, '=', "$alias.id"], 'ON'); + // If we're not explicitly referencing the joinEntity ID in the ON clause, search for a default + $explicitId = array_filter($joinTree, function($clause) use ($alias) { + list($sideA, $op, $sideB) = array_pad((array) $clause, 3, NULL); + return $op === '=' && ($sideA === "$alias.id" || $sideB === "$alias.id"); + }); + if (!$explicitId) { + foreach ($this->apiFieldSpec as $name => $field) { + if ($field['entity'] !== $joinEntity && $field['fk_entity'] === $joinEntity) { + $conditions[] = $this->treeWalkClauses([$name, '=', "$alias.id"], 'ON'); + } + elseif (strpos($name, "$alias.") === 0 && substr_count($name, '.') === 1 && $field['fk_entity'] === $this->getEntity()) { + $conditions[] = $this->treeWalkClauses([$name, '=', 'id'], 'ON'); + $stack = ['id']; + } } - elseif (strpos($name, "$alias.") === 0 && substr_count($name, '.') === 1 && $field['fk_entity'] === $this->getEntity()) { - $conditions[] = $this->treeWalkClauses([$name, '=', 'id'], 'ON'); - $stack = ['id']; + // Hmm, if we came up with > 1 condition, then it's ambiguous how it should be joined so we won't return anything but the generic ACLs + if (count($conditions) > 1) { + $stack = [NULL, NULL]; + $conditions = []; } } - // Hmm, if we came up with > 1 condition, then it's ambiguous how it should be joined so we won't return anything but the generic ACLs - if (count($conditions) > 1) { - $stack = [NULL, NULL]; - $conditions = []; - } - $baoName = CoreUtil::getBAOFromApiName($entity); + $baoName = CoreUtil::getBAOFromApiName($joinEntity); $acls = array_values($this->getAclClause($alias, $baoName, $stack)); return array_merge($acls, $conditions); } + /** + * Join onto a BridgeEntity table + * + * @param array $joinTree + * @param string $joinEntity + * @param string $alias + * @return array + * @throws \API_Exception + */ + protected function getBridgeJoin(&$joinTree, $joinEntity, $alias) { + $bridgeEntity = array_shift($joinTree); + if (!is_a('\Civi\Api4\\' . $bridgeEntity, '\Civi\Api4\Generic\BridgeEntity', TRUE)) { + throw new \API_Exception("Illegal bridge entity specified: " . $bridgeEntity); + } + $bridgeAlias = $alias . '_via_' . strtolower($bridgeEntity); + $bridgeTable = CoreUtil::getTableName($bridgeEntity); + $joinTable = CoreUtil::getTableName($joinEntity); + $bridgeEntityGet = \Civi\API\Request::create($bridgeEntity, 'get', ['version' => 4, 'checkPermissions' => $this->getCheckPermissions()]); + $fkToJoinField = $fkToBaseField = NULL; + // Find the bridge field that links to the joinEntity (either an explicit FK or an entity_id/entity_table combo) + foreach ($bridgeEntityGet->entityFields() as $name => $field) { + if ($field['fk_entity'] === $joinEntity || (!$fkToJoinField && $name === 'entity_id')) { + $fkToJoinField = $name; + } + } + // Get list of entities allowed for entity_table + if (array_key_exists('entity_id', $bridgeEntityGet->entityFields())) { + $entityTables = (array) civicrm_api4($bridgeEntity, 'getFields', [ + 'checkPermissions' => FALSE, + 'where' => [['name', '=', 'entity_table']], + 'loadOptions' => TRUE, + ], ['options'])->first(); + } + // If bridge field to joinEntity is entity_id, validate entity_table is allowed + if (!$fkToJoinField || ($fkToJoinField === 'entity_id' && !array_key_exists($joinTable, $entityTables))) { + throw new \API_Exception("Unable to join $bridgeEntity to $joinEntity"); + } + // Create link between bridge entity and join entity + $joinConditions = [ + "`$bridgeAlias`.`$fkToJoinField` = `$alias`.`id`", + ]; + if ($fkToJoinField === 'entity_id') { + $joinConditions[] = "`$bridgeAlias`.`entity_table` = '$joinTable'"; + } + // Register fields from the bridge entity as if they belong to the join entity + foreach ($bridgeEntityGet->entityFields() as $name => $field) { + if ($name == 'id' || $name == $fkToJoinField || ($name == 'entity_table' && $fkToJoinField == 'entity_id')) { + continue; + } + if ($field['fk_entity'] || (!$fkToBaseField && $name == 'entity_id')) { + $fkToBaseField = $name; + } + // Note these fields get a sql alias pointing to the bridge entity, but an api alias pretending they belong to the join entity + $field['sql_name'] = '`' . $bridgeAlias . '`.`' . $field['column_name'] . '`'; + $this->addSpecField($alias . '.' . $field['name'], $field); + } + // Move conditions for the bridge join out of the joinTree + $bridgeConditions = []; + $joinTree = array_filter($joinTree, function($clause) use ($fkToBaseField, $alias, $bridgeAlias, &$bridgeConditions) { + list($sideA, $op, $sideB) = array_pad((array) $clause, 3, NULL); + if ($op === '=' && $sideB && ($sideA === "$alias.$fkToBaseField" || $sideB === "$alias.$fkToBaseField")) { + $expr = $sideA === "$alias.$fkToBaseField" ? $sideB : $sideA; + $bridgeConditions[] = "`$bridgeAlias`.`$fkToBaseField` = " . $this->getExpression($expr)->render($this->apiFieldSpec); + return FALSE; + } + elseif ($op === '=' && $fkToBaseField == 'entity_id' && ($sideA === "$alias.entity_table" || $sideB === "$alias.entity_table")) { + $expr = $sideA === "$alias.entity_table" ? $sideB : $sideA; + $bridgeConditions[] = "`$bridgeAlias`.`entity_table` = " . $this->getExpression($expr)->render($this->apiFieldSpec); + return FALSE; + } + return TRUE; + }); + // If no bridge conditions were specified, link it to the base entity + if (!$bridgeConditions) { + $bridgeConditions[] = "`$bridgeAlias`.`$fkToBaseField` = a.id"; + if ($fkToBaseField == 'entity_id') { + if (!array_key_exists($this->getFrom(), $entityTables)) { + throw new \API_Exception("Unable to join $bridgeEntity to " . $this->getEntity()); + } + $bridgeConditions[] = "`$bridgeAlias`.`entity_table` = '" . $this->getFrom() . "'"; + } + } + + $this->join('LEFT', $bridgeTable, $bridgeAlias, $bridgeConditions); + + $baoName = CoreUtil::getBAOFromApiName($joinEntity); + $acls = array_values($this->getAclClause($alias, $baoName, [NULL, NULL])); + return array_merge($acls, $joinConditions); + } + /** * Joins a path and adds all fields in the joined entity to apiFieldSpec * diff --git a/civicrm/Civi/Api4/Relationship.php b/civicrm/Civi/Api4/Relationship.php index d1a76fede90274d6200b8a4e18c3481d5aea3801..dd76ecc23e211f0593c3db5f7b74f14c661b19a1 100644 --- a/civicrm/Civi/Api4/Relationship.php +++ b/civicrm/Civi/Api4/Relationship.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,10 +29,12 @@ namespace Civi\Api4; class Relationship extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Relationship\Get + * @param bool $checkPermissions + * @return Action\Relationship\Get */ - public static function get() { - return new \Civi\Api4\Action\Relationship\Get(static::class, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Relationship\Get(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/RelationshipCache.php b/civicrm/Civi/Api4/RelationshipCache.php new file mode 100644 index 0000000000000000000000000000000000000000..4030d331807b14538756949475fe3ce8695e6683 --- /dev/null +++ b/civicrm/Civi/Api4/RelationshipCache.php @@ -0,0 +1,49 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + + +namespace Civi\Api4; + +/** + * RelationshipCache - readonly table to facilitate joining and finding contacts by relationship. + * + * @see \Civi\Api4\Relationship + * + * @package Civi\Api4 + */ +class RelationshipCache extends Generic\AbstractEntity { + + /** + * @param bool $checkPermissions + * @return Generic\DAOGetAction + */ + public static function get($checkPermissions = TRUE) { + return (new Generic\DAOGetAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return Generic\DAOGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new Generic\DAOGetFieldsAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + +} diff --git a/civicrm/Civi/Api4/Route.php b/civicrm/Civi/Api4/Route.php index f3d36bc61cbce6315a0bd6ee53861a09a9f14538..a407a5093e4f4fee61d1ce0890ae83890a659ce7 100644 --- a/civicrm/Civi/Api4/Route.php +++ b/civicrm/Civi/Api4/Route.php @@ -14,14 +14,10 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; -use Civi\Api4\Generic\BasicGetFieldsAction; - /** * CiviCRM menu route. * @@ -36,10 +32,11 @@ use Civi\Api4\Generic\BasicGetFieldsAction; class Route extends \Civi\Api4\Generic\AbstractEntity { /** + * @param bool $checkPermissions * @return \Civi\Api4\Generic\BasicGetAction */ - public static function get() { - return new \Civi\Api4\Generic\BasicGetAction(__CLASS__, __FUNCTION__, function ($get) { + public static function get($checkPermissions = TRUE) { + return (new \Civi\Api4\Generic\BasicGetAction(__CLASS__, __FUNCTION__, function ($get) { // Pulling from ::items() rather than DB -- because it provides the final/live/altered data. $items = \CRM_Core_Menu::items(); $result = []; @@ -47,11 +44,15 @@ class Route extends \Civi\Api4\Generic\AbstractEntity { $result[] = ['path' => $path] + $item; } return $result; - }); + }))->setCheckPermissions($checkPermissions); } - public static function getFields() { - return new BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { + /** + * @param bool $checkPermissions + * @return Generic\BasicGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new Generic\BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { return [ [ 'name' => 'path', @@ -90,7 +91,7 @@ class Route extends \Civi\Api4\Generic\AbstractEntity { 'data_type' => 'Array', ], ]; - }); + }))->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/SavedSearch.php b/civicrm/Civi/Api4/SavedSearch.php index dd5e9006679c833825765836df696e282bc996d7..1262b6747ed00fd49ffc0c7c6baff5bba00abc04 100644 --- a/civicrm/Civi/Api4/SavedSearch.php +++ b/civicrm/Civi/Api4/SavedSearch.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php index aefa117db481ed66f1e535245c0b3eb4fd32ac1e..b7da530eac9759d3f5c7bef5793d4a95b78d6750 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php index 43540ddec3f82bd2d991c701dee4e11d4aedf810..d3849abbefe10bfe13fa9785dde2b9778182d269 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php index 61b38dccd14471c5f721d7cf1b043b314a7b7aa2..a8ed4042b0622fc35bde551b6e19167f65534476 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -59,8 +57,7 @@ class CustomGroupJoinable extends Joinable { */ public function getEntityFields() { if (!$this->entityFields) { - $fields = CustomField::get() - ->setCheckPermissions(FALSE) + $fields = CustomField::get(FALSE) ->setSelect(['custom_group.name', 'custom_group.extends', 'custom_group.table_name', '*']) ->addWhere('custom_group.table_name', '=', $this->getTargetTable()) ->execute(); diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php index 3cd51f970dab54c3f845c63bdce5c00feddc519c..0375fa0c2a05e1438ee42a0df73278e52061d83b 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joiner.php b/civicrm/Civi/Api4/Service/Schema/Joiner.php index 4bd59de1715015b4a1749ca52e1658f066f7f449..8786ec72bbfa444d387608a0c70af7220d3d7bd8 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joiner.php +++ b/civicrm/Civi/Api4/Service/Schema/Joiner.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMap.php b/civicrm/Civi/Api4/Service/Schema/SchemaMap.php index 9c186833a56cdc1c82ca824579d191a59fa60fbd..951d8242117e0b0df868c94f7a46bf425d6dd17b 100644 --- a/civicrm/Civi/Api4/Service/Schema/SchemaMap.php +++ b/civicrm/Civi/Api4/Service/Schema/SchemaMap.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php index afecc01056ade66658293062293a826477856fba..e6f82e5ce27c34625ca60100b061f3e9ada83a04 100644 --- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php +++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -44,7 +42,7 @@ class SchemaMapBuilder { */ public function __construct(EventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; - $this->apiEntities = array_keys((array) Entity::get()->setCheckPermissions(FALSE)->addSelect('name')->execute()->indexBy('name')); + $this->apiEntities = array_keys((array) Entity::get(FALSE)->addSelect('name')->execute()->indexBy('name')); } /** diff --git a/civicrm/Civi/Api4/Service/Schema/Table.php b/civicrm/Civi/Api4/Service/Schema/Table.php index 72e88656aa4d124ce769af5331d2638308e5045a..57fd4a256d4a4adf877e01cf42fefe43443380ef 100644 --- a/civicrm/Civi/Api4/Service/Schema/Table.php +++ b/civicrm/Civi/Api4/Service/Schema/Table.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php b/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php index 54ff20ee11decd2234f576298d8dfd41d95bab32..0222473ae51d50641b3549226e3398e7ee17f927 100644 --- a/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php +++ b/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/FieldSpec.php b/civicrm/Civi/Api4/Service/Spec/FieldSpec.php index fc8852dd101ff36762d4bcc90fe937680a337cc9..8b9ba5ca2405e0924c6ae085e7c1c72ee6cb372e 100644 --- a/civicrm/Civi/Api4/Service/Spec/FieldSpec.php +++ b/civicrm/Civi/Api4/Service/Spec/FieldSpec.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php index e1a2537d3186ebd115b17af4be5578c6a0f78d74..d1c00975939311bdaf1c1e41379f879a07e3b823 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php deleted file mode 100644 index 028dbcfb0be618b8d48de728c13499de18136f1a..0000000000000000000000000000000000000000 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -/* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - -/** - * - * @package CRM - * @copyright CiviCRM LLC https://civicrm.org/licensing - */ - - -namespace Civi\Api4\Service\Spec\Provider; - -use Civi\Api4\Service\Spec\FieldSpec; -use Civi\Api4\Service\Spec\RequestSpec; - -class ActivityCreationSpecProvider implements Generic\SpecProviderInterface { - - /** - * @inheritDoc - */ - public function modifySpec(RequestSpec $spec) { - $sourceContactField = new FieldSpec('source_contact_id', 'Activity', 'Integer'); - $sourceContactField->setRequired(TRUE); - $sourceContactField->setFkEntity('Contact'); - - $spec->addFieldSpec($sourceContactField); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action) { - return $entity === 'Activity' && $action === 'create'; - } - -} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..95504953b135ccfe9834e93e4844c1fd236e4dcf --- /dev/null +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php @@ -0,0 +1,60 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +class ActivitySpecProvider implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $action = $spec->getAction(); + + $field = new FieldSpec('source_contact_id', 'Activity', 'Integer'); + $field->setTitle(ts('Source Contact')); + $field->setDescription(ts('Contact who created this activity.')); + $field->setRequired($action === 'create'); + $field->setFkEntity('Contact'); + $spec->addFieldSpec($field); + + $field = new FieldSpec('target_contact_id', 'Activity', 'Array'); + $field->setTitle(ts('Target Contacts')); + $field->setDescription(ts('Contact(s) involved in this activity.')); + $field->setFkEntity('Contact'); + $spec->addFieldSpec($field); + + $field = new FieldSpec('assignee_contact_id', 'Activity', 'Array'); + $field->setTitle(ts('Assignee Contacts')); + $field->setDescription(ts('Contact(s) assigned to this activity.')); + $field->setFkEntity('Contact'); + $spec->addFieldSpec($field); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Activity' && in_array($action, ['create', 'update'], TRUE); + } + +} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php index 26b611d7dbfbba5d6f07eb02134d0c8b47fe7775..1b29d79350bca3a78589099c8727d16cda200b4c 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php index 1f77f16d2dc0a1202954a943455ad9c096842ab3..8bbd33354268234422392392877accd0cef63b43 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php index 08210eb86d743ba0822776f480236f2456d69683..2461c9345181fb8dbc65fe183ea9984d8c8eabac 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php index c3f422cd1734dcf60b909f755d4c2bf2aa2c3786..925f415681ef4b3e63f658156e1eb00385354ee8 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php index edcfd3916de803e04ec94400b6cdc565694d37c4..19c4cdbb6c9a091a41c97aaa3ef7208cb2ba6436 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php index 4a3f1b7449f996b538d8f577474527d830c5c189..7c321631617426311581b8b8ed493d57f274ba38 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php index ffad166d58647dba713e7f0e9bac6a1f6217a282..a7b0dd8a7ef80af502f0f2c7888f68c354ec2012 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php index e994466e5d4ecbc14aa1f21e0ce6c00e0d39654a..87f94da38da9a5ce55f2b1818c0e4708ad826385 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php index b8d8e04cf738b542625b1e271fcde59f6635b974..7e63ff5437aa6fac5a3d6c1c448f885fc51cad06 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php index 7b6bbb45ba85af16199996ce23debb94a06cded2..2e6b2443d7375cd15fc40f4de4422c4414a7d1b4 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php b/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php index 5d42a723667f06edf0da3146aeb6ae416a80b03e..a9768949a04351707e12929d503ef8ac0cb885d4 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php index 629cff435d3c242cfc226f540cebd2e693b9b278..fd8698d74d5e9e6ee95d6d30a153acab16b37df5 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php index 8027ee4eb2ca85921b98fc03845dbfa10d9c6da6..08cea9d596e9a2b132ccd034fd954f9e629e4f4d 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php @@ -1,33 +1,17 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2020 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ namespace Civi\Api4\Service\Spec\Provider; diff --git a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php index 6116c4c69d0594dcc5244228273223a1883a3cb7..37c74acee672f2dbdb063b7c4355dfe588a846ae 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ @@ -128,8 +127,7 @@ class SpecGatherer { if ($entity === 'Participant') { $extends = ['Participant', 'ParticipantRole', 'ParticipantEventName', 'ParticipantEventType']; } - $customFields = CustomField::get() - ->setCheckPermissions(FALSE) + $customFields = CustomField::get(FALSE) ->addWhere('custom_group.extends', 'IN', $extends) ->addWhere('custom_group.is_multiple', '=', '0') ->setSelect(['custom_group.name', '*']) @@ -146,8 +144,7 @@ class SpecGatherer { * @param \Civi\Api4\Service\Spec\RequestSpec $specification */ private function getCustomGroupFields($customGroup, RequestSpec $specification) { - $customFields = CustomField::get() - ->setCheckPermissions(FALSE) + $customFields = CustomField::get(FALSE) ->addWhere('custom_group.name', '=', $customGroup) ->setSelect(['custom_group.name', 'custom_group.table_name', '*']) ->execute(); diff --git a/civicrm/Civi/Api4/Setting.php b/civicrm/Civi/Api4/Setting.php index 8b269fe214c25bf0cffa176c3154044f24dc4585..a5d3654c98f7e1ad1ee8592eb480edfeee1f5e20 100644 --- a/civicrm/Civi/Api4/Setting.php +++ b/civicrm/Civi/Api4/Setting.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,20 +29,40 @@ namespace Civi\Api4; */ class Setting extends Generic\AbstractEntity { - public static function get() { - return new Action\Setting\Get(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\Get + */ + public static function get($checkPermissions = TRUE) { + return (new Action\Setting\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function set() { - return new Action\Setting\Set(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\Set + */ + public static function set($checkPermissions = TRUE) { + return (new Action\Setting\Set(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function revert() { - return new Action\Setting\Revert(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\Revert + */ + public static function revert($checkPermissions = TRUE) { + return (new Action\Setting\Revert(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function getFields() { - return new Action\Setting\GetFields(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\GetFields + */ + public static function getFields($checkPermissions = TRUE) { + return (new Action\Setting\GetFields(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/System.php b/civicrm/Civi/Api4/System.php index 5dbe24c510f66bfd64696075743e87e43c4c3578..da4ea2bb75549fbc7ea8be522abed96faf89935f 100644 --- a/civicrm/Civi/Api4/System.php +++ b/civicrm/Civi/Api4/System.php @@ -16,11 +16,8 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ - namespace Civi\Api4; -use Civi\Api4\Generic\BasicGetFieldsAction; - /** * A collection of system maintenance/diagnostic utilities. * @@ -28,18 +25,32 @@ use Civi\Api4\Generic\BasicGetFieldsAction; */ class System extends Generic\AbstractEntity { - public static function flush() { - return new Action\System\Flush(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\System\Flush + */ + public static function flush($checkPermissions = TRUE) { + return (new Action\System\Flush(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function check() { - return new Action\System\Check(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\System\Check + */ + public static function check($checkPermissions = TRUE) { + return (new Action\System\Check(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function getFields() { - return new BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { + /** + * @param bool $checkPermissions + * @return Generic\BasicGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new Generic\BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { return []; - }); + }))->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/UFMatch.php b/civicrm/Civi/Api4/UFMatch.php index d056ebb6f557f509aa8b493bf97430af865a2309..6cc1c4ee5907e5d65b5abe181442e56eabe185dd 100644 --- a/civicrm/Civi/Api4/UFMatch.php +++ b/civicrm/Civi/Api4/UFMatch.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -26,6 +24,6 @@ namespace Civi\Api4; * * @package Civi\Api4 */ -class UFMatch extends Generic\DAOEntity { +class UFMatch extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php index 1f4c7766a4b44f9a925d79e81b5a55082785c544..8d06ce96789b9ec4d4d31286eb7c47a21144ead1 100644 --- a/civicrm/Civi/Api4/Utils/CoreUtil.php +++ b/civicrm/Civi/Api4/Utils/CoreUtil.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php index 77e50db8f5370820fbe158cdf242eb29f9c42ad3..900df21ccfe8f30a2f649c98f34f578380aa2c22 100644 --- a/civicrm/Civi/Api4/Utils/FormattingUtil.php +++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Core/CiviEventDispatcher.php b/civicrm/Civi/Core/CiviEventDispatcher.php index 9f3da3215e4fcacc0659bf4836632f05e5313e05..ac104537d81bfe8968015ea37004a6447634aeb1 100644 --- a/civicrm/Civi/Core/CiviEventDispatcher.php +++ b/civicrm/Civi/Core/CiviEventDispatcher.php @@ -117,6 +117,9 @@ class CiviEventDispatcher extends EventDispatcher { case 'fail': throw new \RuntimeException("The dispatch policy prohibits event \"$eventName\"."); + case 'not-ready': + throw new \RuntimeException("CiviCRM has not bootstrapped sufficiently to fire event \"$eventName\"."); + default: throw new \RuntimeException("The dispatch policy for \"$eventName\" is unrecognized ($mode)."); diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php index 15c7860a9d64ce522f1b46b2bc029d2f5cfad5f3..5b96e40ef08e2588e0f1c3a641f0e1bc3bd002ad 100644 --- a/civicrm/Civi/Core/Container.php +++ b/civicrm/Civi/Core/Container.php @@ -125,7 +125,7 @@ class Container { $container->setDefinition('dispatcher', new Definition( 'Civi\Core\CiviEventDispatcher', - [new Reference('service_container')] + [] )) ->setFactory([new Reference(self::SELF), 'createEventDispatcher'])->setPublic(TRUE); @@ -210,7 +210,7 @@ class Container { ->setFactory('CRM_Utils_Mail::createMailer'); if (empty(\Civi::$statics[__CLASS__]['boot'])) { - throw new \RuntimeException("Cannot initialize container. Boot services are undefined."); + throw new \RuntimeException('Cannot initialize container. Boot services are undefined.'); } foreach (\Civi::$statics[__CLASS__]['boot'] as $bootService => $def) { $container->setDefinition($bootService, new Definition())->setSynthetic(TRUE)->setPublic(TRUE); @@ -324,14 +324,11 @@ class Container { } /** - * @param \Symfony\Component\DependencyInjection\ContainerInterface $container * @return \Symfony\Component\EventDispatcher\EventDispatcher */ - public function createEventDispatcher($container) { - $dispatcher = new CiviEventDispatcher(); - if (\CRM_Core_Config::isUpgradeMode()) { - $dispatcher->setDispatchPolicy(\CRM_Upgrade_DispatchPolicy::get('upgrade.main')); - } + public function createEventDispatcher() { + // Continue building on the original dispatcher created during bootstrap. + $dispatcher = static::getBootService('dispatcher.boot'); $dispatcher->addListener('civi.core.install', ['\Civi\Core\InstallationCanary', 'check']); $dispatcher->addListener('civi.core.install', ['\Civi\Core\DatabaseInitializer', 'initialize']); @@ -355,9 +352,11 @@ class Container { $dispatcher->addListener('hook_civicrm_coreResourceList', ['\CRM_Utils_System', 'appendCoreResources']); $dispatcher->addListener('hook_civicrm_getAssetUrl', ['\CRM_Utils_System', 'alterAssetUrl']); $dispatcher->addListener('hook_civicrm_alterExternUrl', ['\CRM_Utils_System', 'migrateExternUrl'], 1000); + $dispatcher->addListener('hook_civicrm_triggerInfo', ['\CRM_Contact_BAO_RelationshipCache', 'onHookTriggerInfo']); $dispatcher->addListener('civi.dao.postInsert', ['\CRM_Core_BAO_RecurringEntity', 'triggerInsert']); $dispatcher->addListener('civi.dao.postUpdate', ['\CRM_Core_BAO_RecurringEntity', 'triggerUpdate']); $dispatcher->addListener('civi.dao.postDelete', ['\CRM_Core_BAO_RecurringEntity', 'triggerDelete']); + $dispatcher->addListener('hook_civicrm_postSave_civicrm_domain', ['\CRM_Core_BAO_Domain', 'onPostSave']); $dispatcher->addListener('hook_civicrm_unhandled_exception', [ 'CRM_Core_LegacyErrorHandler', 'handleException', @@ -462,20 +461,19 @@ class Container { */ public static function createPrevNextCache($container) { $setting = \Civi::settings()->get('prevNextBackend'); - if ($setting === 'default') { - // For initial release (5.8.x), continue defaulting to SQL. - $isTransitional = version_compare(\CRM_Utils_System::version(), '5.9.alpha1', '<'); + if (!$setting || $setting === 'default') { $cacheDriver = \CRM_Utils_Cache::getCacheDriver(); $service = 'prevnext.driver.' . strtolower($cacheDriver); - return $container->has($service) && !$isTransitional + return $container->has($service) ? $container->get($service) : $container->get('prevnext.driver.sql'); } - else { - return $container->get('prevnext.driver.' . $setting); - } + return $container->get('prevnext.driver.' . $setting); } + /** + * @return \ArrayObject + */ public static function createCacheConfig() { $driver = \CRM_Utils_Cache::getCacheDriver(); $settings = \CRM_Utils_Cache::getCacheSettings($driver); @@ -501,6 +499,17 @@ class Container { $bootServices['paths'] = new \Civi\Core\Paths(); + $bootServices['dispatcher.boot'] = new CiviEventDispatcher(); + + // Quality control: There should be no pre-boot hooks because they make it harder to understand/support/refactor. + // If a pre-boot hook sneaks in, we'll raise an error. + $bootDispatchPolicy = [ + '/^hook_/' => 'not-ready', + '/^civi\./' => 'run', + ]; + $mainDispatchPolicy = \CRM_Core_Config::isUpgradeMode() ? \CRM_Upgrade_DispatchPolicy::get('upgrade.main') : NULL; + $bootServices['dispatcher.boot']->setDispatchPolicy($bootDispatchPolicy); + $class = $runtime->userFrameworkClass; $bootServices['userSystem'] = $userSystem = new $class(); $userSystem->initialize(); @@ -522,6 +531,7 @@ class Container { \CRM_Utils_Hook::singleton(TRUE); \CRM_Extension_System::singleton(TRUE); \CRM_Extension_System::singleton(TRUE)->getClassLoader()->register(); + $bootServices['dispatcher.boot']->setDispatchPolicy($mainDispatchPolicy); $runtime->includeCustomPath(); @@ -532,8 +542,16 @@ class Container { } \Civi::$statics[__CLASS__]['container'] = $container; } + else { + $bootServices['dispatcher.boot']->setDispatchPolicy($mainDispatchPolicy); + } } + /** + * @param string $name + * + * @return mixed + */ public static function getBootService($name) { return \Civi::$statics[__CLASS__]['boot'][$name]; } diff --git a/civicrm/Civi/Install/Requirements.php b/civicrm/Civi/Install/Requirements.php index 87012fa9c02961946db0fb2a814e1da7a643b52b..da7b2cc76597194238bff22058288b01ed11c268 100644 --- a/civicrm/Civi/Install/Requirements.php +++ b/civicrm/Civi/Install/Requirements.php @@ -28,12 +28,15 @@ class Requirements { */ protected $system_checks = [ 'checkMemory', - 'checkServerVariables', 'checkMysqlConnectExists', 'checkJsonEncodeExists', 'checkMultibyteExists', ]; + protected $system_checks_web = [ + 'checkServerVariables', + ]; + protected $database_checks = [ 'checkMysqlConnection', 'checkMysqlVersion', @@ -83,6 +86,12 @@ class Requirements { $errors[] = $this->$check(); } + if (PHP_SAPI !== 'cli') { + foreach ($this->system_checks_web as $check) { + $errors[] = $this->$check(); + } + } + return $errors; } diff --git a/civicrm/Civi/Report/OutputHandlerBase.php b/civicrm/Civi/Report/OutputHandlerBase.php new file mode 100644 index 0000000000000000000000000000000000000000..247bc45f6dff9fd089c457e3287bc4778a303c8d --- /dev/null +++ b/civicrm/Civi/Report/OutputHandlerBase.php @@ -0,0 +1,146 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Report; + +/** + * Base Report Output Handler + */ +class OutputHandlerBase implements OutputHandlerInterface { + + /** + * This is for convenience since otherwise several functions + * would take it as a parameter. + * + * @var \CRM_Report_Form + */ + protected $form; + + /** + * Getter for $form + * + * @return \CRM_Report_Form + */ + public function getForm():\CRM_Report_Form { + return $this->form; + } + + /** + * Setter for $form + * + * @param \CRM_Report_Form $form + */ + public function setForm(\CRM_Report_Form $form) { + $this->form = $form; + } + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param \CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(\CRM_Report_Form $form):bool { + return FALSE; + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string { + return ''; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + return ''; + } + + /** + * Return the report contents as a string. + * + * @return string + */ + public function getOutputString():string { + return ''; + } + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download() { + } + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string { + return 'text/html'; + } + + /** + * Charset of the attachment. + * + * The default of '' means charset is not specified in the mimepart, + * which is normal for binary attachments, but for text attachments you + * should specify something like 'utf-8'. + * + * @return string + */ + public function getCharset():string { + return ''; + } + + /** + * Hide/show various elements in the output, but generally for a handler + * this is always set to TRUE. + * + * @return bool + */ + public function isPrintOnly():bool { + return TRUE; + } + + /** + * Use a pager, but for a handler this would be FALSE since paging + * is a UI element. + * + * @return bool + */ + public function isAddPaging():bool { + return FALSE; + } + + /** + * Create absolute urls for links. Generally for a handler + * this is always set to TRUE, but for example for 'print' it's displayed + * on the site so it can be relative. + * @todo Couldn't it just always be absolute? + * + * @return bool + */ + public function isAbsoluteUrl():bool { + return TRUE; + } + +} diff --git a/civicrm/Civi/Report/OutputHandlerFactory.php b/civicrm/Civi/Report/OutputHandlerFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..a2f975410f4dac9acb735e131fd14bdafc724f8e --- /dev/null +++ b/civicrm/Civi/Report/OutputHandlerFactory.php @@ -0,0 +1,101 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Report; + +/** + * OutputHandlers can either be the standard core ones: print/pdf/csv, or + * extensions can add their own. + * + * @package Civi\Report + */ +class OutputHandlerFactory { + + protected static $singleton; + + /** + * @var array + * Array of registered possible OutputHandlers. + */ + protected static $registered = []; + + /** + * Singleton function. + * + * @return OutputHandlerFactory + */ + public static function singleton() { + if (self::$singleton === NULL) { + self::$singleton = new OutputHandlerFactory(); + self::registerBuiltins(); + } + return self::$singleton; + } + + /** + * Return an OutputHandler based on the parameters. + * + * @param \CRM_Report_Form $form + * A CiviReport that extends CRM_Report_Form. + * + * @return \Civi\Report\OutputHandlerInterface|NULL + * An object that implements the OutputHandlerInterface, or NULL if + * nothing suitable for the given parameters. + */ + public function create(\CRM_Report_Form $form) { + /** + * The first draft of this had extensions register their classes, + * but it needed to be early on because there's also the dropdown on the + * report form that lists the output formats available which happens + * earlier than the output run and that worked better as a simple hook. + * So it just felt out of place then to have two different types of things, + * and people are used to hooks, and there's already alterReportVar which + * seemed a natural place. + */ + \CRM_Utils_Hook::alterReportVar('outputhandlers', self::$registered, $form); + foreach (self::$registered as $candidate) { + try { + $outputHandler = new $candidate(); + if ($outputHandler->isOutputHandlerFor($form)) { + $outputHandler->setForm($form); + return $outputHandler; + } + } + catch (\Exception $e) { + // no ts() since this is a sysadmin-y message + \Civi::log()->warn("Unable to use $candidate as an output handler. " . $e->getMessage()); + } + } + return NULL; + } + + /** + * Register an outputHandler to handle an output format. + * + * @param string $outputHandler + * The classname of a class that implements OutputHandlerInterface. + */ + public function register(string $outputHandler) { + // Use classname as index to (a) avoid duplicates and (b) make it easier + // to unset/overwrite one via hook. + self::$registered[$outputHandler] = $outputHandler; + } + + /** + * There are some handlers that were hard-coded in to the form before which + * have now been moved to outputhandlers. + */ + private static function registerBuiltins() { + self::$singleton->register('\CRM_Report_OutputHandler_Print'); + self::$singleton->register('\CRM_Report_OutputHandler_Csv'); + self::$singleton->register('\CRM_Report_OutputHandler_Pdf'); + } + +} diff --git a/civicrm/Civi/Report/OutputHandlerInterface.php b/civicrm/Civi/Report/OutputHandlerInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..bae1097782c7da52961300138535d8d1b4b4ae26 --- /dev/null +++ b/civicrm/Civi/Report/OutputHandlerInterface.php @@ -0,0 +1,121 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Report; + +/** + * @package Civi\Report + */ +interface OutputHandlerInterface { + + /** + * Getter for $form. + * + * It's suggested to extend \Civi\Report\OutputHandlerBase and then this will + * be handled for you. + * + * @return \CRM_Report_Form + */ + public function getForm():\CRM_Report_Form; + + /** + * Setter for $form. + * + * It's suggested to extend \Civi\Report\OutputHandlerBase and then this will + * be handled for you. + * + * @param \CRM_Report_Form $form + */ + public function setForm(\CRM_Report_Form $form); + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param \CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(\CRM_Report_Form $form):bool; + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string; + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string; + + /** + * Return the report contents as a string. + * + * @return string + */ + public function getOutputString():string; + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download(); + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string; + + /** + * Charset of the attachment. + * + * The default of '' means charset is not specified in the mimepart, + * which is normal for binary attachments, but for text attachments you + * should specify something like 'utf-8'. + * + * @return string + */ + public function getCharset():string; + + /** + * Hide/show various elements in the output, but generally for a handler + * this is always set to TRUE. + * + * @return bool + */ + public function isPrintOnly():bool; + + /** + * Use a pager, but for a handler this would be FALSE since paging + * is a UI element. + * + * @return bool + */ + public function isAddPaging():bool; + + /** + * Create absolute urls for links. Generally for a handler + * this is always set to TRUE, but for example for 'print' it's displayed + * on the site so it can be relative. + * @todo Couldn't it just always be absolute? + * + * @return bool + */ + public function isAbsoluteUrl():bool; + +} diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php index fbe73cd0fe909038df590eceae14fdc313bdae40..ed3557babe9622f3f507d4d54f38c29cd6f20531 100644 --- a/civicrm/Civi/Test/Api3TestTrait.php +++ b/civicrm/Civi/Test/Api3TestTrait.php @@ -23,7 +23,10 @@ trait Api3TestTrait { * @return array */ public function versionThreeAndFour() { - return [[3], [4]]; + return [ + 'APIv3' => [3], + 'APIv4' => [4], + ]; } /** diff --git a/civicrm/Civi/Test/ContactTestTrait.php b/civicrm/Civi/Test/ContactTestTrait.php index efb0b146e27bd93f33f2a705d6b478271d65f985..26991ea8cfdf44cf4135a97122fea5785e9fc8f0 100644 --- a/civicrm/Civi/Test/ContactTestTrait.php +++ b/civicrm/Civi/Test/ContactTestTrait.php @@ -18,7 +18,7 @@ trait ContactTestTrait { /** * Emulate a logged in user since certain functions use that. * value to store a record in the DB (like activity) - * CRM-8180 + * @see https://issues.civicrm.org/jira/browse/CRM-8180 * * @return int * Contact ID of the created user. diff --git a/civicrm/Civi/Test/Data.php b/civicrm/Civi/Test/Data.php index 9360484f29b427f2373170cbe067dd079f52a975..d2007f9e82a4065a597961de4e16dea3facd7037 100644 --- a/civicrm/Civi/Test/Data.php +++ b/civicrm/Civi/Test/Data.php @@ -44,6 +44,8 @@ class Data { \Civi\Test::schema()->setStrict(TRUE); }); + civicrm_api('setting', 'create', ['installed' => 1, 'domain_id' => 'all', 'version' => 3]); + // Rebuild triggers civicrm_api('system', 'flush', ['version' => 3, 'triggers' => 1]); diff --git a/civicrm/Civi/Test/DbTestTrait.php b/civicrm/Civi/Test/DbTestTrait.php index b664edd84add4a354d0857509c4a8b8b4c7c3aad..079bb8df6b6f567c94f8e380c58ef32f3bf6f520 100644 --- a/civicrm/Civi/Test/DbTestTrait.php +++ b/civicrm/Civi/Test/DbTestTrait.php @@ -184,7 +184,7 @@ trait DbTestTrait { $actual = \CRM_Core_DAO::singleValueQuery($query, $params); $this->assertEquals($expected, $actual, sprintf('%sexpected=[%s] actual=[%s] query=[%s]', - $message, $expected, $actual, \CRM_Core_DAO::composeQuery($query, $params, FALSE) + $message, $expected, $actual, \CRM_Core_DAO::composeQuery($query, $params) ) ); } diff --git a/civicrm/Civi/Test/TAP.php b/civicrm/Civi/Test/TAP.php index dd1df865e2e51c8e54953e3ab6121cd182b6543e..e7bcd88555fa345c7709f72dd3f5f24e6f734e03 100644 --- a/civicrm/Civi/Test/TAP.php +++ b/civicrm/Civi/Test/TAP.php @@ -2,25 +2,11 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ diff --git a/civicrm/Civi/Test/TAPLegacy.php b/civicrm/Civi/Test/TAPLegacy.php index 41c7da08b4b5b3d0014a6c01aa7cb96544ce33b7..7da5659f54f7113349aa5f1149ca2b24b05febf5 100644 --- a/civicrm/Civi/Test/TAPLegacy.php +++ b/civicrm/Civi/Test/TAPLegacy.php @@ -2,25 +2,11 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | CiviCRM is distributed in the hope that it will be useful, but | - | WITHOUT ANY WARRANTY; without even the implied warranty of | - | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | - | See the GNU Affero General Public License for more details. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ */ diff --git a/civicrm/ang/api4Explorer/Explorer.html b/civicrm/ang/api4Explorer/Explorer.html index 5b479786836048345bc1f9c79ca4312b978979a2..b32196dfd55c26e0c72d61ee6e413fadcdfea82b 100644 --- a/civicrm/ang/api4Explorer/Explorer.html +++ b/civicrm/ang/api4Explorer/Explorer.html @@ -70,10 +70,15 @@ <div class="api4-input form-inline"> <i class="crm-i fa-arrows"></i> <input class="form-control twenty" type="text" ng-model="params.join[$index][0]" ng-model-options="{updateOn: 'blur'}" ng-change="$ctrl.buildFieldList()"/> + <label>{{:: ts('Required:') }}</label> <select class="form-control" ng-model="params.join[$index][1]" ng-options="o.k as o.v for o in ::joinTypes" ></select> + <label>{{:: ts('Using:') }}</label> + <select class="form-control" ng-model="params.join[$index][2]" ng-options="e.name as e.name for e in ::bridgeEntities" ng-change="$ctrl.buildFieldList()"> + <option value="">{{:: ts('- none -') }}</option> + </select> <a href class="crm-hover-button" title="Clear" ng-click="clearParam('join', $index)"><i class="crm-i fa-times"></i></a> </div> - <fieldset class="api4-clause-fieldset" crm-api4-clause="{skip: 2, clauses: params.join[$index], op: 'AND', label: 'On', fields: fieldsAndJoins, format: 'plain'}"> + <fieldset class="api4-clause-fieldset" crm-api4-clause="{skip: 3, clauses: params.join[$index], op: 'AND', label: 'On', fields: fieldsAndJoins, format: 'plain'}"> </fieldset> </fieldset> </div> diff --git a/civicrm/ang/api4Explorer/Explorer.js b/civicrm/ang/api4Explorer/Explorer.js index 9e6b9644a8262a5b0fe8da60d3ed1096d0c80507..0dca04e3bc463cacd76b7bbb8280a0dd5ddb7a74 100644 --- a/civicrm/ang/api4Explorer/Explorer.js +++ b/civicrm/ang/api4Explorer/Explorer.js @@ -56,7 +56,8 @@ $scope.loading = false; $scope.controls = {}; $scope.langs = ['php', 'js', 'ang', 'cli']; - $scope.joinTypes = [{k: false, v: ts('Optional')}, {k: true, v: ts('Required')}]; + $scope.joinTypes = [{k: false, v: 'FALSE (LEFT JOIN)'}, {k: true, v: 'TRUE (INNER JOIN)'}]; + $scope.bridgeEntities = _.filter(schema, {type: 'BridgeEntity'}); $scope.code = { php: [ {name: 'oop', label: ts('OOP Style'), code: ''}, @@ -96,7 +97,7 @@ function pluralize(str) { var lastLetter = str[str.length - 1], lastTwo = str[str.length - 2] + lastLetter; - if (lastLetter === 's' || lastTwo === 'ch') { + if (lastLetter === 's' || lastLetter === 'x' || lastTwo === 'ch') { return str + 'es'; } if (lastLetter === 'y' && lastTwo !== 'ey') { @@ -312,6 +313,22 @@ return _.findWhere(schema, {name: entityName || $scope.entity}); } + // Get name of entity given join alias + function entityNameFromAlias(alias) { + var joins = getExplicitJoins(), + entity = $scope.entity, + path = alias.split('.'); + // First check explicit joins + if (joins[alias]) { + return joins[alias]; + } + // Then lookup implicit links + _.each(path, function(node) { + entity = _.find(links[entity], {alias: node}).entity; + }); + return entity; + } + // Get all params that have been set function getParams() { var params = {}; @@ -399,6 +416,10 @@ addJoins($scope.fieldsAndJoinsAndFunctionsWithSuffixes, false, ['name', 'label']); addJoins($scope.fieldsAndJoinsAndFunctionsAndWildcards, true, ['name', 'label']); } + // Custom fields are supported if HAVING is + if (actionInfo.params.having) { + $scope.fieldsAndJoinsAndFunctionsAndWildcards.unshift({id: 'custom.*', text: 'custom.*', 'description': 'All custom fields'}); + } $scope.fieldsAndJoinsAndFunctionsAndWildcards.unshift({id: '*', text: '*', 'description': 'All core ' + $scope.entity + ' fields'}); }; @@ -466,12 +487,29 @@ }, true); } if (name === 'select' && actionInfo.params.having) { - $scope.$watchCollection('params.select', function(values) { + $scope.$watchCollection('params.select', function(newSelect) { + // Ignore row_count, it can't be used in HAVING clause + var select = _.without(newSelect, 'row_count'); $scope.havingOptions.length = 0; - _.each(values, function(item) { - var pieces = item.split(' AS '), + // An empty select is an implicit * + if (!select.length) { + select.push('*'); + } + _.each(select, function(item) { + var joinEntity, + pieces = item.split(' AS '), alias = _.trim(pieces[pieces.length - 1]).replace(':label', ':name'); - $scope.havingOptions.push({id: alias, text: alias}); + // Expand wildcards + if (alias[alias.length - 1] === '*') { + if (alias.length > 1) { + joinEntity = entityNameFromAlias(alias.slice(0, -2)); + } + var fieldList = _.filter(getEntity(joinEntity).fields, {custom_field_id: null}); + formatForSelect2(fieldList, $scope.havingOptions, 'name', ['description', 'required', 'default_value'], alias.slice(0, -1)); + } + else { + $scope.havingOptions.push({id: alias, text: alias}); + } }); }); } @@ -630,11 +668,12 @@ // Format oop params function formatOOP(entity, action, params, indent) { var code = '', - newLine = "\n" + _.repeat(' ', indent); + newLine = "\n" + _.repeat(' ', indent), + perm = params.checkPermissions === false ? 'FALSE' : ''; if (entity.substr(0, 7) !== 'Custom_') { - code = "\\Civi\\Api4\\" + entity + '::' + action + '()'; + code = "\\Civi\\Api4\\" + entity + '::' + action + '(' + perm + ')'; } else { - code = "\\Civi\\Api4\\CustomValue::" + action + "('" + entity.substr(7) + "')"; + code = "\\Civi\\Api4\\CustomValue::" + action + "('" + entity.substr(7) + "'" + (perm ? ', ' : '') + perm + ")"; } _.each(params, function(param, key) { var val = ''; @@ -667,7 +706,7 @@ code += (chain.length > 3 ? ',' : '') + (!_.isEmpty(chain[2]) ? newLine : ' ') + (chain.length > 3 ? phpFormat(chain[3]) : '') + ')'; }); } - else { + else if (key !== 'checkPermissions') { code += newLine + "->set" + ucfirst(key) + '(' + phpFormat(param, 2 + indent) + ')'; } }); diff --git a/civicrm/ang/crmMailing/Recipients.js b/civicrm/ang/crmMailing/Recipients.js index 0d39cde49e587454c28cb279d1339e163c247830..1867e9582f70e061087b1cb2afc0c46f58c61554 100644 --- a/civicrm/ang/crmMailing/Recipients.js +++ b/civicrm/ang/crmMailing/Recipients.js @@ -95,11 +95,12 @@ } var option = convertValueToObj(item.id); var icon = (option.entity_type === 'civicrm_mailing') ? 'fa-envelope' : 'fa-users'; + var smartGroupMarker = item.is_smart ? '* ' : ''; var spanClass = (option.mode == 'exclude') ? 'crmMailing-exclude' : 'crmMailing-include'; if (option.entity_type != 'civicrm_mailing' && isMandatory(option.entity_id)) { spanClass = 'crmMailing-mandatory'; } - return '<i class="crm-i '+icon+'" aria-hidden="true"></i> <span class="' + spanClass + '">' + item.text + '</span>'; + return '<i class="crm-i '+icon+'"></i> <span class="' + spanClass + '">' + smartGroupMarker + item.text + '</span>'; } function validate() { @@ -154,7 +155,7 @@ mids.push(0); } - CRM.api3('Group', 'getlist', { params: { id: { IN: gids }, options: { limit: 0 } }, extra: ["is_hidden"] } ).then( + CRM.api3('Group', 'getlist', { params: { id: { IN: gids }, options: { limit: 0 } }, extra: ["is_hidden"] }).then( function(glist) { CRM.api3('Mailing', 'getlist', { params: { id: { IN: mids }, options: { limit: 0 } } }).then( function(mlist) { @@ -165,8 +166,8 @@ $(glist.values).each(function (idx, group) { var key = group.id + ' civicrm_group include'; - groupNames.push({id: parseInt(group.id), title: group.label, is_hidden: group.extra.is_hidden}); + groupNames.push({id: parseInt(group.id), title: group.label, is_hidden: group.extra.is_hidden}); if (values.indexOf(key) >= 0) { datamap.push({id: key, text: group.label}); } @@ -233,6 +234,9 @@ if('civicrm_mailing' === rcpAjaxState.entity) { params["api.MailingRecipients.getcount"] = {}; } + else if ('civicrm_group' === rcpAjaxState.entity) { + params.extra = ["saved_search_id"]; + } return params; }, @@ -256,8 +260,8 @@ text: obj.label } : ''; } else { - return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, - text: obj.label }; + return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, text: obj.label, + is_smart: (!_.isEmpty(obj.extra.saved_search_id)) }; } }) }; diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ang/crmMailing/services.js index 45c206373230e3a0002834b5ec657f8b7a4d0ed2..3dbbf9ae985a4fe78823be4c4765f55862b7836f 100644 --- a/civicrm/ang/crmMailing/services.js +++ b/civicrm/ang/crmMailing/services.js @@ -470,7 +470,7 @@ .then(function (deliveryInfos) { var count = Object.keys(deliveryInfos).length; if (count === 0) { - CRM.alert(ts('Could not identify any recipients. Perhaps the group is empty?')); + CRM.alert(ts('Could not identify any recipients. Perhaps your test group is empty, or you tried sending to contacts that do not exist and you have no permission to add contacts.')); } }) ; diff --git a/civicrm/api/v3/Contribution.php b/civicrm/api/v3/Contribution.php index bbe016918144e5c0ad12852764d0970b6c4ff544..298980b4a74acced636044863de2b1cc57d0d902 100644 --- a/civicrm/api/v3/Contribution.php +++ b/civicrm/api/v3/Contribution.php @@ -393,7 +393,7 @@ function _civicrm_api3_contribute_format_params($params, &$values) { * @throws Exception */ function civicrm_api3_contribution_sendconfirmation($params) { - $ids = $values = []; + $ids = []; $allowedParams = [ 'receipt_from_email', 'receipt_from_name', @@ -404,8 +404,7 @@ function civicrm_api3_contribution_sendconfirmation($params) { 'payment_processor_id', ]; $input = array_intersect_key($params, array_flip($allowedParams)); - $input['is_email_receipt'] = TRUE; - CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $params['id'], $values); + CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $params['id']); } /** @@ -488,7 +487,8 @@ function civicrm_api3_contribution_completetransaction($params) { elseif ($contribution->contribution_status_id == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) { throw new API_Exception(ts('Contribution already completed'), 'contribution_completed'); } - $input['trxn_id'] = !empty($params['trxn_id']) ? $params['trxn_id'] : $contribution->trxn_id; + $input['trxn_id'] = $params['trxn_id'] ?? $contribution->trxn_id; + if (!empty($params['fee_amount'])) { $input['fee_amount'] = $params['fee_amount']; } @@ -682,7 +682,7 @@ function _ipn_process_transaction(&$params, $contribution, $input, $ids, $firstC } $input['card_type_id'] = $params['card_type_id'] ?? NULL; $input['pan_truncation'] = $params['pan_truncation'] ?? NULL; - return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, NULL, + return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $params['is_post_payment_create'] ?? NULL); } diff --git a/civicrm/api/v3/Domain.php b/civicrm/api/v3/Domain.php index 166179f88fa1591cb5eef75e7de61f1145d09fc5..974826b30ec1755a7c5f75db66ab024d767668f4 100644 --- a/civicrm/api/v3/Domain.php +++ b/civicrm/api/v3/Domain.php @@ -28,17 +28,23 @@ function civicrm_api3_domain_get($params) { $params['version'] = $params['domain_version'] ?? NULL; unset($params['version']); - $bao = new CRM_Core_BAO_Domain(); if (!empty($params['current_domain'])) { - $domainBAO = CRM_Core_Config::domainID(); - $params['id'] = $domainBAO; + $params['id'] = CRM_Core_Config::domainID(); } if (!empty($params['options']) && !empty($params['options']['is_count'])) { return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } - _civicrm_api3_dao_set_filter($bao, $params, TRUE); - $domains = _civicrm_api3_dao_to_array($bao, $params, TRUE, 'Domain'); + // If requesting current domain, read from cache + if (!empty($params['id']) && $params['id'] == CRM_Core_Config::domainID()) { + $bao = CRM_Core_BAO_Domain::getDomain(); + $domains = [$params['id'] => $bao->toArray()]; + } + else { + $bao = new CRM_Core_BAO_Domain(); + _civicrm_api3_dao_set_filter($bao, $params, TRUE); + $domains = _civicrm_api3_dao_to_array($bao, $params, TRUE, 'Domain'); + } foreach ($domains as $domain) { if (!empty($domain['contact_id'])) { diff --git a/civicrm/api/v3/Job.php b/civicrm/api/v3/Job.php index f34d7d48a2245f1f81713596c068f6a61fc74525..e791235232659d41f17084fb41d6cd9ee782a646 100644 --- a/civicrm/api/v3/Job.php +++ b/civicrm/api/v3/Job.php @@ -466,7 +466,14 @@ function civicrm_api3_job_process_membership($params) { return civicrm_api3_create_error('Could not acquire lock, another Membership Processing process is running'); } - $result = CRM_Member_BAO_Membership::updateAllMembershipStatus(); + // We need to pass this through as a simple array of membership status IDs as values. + if (!empty($params['exclude_membership_status_ids'])) { + is_array($params['exclude_membership_status_ids']) ?: $params['exclude_membership_status_ids'] = [$params['exclude_membership_status_ids']]; + } + if (!empty($params['exclude_membership_status_ids']['IN'])) { + $params['exclude_membership_status_ids'] = $params['exclude_membership_status_ids']['IN']; + } + $result = CRM_Member_BAO_Membership::updateAllMembershipStatus($params); $lock->release(); if ($result['is_error'] == 0) { @@ -477,6 +484,25 @@ function civicrm_api3_job_process_membership($params) { } } +function _civicrm_api3_job_process_membership_spec(&$params) { + $params['exclude_test_memberships']['api.default'] = TRUE; + $params['exclude_test_memberships']['title'] = 'Exclude test memberships'; + $params['exclude_test_memberships']['description'] = 'Exclude test memberships from calculations (default = TRUE)'; + $params['exclude_test_memberships']['type'] = CRM_Utils_Type::T_BOOLEAN; + $params['only_active_membership_types']['api.default'] = TRUE; + $params['only_active_membership_types']['title'] = 'Exclude disabled membership types'; + $params['only_active_membership_types']['description'] = 'Exclude disabled membership types from calculations (default = TRUE)'; + $params['only_active_membership_types']['type'] = CRM_Utils_Type::T_BOOLEAN; + $params['exclude_membership_status_ids']['title'] = 'Exclude membership status IDs from calculations'; + $params['exclude_membership_status_ids']['description'] = 'Default: Exclude Pending, Cancelled, Expired. Deceased will always be excluded'; + $params['exclude_membership_status_ids']['type'] = CRM_Utils_Type::T_INT; + $params['exclude_membership_status_ids']['pseudoconstant'] = [ + 'table' => 'civicrm_membership_status', + 'keyColumn' => 'id', + 'labelColumn' => 'label', + ]; +} + /** * This api checks and updates the status of all survey respondents. * diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php index 011a19f149ef88d2570850dbc7f3166d4ec59ce7..756cf75ab823b438455be3ec686c011aa7969b62 100644 --- a/civicrm/api/v3/Mailing.php +++ b/civicrm/api/v3/Mailing.php @@ -657,7 +657,7 @@ function civicrm_api3_mailing_send_test($params) { $emailId = $emailDetail[$email]['email_id']; $contactId = $emailDetail[$email]['contact_id']; } - if (!$contactId) { + if (!$contactId && CRM_Core_Permission::check('add contacts')) { //create new contact. $contact = civicrm_api3('Contact', 'create', [ @@ -669,13 +669,15 @@ function civicrm_api3_mailing_send_test($params) { $contactId = $contact['id']; $emailId = $contact['values'][$contactId]['api.Email.get']['id']; } - civicrm_api3('MailingEventQueue', 'create', - [ - 'job_id' => $job['id'], - 'email_id' => $emailId, - 'contact_id' => $contactId, - ] - ); + if ($emailId && $contactId) { + civicrm_api3('MailingEventQueue', 'create', + [ + 'job_id' => $job['id'], + 'email_id' => $emailId, + 'contact_id' => $contactId, + ] + ); + } } } diff --git a/civicrm/api/v3/Order.php b/civicrm/api/v3/Order.php index 99b270ec29755882805bc62f9a2a9e4439f659b0..32d59a193954a62755d3afd6d7ba9d66a8834a97 100644 --- a/civicrm/api/v3/Order.php +++ b/civicrm/api/v3/Order.php @@ -74,9 +74,9 @@ function civicrm_api3_order_create($params) { civicrm_api3_verify_one_mandatory($params, NULL, ['line_items', 'total_amount']); $entity = NULL; $entityIds = []; - $contributionStatus = $params['contribution_status_id'] ?? NULL; - if ($contributionStatus !== 'Pending' && 'Pending' !== CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contributionStatus)) { - CRM_Core_Error::deprecatedFunctionWarning("Creating a Order with a status other than pending is deprecated. Currently empty defaults to 'Completed' so as a transition not passing in 'Pending' is deprecated. You can chain payment creation e.g civicrm_api3('Order', 'create', ['blah' => 'blah', 'contribution_status_id' => 'Pending', 'api.Payment.create => ['total_amount' => 5]]"); + $params['contribution_status_id'] = $params['contribution_status_id'] ?? 'Pending'; + if ($params['contribution_status_id'] !== 'Pending' && 'Pending' !== CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution_status_id'])) { + CRM_Core_Error::deprecatedFunctionWarning("Creating a Order with a status other than pending is deprecated. Please do not set contribution_status_id, it will default to Pending. You can chain payment creation e.g civicrm_api3('Order', 'create', ['blah' => 'blah', 'contribution_status_id' => 'Pending', 'api.Payment.create => ['total_amount' => 5]]"); } if (!empty($params['line_items']) && is_array($params['line_items'])) { @@ -91,9 +91,7 @@ function civicrm_api3_order_create($params) { if ($entityParams) { if (in_array($entity, ['participant', 'membership'])) { $entityParams['skipLineItem'] = TRUE; - if ($contributionStatus === 'Pending') { - $entityParams['status_id'] = ($entity === 'participant' ? 'Pending from incomplete transaction' : 'Pending'); - } + $entityParams['status_id'] = ($entity === 'participant' ? 'Pending from incomplete transaction' : 'Pending'); $entityResult = civicrm_api3($entity, 'create', $entityParams); $params['contribution_mode'] = $entity; $entityIds[] = $params[$entity . '_id'] = $entityResult['id']; diff --git a/civicrm/api/v3/ReportTemplate.php b/civicrm/api/v3/ReportTemplate.php index 5d2e98fe6162982b902fa9e30bfedba44ab84aac..2b96179265d1c7561a6c60e8b3fd2a4267d5bba8 100644 --- a/civicrm/api/v3/ReportTemplate.php +++ b/civicrm/api/v3/ReportTemplate.php @@ -97,6 +97,9 @@ function civicrm_api3_report_template_delete($params) { * * @return array * API result array + * + * @throws \API_Exception + * @throws \CiviCRM_API3_Exception */ function civicrm_api3_report_template_getrows($params) { civicrm_api3_verify_one_mandatory($params, NULL, ['report_id', 'instance_id']); diff --git a/civicrm/api/v3/System.php b/civicrm/api/v3/System.php index 486d67bb1b5c22873df7f4ccdb2069ec7988ab8f..b597c48793fc304f27e46d6e0c7481445e4c2c17 100644 --- a/civicrm/api/v3/System.php +++ b/civicrm/api/v3/System.php @@ -514,11 +514,8 @@ function civicrm_api3_system_createmissinglogtables() { * */ function civicrm_api3_system_rebuildmultilingualschema() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales); return civicrm_api3_create_success(1); } diff --git a/civicrm/bin/regen.sh b/civicrm/bin/regen.sh index 3d5f6bcf852fc14e76fd7ec41bc20c14f674355f..f7451a23fc0250556cc315273fbccdc777ea373b 100755 --- a/civicrm/bin/regen.sh +++ b/civicrm/bin/regen.sh @@ -39,8 +39,6 @@ echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB $MYSQLCMD < civicrm.mysql $MYSQLCMD < civicrm_data.mysql $MYSQLCMD < civicrm_sample.mysql -echo "DROP TABLE IF EXISTS zipcodes" | $MYSQLCMD -$MYSQLCMD < zipcodes.mysql ## For first boot on fresh DB, boot CMS before CRM. cms_eval 'civicrm_initialize();' @@ -48,8 +46,8 @@ cms_eval 'civicrm_initialize();' php GenerateData.php ## Prune local data -$MYSQLCMD -e "DROP TABLE zipcodes; DROP TABLE IF EXISTS civicrm_install_canary; DELETE FROM civicrm_cache; DELETE FROM civicrm_setting;" -$MYSQLCMD -e "DELETE FROM civicrm_extension WHERE full_name NOT IN ('sequentialcreditnotes');" +$MYSQLCMD -e "DROP TABLE IF EXISTS civicrm_install_canary; DELETE FROM civicrm_cache; DELETE FROM civicrm_setting;" +$MYSQLCMD -e "DELETE FROM civicrm_extension WHERE full_name NOT IN ('sequentialcreditnotes', 'eventcart', 'search', 'flexmailer');" TABLENAMES=$( echo "show tables like 'civicrm_%'" | $MYSQLCMD | grep ^civicrm_ | xargs ) cd $CIVISOURCEDIR/sql diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index 89a15791e10772a309703c9be39af839e6fc5499..5362bfefa3318b4ada3bcec08356a94abccd2b6d 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.28.4', + return array( 'version' => '5.29.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/composer.json b/civicrm/composer.json index 92f796929664948572e3cada0e8a4f3c66564840..0a737c6dd99edbeffd7ee266201a53becf06eaba 100644 --- a/civicrm/composer.json +++ b/civicrm/composer.json @@ -44,7 +44,7 @@ "require": { "php": "~7.1", "cache/integration-tests": "~0.16.0", - "dompdf/dompdf" : "0.8.*", + "dompdf/dompdf" : "~0.8", "electrolinux/phpquery": "^0.9.6", "symfony/config": "~3.0 || ~4.4", "symfony/polyfill-iconv": "~1.0", @@ -77,7 +77,8 @@ "xkerman/restricted-unserialize": "~1.1", "typo3/phar-stream-wrapper": "^2 || ^3.0", "brick/money": "~0.4", - "ext-intl": "*" + "ext-intl": "*", + "pear/mail_mime": "~1.10" }, "scripts": { "post-install-cmd": [ @@ -253,6 +254,9 @@ "pear/mail": { "Apply CiviCRM Customisations for CRM-1367 and CRM-5946": "https://raw.githubusercontent.com/civicrm/civicrm-core/36319938a5bf26c1e7e2110a26a65db6a5979268/tools/scripts/composer/patches/pear-mail.patch" }, + "pear/mail_mime": { + "Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821": "https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch" + }, "pear/net_smtp": { "Add in CiviCRM custom error message for CRM-8744": "https://raw.githubusercontent.com/civicrm/civicrm-core/a6a0ff13d2a155ad962529595dceaef728116f96/tools/scripts/composer/patches/net-smtp-patch.patch" }, diff --git a/civicrm/composer.lock b/civicrm/composer.lock index e933416e7b8404e939e21a7d89dfb50224863d86..e39dd5c9d291df339edfa687979e2f0342a01a01 100644 --- a/civicrm/composer.lock +++ b/civicrm/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "76eb92be0bda933e6913e5cffd3ad672", + "content-hash": "1ff9c045fb03756148c0c66562aa61fd", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -449,28 +449,28 @@ }, { "name": "dompdf/dompdf", - "version": "v0.8.3", + "version": "v0.8.5", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2" + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/75f13c700009be21a1965dc2c5b68a8708c22ba2", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*", - "php": ">=5.4.0" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", @@ -511,7 +511,7 @@ ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2018-12-14T02:40:31+00:00" + "time": "2020-02-20T03:52:51+00:00" }, { "name": "electrolinux/phpquery", @@ -1114,6 +1114,57 @@ "homepage": "http://pear.php.net/package/Mail", "time": "2017-04-11T17:27:29+00:00" }, + { + "name": "pear/mail_mime", + "version": "1.10.9", + "source": { + "type": "git", + "url": "https://github.com/pear/Mail_Mime.git", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/Mail_Mime/zipball/1e7ae4e5258b6c0d385a8e76add567934245d38d", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d", + "shasum": "" + }, + "require": { + "pear/pear-core-minimal": "*" + }, + "type": "library", + "extra": { + "patches_applied": { + "Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821": "https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch" + } + }, + "autoload": { + "psr-0": { + "Mail": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-3-clause" + ], + "authors": [ + { + "name": "Cipriano Groenendal", + "email": "cipri@php.net", + "role": "Lead" + }, + { + "name": "Aleksander Machniak", + "email": "alec@php.net", + "role": "Lead" + } + ], + "description": "Mail_Mime provides classes to create MIME messages", + "homepage": "http://pear.php.net/package/Mail_Mime", + "time": "2020-06-27T08:35:27+00:00" + }, { "name": "pear/net_smtp", "version": "1.9.0", @@ -1377,20 +1428,20 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5", + "version": "0.5.2", "source": { "type": "git", "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962" + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/19ad2bebc35be028fcc0221025fcbf3d436a3962", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8", "shasum": "" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" }, "type": "library", "autoload": { @@ -1410,7 +1461,7 @@ ], "description": "A library to read, parse, export and make subsets of different types of font files.", "homepage": "https://github.com/PhenX/php-font-lib", - "time": "2017-02-11T10:58:43+00:00" + "time": "2020-03-08T15:31:32+00:00" }, { "name": "phenx/php-svg-lib", @@ -2005,16 +2056,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.3.0", + "version": "8.3.1", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796", "shasum": "" }, "require": { @@ -2046,7 +2097,7 @@ "parser", "stylesheet" ], - "time": "2019-02-22T07:42:52+00:00" + "time": "2020-06-01T09:10:00+00:00" }, { "name": "symfony/config", @@ -2294,20 +2345,6 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], "time": "2020-04-12T16:54:01+00:00" }, { @@ -2415,20 +2452,6 @@ "polyfill", "portable" ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], "time": "2020-05-12T16:14:59+00:00" }, { diff --git a/civicrm/css/api4-explorer.css b/civicrm/css/api4-explorer.css index 18dc67927803ac7747aaf428b577dc35ab40c89a..fa288280585d38e0f49e9fa684553ee6f0d69b17 100644 --- a/civicrm/css/api4-explorer.css +++ b/civicrm/css/api4-explorer.css @@ -54,10 +54,6 @@ margin-bottom: 10px; } -#bootstrap-theme.api4-explorer-page .api4-input.form-inline > label { - margin-right: 12px; -} - #bootstrap-theme.api4-explorer-page .explorer-help-panel .panel-body { word-break: break-word; } diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css index 9ff756f3f3d32917249f5dad6c8c818fbd105e64..a3264938b0ae2fb905b3f196bd04c03c89622f36 100644 --- a/civicrm/css/civicrm.css +++ b/civicrm/css/civicrm.css @@ -1850,9 +1850,6 @@ input.crm-form-entityref { .crm-container .crm-button-type-back { margin-left: 20px; } -.crm-container .crm-button-type-cancel input { - color: #E6E6DC!important; -} .crm-container a.button, .crm-container a.button:link, @@ -1862,7 +1859,7 @@ input.crm-form-entityref { .crm-container input[type=button], .crm-container .crm-button { text-shadow: 0 1px 0 black; - background: #70716B url(../i/crm-button-bg.gif) repeat-x top left; + background: #696969; color: #FFF; font-size: 13px; font-weight: normal; @@ -1919,7 +1916,7 @@ input.crm-form-entityref { .crm-container .ui-dialog-buttonset .ui-button:focus, .crm-container a.button:hover, .crm-container a.button:focus { - background-position: 0 -25px; + background: #3e3e3e; } .crm-container .crm-button-disabled, @@ -1930,7 +1927,6 @@ input.crm-form-entityref { .crm-container .crm-button[disabled] { opacity: .6; cursor: default; - background-position: top left; } .crm-container .crm-button-disabled input[disabled] { @@ -2137,11 +2133,6 @@ a.crm-i:hover { padding-left: 1.6em; } -.crm-container .inform-icon { - background-position: -16px -144px; - margin-right: 5px; -} - .crm-container a.helpicon { opacity: .8; } @@ -3202,7 +3193,7 @@ span.crm-select-item-color { right: 0; } .crm-container .ui-dialog-titlebar.ui-widget-header { - background: url("../i/crm-button-bg.gif") repeat-x scroll left center #70716B; + background: #5D677B; color: #F5F6F1; } .crm-container .ui-dialog-title { diff --git a/civicrm/CRM/Event/Cart/BAO/Cart.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/Cart.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/Cart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/Cart.php diff --git a/civicrm/CRM/Event/Cart/BAO/Conference.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/Conference.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/Conference.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/Conference.php diff --git a/civicrm/CRM/Event/Cart/BAO/EventInCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/EventInCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/EventInCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/EventInCart.php diff --git a/civicrm/CRM/Event/Cart/BAO/MerParticipant.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/MerParticipant.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/MerParticipant.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/MerParticipant.php diff --git a/civicrm/CRM/Event/Cart/Controller/Checkout.php b/civicrm/ext/eventcart/CRM/Event/Cart/Controller/Checkout.php similarity index 100% rename from civicrm/CRM/Event/Cart/Controller/Checkout.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Controller/Checkout.php diff --git a/civicrm/CRM/Event/Cart/Form/Cart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Cart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Cart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Cart.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/Payment.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/Payment.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/ThankYou.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ThankYou.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/ThankYou.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ThankYou.php diff --git a/civicrm/CRM/Event/Cart/Form/MerParticipant.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/MerParticipant.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php diff --git a/civicrm/CRM/Event/Cart/Page/AddToCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/AddToCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/AddToCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/AddToCart.php diff --git a/civicrm/CRM/Event/Cart/Page/CheckoutAJAX.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/CheckoutAJAX.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/CheckoutAJAX.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/CheckoutAJAX.php diff --git a/civicrm/CRM/Event/Cart/Page/RemoveFromCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/RemoveFromCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/RemoveFromCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/RemoveFromCart.php diff --git a/civicrm/CRM/Event/Cart/Page/ViewCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/ViewCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/ViewCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/ViewCart.php diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php b/civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php new file mode 100644 index 0000000000000000000000000000000000000000..d6d1e7d98d8a4af8563ed8df1be77aba12143ebb --- /dev/null +++ b/civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php @@ -0,0 +1,41 @@ +<?php + +class CRM_Event_Cart_PageCallback { + + /** + * @param \Civi\Core\Event\GenericHookEvent $event + */ + public static function run($event) { + switch ($event->page->getVar('_name')) { + case 'CRM_Event_Page_EventInfo': + self::alterEventInfo($event); + break; + + case 'CRM_Event_Page_List': + self::alterEventList($event); + } + } + + public static function alterEventInfo($event) { + $eventID = $event->page->getVar('_id'); + $link = CRM_Event_Cart_BAO_EventInCart::get_registration_link($eventID); + $registerText = $link['label']; + + $action = CRM_Utils_Request::retrieve('action', 'String', $event->page, FALSE); + $action_query = ($action === CRM_Core_Action::PREVIEW) ? "&action=$action" : ''; + + $url = CRM_Utils_System::url($link['path'], $link['query'] . $action_query, FALSE, NULL, TRUE, TRUE); + + $event->page->assign('registerText', $registerText); + $event->page->assign('registerURL', $url); + $event->page->assign('eventCartEnabled', TRUE); + } + + public static function alterEventList($event) { + if ((bool) Civi::settings()->get('enable_cart')) { + CRM_Core_Region::instance('crm-event-list-pre') + ->add(['template' => 'CRM/Event/Cart/eventlistpre.tpl']); + } + } + +} diff --git a/civicrm/CRM/Event/Cart/StateMachine/Checkout.php b/civicrm/ext/eventcart/CRM/Event/Cart/StateMachine/Checkout.php similarity index 100% rename from civicrm/CRM/Event/Cart/StateMachine/Checkout.php rename to civicrm/ext/eventcart/CRM/Event/Cart/StateMachine/Checkout.php diff --git a/civicrm/ext/eventcart/LICENSE.txt b/civicrm/ext/eventcart/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..912a621bb103089ba904765f065522efda5e54b4 --- /dev/null +++ b/civicrm/ext/eventcart/LICENSE.txt @@ -0,0 +1,667 @@ +Package: eventcart +Copyright (C) 2020, CiviCRM <info@civicrm.org> +Licensed under the GNU Affero Public License 3.0 (below). + +------------------------------------------------------------------------------- + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<http://www.gnu.org/licenses/>. diff --git a/civicrm/ext/eventcart/README.md b/civicrm/ext/eventcart/README.md new file mode 100644 index 0000000000000000000000000000000000000000..55be91b801ed26ca2de16912dd19a0a75de69426 --- /dev/null +++ b/civicrm/ext/eventcart/README.md @@ -0,0 +1,11 @@ +# eventcart + +This extracts most of the event cart functionality into an extension. + +The extension is licensed under [AGPL-3.0](LICENSE.txt). + +## Remaining work + +1. Move CRM_Event_Cart_DAO_Cart and CRM_Event_Cart_DAO_EventInCart from CiviCRM core (see https://github.com/civicrm/civicrm-core/pull/17339 for details). +1. There are various places in CiviCRM which still check the setting `enable_cart`. These should be moved to this extension. +1. The "Conference Slots" functionality is only enabled if Event Cart is enabled so that should be moved into this extension too. diff --git a/civicrm/ext/eventcart/eventcart.civix.php b/civicrm/ext/eventcart/eventcart.civix.php new file mode 100644 index 0000000000000000000000000000000000000000..482ac73bf65eb5d652d272e64f04974250350969 --- /dev/null +++ b/civicrm/ext/eventcart/eventcart.civix.php @@ -0,0 +1,477 @@ +<?php + +// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file + +/** + * The ExtensionUtil class provides small stubs for accessing resources of this + * extension. + */ +class CRM_Event_Cart_ExtensionUtil { + const SHORT_NAME = "eventcart"; + const LONG_NAME = "eventcart"; + const CLASS_PREFIX = "CRM_Event_Cart"; + + /** + * Translate a string using the extension's domain. + * + * If the extension doesn't have a specific translation + * for the string, fallback to the default translations. + * + * @param string $text + * Canonical message text (generally en_US). + * @param array $params + * @return string + * Translated text. + * @see ts + */ + public static function ts($text, $params = []) { + if (!array_key_exists('domain', $params)) { + $params['domain'] = [self::LONG_NAME, NULL]; + } + return ts($text, $params); + } + + /** + * Get the URL of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: 'http://example.org/sites/default/ext/org.example.foo'. + * Ex: 'http://example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function url($file = NULL) { + if ($file === NULL) { + return rtrim(CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME), '/'); + } + return CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME, $file); + } + + /** + * Get the path of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo'. + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function path($file = NULL) { + // return CRM_Core_Resources::singleton()->getPath(self::LONG_NAME, $file); + return __DIR__ . ($file === NULL ? '' : (DIRECTORY_SEPARATOR . $file)); + } + + /** + * Get the name of a class within this extension. + * + * @param string $suffix + * Ex: 'Page_HelloWorld' or 'Page\\HelloWorld'. + * @return string + * Ex: 'CRM_Foo_Page_HelloWorld'. + */ + public static function findClass($suffix) { + return self::CLASS_PREFIX . '_' . str_replace('\\', '_', $suffix); + } + +} + +use CRM_Event_Cart_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _eventcart_civix_civicrm_config(&$config = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $template =& CRM_Core_Smarty::singleton(); + + $extRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR; + $extDir = $extRoot . 'templates'; + + if (is_array($template->template_dir)) { + array_unshift($template->template_dir, $extDir); + } + else { + $template->template_dir = [$extDir, $template->template_dir]; + } + + $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); + set_include_path($include_path); +} + +/** + * (Delegated) Implements hook_civicrm_xmlMenu(). + * + * @param $files array(string) + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_xmlMenu + */ +function _eventcart_civix_civicrm_xmlMenu(&$files) { + foreach (_eventcart_civix_glob(__DIR__ . '/xml/Menu/*.xml') as $file) { + $files[] = $file; + } +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function _eventcart_civix_civicrm_install() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + $upgrader->onInstall(); + } +} + +/** + * Implements hook_civicrm_postInstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall + */ +function _eventcart_civix_civicrm_postInstall() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + if (is_callable([$upgrader, 'onPostInstall'])) { + $upgrader->onPostInstall(); + } + } +} + +/** + * Implements hook_civicrm_uninstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall + */ +function _eventcart_civix_civicrm_uninstall() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + $upgrader->onUninstall(); + } +} + +/** + * (Delegated) Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function _eventcart_civix_civicrm_enable() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + if (is_callable([$upgrader, 'onEnable'])) { + $upgrader->onEnable(); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_disable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable + * @return mixed + */ +function _eventcart_civix_civicrm_disable() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + if (is_callable([$upgrader, 'onDisable'])) { + $upgrader->onDisable(); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_upgrade(). + * + * @param $op string, the type of operation being performed; 'check' or 'enqueue' + * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks + * + * @return mixed + * based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending) + * for 'enqueue', returns void + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade + */ +function _eventcart_civix_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { + if ($upgrader = _eventcart_civix_upgrader()) { + return $upgrader->onUpgrade($op, $queue); + } +} + +/** + * @return CRM_Event_Cart_Upgrader + */ +function _eventcart_civix_upgrader() { + if (!file_exists(__DIR__ . '/CRM/Event/Cart/Upgrader.php')) { + return NULL; + } + else { + return CRM_Event_Cart_Upgrader_Base::instance(); + } +} + +/** + * Search directory tree for files which match a glob pattern. + * + * Note: Dot-directories (like "..", ".git", or ".svn") will be ignored. + * Note: In Civi 4.3+, delegate to CRM_Utils_File::findFiles() + * + * @param string $dir base dir + * @param string $pattern , glob pattern, eg "*.txt" + * + * @return array + */ +function _eventcart_civix_find_files($dir, $pattern) { + if (is_callable(['CRM_Utils_File', 'findFiles'])) { + return CRM_Utils_File::findFiles($dir, $pattern); + } + + $todos = [$dir]; + $result = []; + while (!empty($todos)) { + $subdir = array_shift($todos); + foreach (_eventcart_civix_glob("$subdir/$pattern") as $match) { + if (!is_dir($match)) { + $result[] = $match; + } + } + if ($dh = opendir($subdir)) { + while (FALSE !== ($entry = readdir($dh))) { + $path = $subdir . DIRECTORY_SEPARATOR . $entry; + if ($entry[0] == '.') { + } + elseif (is_dir($path)) { + $todos[] = $path; + } + } + closedir($dh); + } + } + return $result; +} + +/** + * (Delegated) Implements hook_civicrm_managed(). + * + * Find any *.mgd.php files, merge their content, and return. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_managed + */ +function _eventcart_civix_civicrm_managed(&$entities) { + $mgdFiles = _eventcart_civix_find_files(__DIR__, '*.mgd.php'); + sort($mgdFiles); + foreach ($mgdFiles as $file) { + $es = include $file; + foreach ($es as $e) { + if (empty($e['module'])) { + $e['module'] = E::LONG_NAME; + } + if (empty($e['params']['version'])) { + $e['params']['version'] = '3'; + } + $entities[] = $e; + } + } +} + +/** + * (Delegated) Implements hook_civicrm_caseTypes(). + * + * Find any and return any files matching "xml/case/*.xml" + * + * Note: This hook only runs in CiviCRM 4.4+. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_caseTypes + */ +function _eventcart_civix_civicrm_caseTypes(&$caseTypes) { + if (!is_dir(__DIR__ . '/xml/case')) { + return; + } + + foreach (_eventcart_civix_glob(__DIR__ . '/xml/case/*.xml') as $file) { + $name = preg_replace('/\.xml$/', '', basename($file)); + if ($name != CRM_Case_XMLProcessor::mungeCaseType($name)) { + $errorMessage = sprintf("Case-type file name is malformed (%s vs %s)", $name, CRM_Case_XMLProcessor::mungeCaseType($name)); + throw new CRM_Core_Exception($errorMessage); + } + $caseTypes[$name] = [ + 'module' => E::LONG_NAME, + 'name' => $name, + 'file' => $file, + ]; + } +} + +/** + * (Delegated) Implements hook_civicrm_angularModules(). + * + * Find any and return any files matching "ang/*.ang.php" + * + * Note: This hook only runs in CiviCRM 4.5+. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_angularModules + */ +function _eventcart_civix_civicrm_angularModules(&$angularModules) { + if (!is_dir(__DIR__ . '/ang')) { + return; + } + + $files = _eventcart_civix_glob(__DIR__ . '/ang/*.ang.php'); + foreach ($files as $file) { + $name = preg_replace(':\.ang\.php$:', '', basename($file)); + $module = include $file; + if (empty($module['ext'])) { + $module['ext'] = E::LONG_NAME; + } + $angularModules[$name] = $module; + } +} + +/** + * (Delegated) Implements hook_civicrm_themes(). + * + * Find any and return any files matching "*.theme.php" + */ +function _eventcart_civix_civicrm_themes(&$themes) { + $files = _eventcart_civix_glob(__DIR__ . '/*.theme.php'); + foreach ($files as $file) { + $themeMeta = include $file; + if (empty($themeMeta['name'])) { + $themeMeta['name'] = preg_replace(':\.theme\.php$:', '', basename($file)); + } + if (empty($themeMeta['ext'])) { + $themeMeta['ext'] = E::LONG_NAME; + } + $themes[$themeMeta['name']] = $themeMeta; + } +} + +/** + * Glob wrapper which is guaranteed to return an array. + * + * The documentation for glob() says, "On some systems it is impossible to + * distinguish between empty match and an error." Anecdotally, the return + * result for an empty match is sometimes array() and sometimes FALSE. + * This wrapper provides consistency. + * + * @link http://php.net/glob + * @param string $pattern + * + * @return array + */ +function _eventcart_civix_glob($pattern) { + $result = glob($pattern); + return is_array($result) ? $result : []; +} + +/** + * Inserts a navigation menu item at a given place in the hierarchy. + * + * @param array $menu - menu hierarchy + * @param string $path - path to parent of this item, e.g. 'my_extension/submenu' + * 'Mailing', or 'Administer/System Settings' + * @param array $item - the item to insert (parent/child attributes will be + * filled for you) + * + * @return bool + */ +function _eventcart_civix_insert_navigation_menu(&$menu, $path, $item) { + // If we are done going down the path, insert menu + if (empty($path)) { + $menu[] = [ + 'attributes' => array_merge([ + 'label' => CRM_Utils_Array::value('name', $item), + 'active' => 1, + ], $item), + ]; + return TRUE; + } + else { + // Find an recurse into the next level down + $found = FALSE; + $path = explode('/', $path); + $first = array_shift($path); + foreach ($menu as $key => &$entry) { + if ($entry['attributes']['name'] == $first) { + if (!isset($entry['child'])) { + $entry['child'] = []; + } + $found = _eventcart_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _eventcart_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _eventcart_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _eventcart_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _eventcart_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _eventcart_civix_fixNavigationMenuItems(&$nodes, &$maxNavID, $parentID) { + $origKeys = array_keys($nodes); + foreach ($origKeys as $origKey) { + if (!isset($nodes[$origKey]['attributes']['parentID']) && $parentID !== NULL) { + $nodes[$origKey]['attributes']['parentID'] = $parentID; + } + // If no navID, then assign navID and fix key. + if (!isset($nodes[$origKey]['attributes']['navID'])) { + $newKey = ++$maxNavID; + $nodes[$origKey]['attributes']['navID'] = $newKey; + $nodes[$newKey] = $nodes[$origKey]; + unset($nodes[$origKey]); + $origKey = $newKey; + } + if (isset($nodes[$origKey]['child']) && is_array($nodes[$origKey]['child'])) { + _eventcart_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_alterSettingsFolders(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterSettingsFolders + */ +function _eventcart_civix_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { + $settingsDir = __DIR__ . DIRECTORY_SEPARATOR . 'settings'; + if (!in_array($settingsDir, $metaDataFolders) && is_dir($settingsDir)) { + $metaDataFolders[] = $settingsDir; + } +} + +/** + * (Delegated) Implements hook_civicrm_entityTypes(). + * + * Find any *.entityType.php files, merge their content, and return. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes + */ +function _eventcart_civix_civicrm_entityTypes(&$entityTypes) { + $entityTypes = array_merge($entityTypes, []); +} diff --git a/civicrm/ext/eventcart/eventcart.php b/civicrm/ext/eventcart/eventcart.php new file mode 100644 index 0000000000000000000000000000000000000000..9fac71ca9847e27b6fb7c668f2a725c48b602047 --- /dev/null +++ b/civicrm/ext/eventcart/eventcart.php @@ -0,0 +1,133 @@ +<?php + +require_once 'eventcart.civix.php'; +// phpcs:disable +use CRM_Eventcart_ExtensionUtil as E; +// phpcs:enable + +/** + * Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ + */ +function eventcart_civicrm_config(&$config) { + if (isset(Civi::$statics[__FUNCTION__])) { + return; + } + Civi::$statics[__FUNCTION__] = 1; + // Since as a hidden extension it's always enabled, until this is a "real" extension you can turn off we need to check the legacy setting. + if ((bool) Civi::settings()->get('enable_cart')) { + Civi::dispatcher()->addListener('hook_civicrm_pageRun', 'CRM_Event_Cart_PageCallback::run'); + } + + _eventcart_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_xmlMenu(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_xmlMenu + */ +function eventcart_civicrm_xmlMenu(&$files) { + _eventcart_civix_civicrm_xmlMenu($files); +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function eventcart_civicrm_install() { + _eventcart_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_postInstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall + */ +function eventcart_civicrm_postInstall() { + _eventcart_civix_civicrm_postInstall(); +} + +/** + * Implements hook_civicrm_uninstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall + */ +function eventcart_civicrm_uninstall() { + _eventcart_civix_civicrm_uninstall(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function eventcart_civicrm_enable() { + _eventcart_civix_civicrm_enable(); +} + +/** + * Implements hook_civicrm_disable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable + */ +function eventcart_civicrm_disable() { + _eventcart_civix_civicrm_disable(); +} + +/** + * Implements hook_civicrm_upgrade(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade + */ +function eventcart_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { + return _eventcart_civix_civicrm_upgrade($op, $queue); +} + +/** + * Implements hook_civicrm_managed(). + * + * Generate a list of entities to create/deactivate/delete when this module + * is installed, disabled, uninstalled. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_managed + */ +function eventcart_civicrm_managed(&$entities) { + _eventcart_civix_civicrm_managed($entities); +} + +/** + * Implements hook_civicrm_angularModules(). + * + * Generate a list of Angular modules. + * + * Note: This hook only runs in CiviCRM 4.5+. It may + * use features only available in v4.6+. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_angularModules + */ +function eventcart_civicrm_angularModules(&$angularModules) { + _eventcart_civix_civicrm_angularModules($angularModules); +} + +/** + * Implements hook_civicrm_alterSettingsFolders(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterSettingsFolders + */ +function eventcart_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { + _eventcart_civix_civicrm_alterSettingsFolders($metaDataFolders); +} + +/** + * Implements hook_civicrm_entityTypes(). + * + * Declare entity types provided by this module. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes + */ +function eventcart_civicrm_entityTypes(&$entityTypes) { + _eventcart_civix_civicrm_entityTypes($entityTypes); +} diff --git a/civicrm/ext/eventcart/images/screenshot.png b/civicrm/ext/eventcart/images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6765b696fa03249ac2cd605d5f0e4aa000ad6dad Binary files /dev/null and b/civicrm/ext/eventcart/images/screenshot.png differ diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c1bf45ba57216e15d5302b8ce78a50d9ce9b296 --- /dev/null +++ b/civicrm/ext/eventcart/info.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<extension key="eventcart" type="module"> + <file>eventcart</file> + <name>Event Cart</name> + <description>This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a "cart" and then pay for them all at once. Enabling this setting will affect online registration for all active events.</description> + <license>AGPL-3.0</license> + <maintainer> + <author>CiviCRM</author> + <email>info@civicrm.org</email> + </maintainer> + <urls> + <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/eventcart</url> + <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> + </urls> + <releaseDate>2020-08-03</releaseDate> + <version>1.0</version> + <tags> + <tag>mgmt:hidden</tag> + </tags> + <develStage>stable</develStage> + <compatibility> + <ver>5.29</ver> + </compatibility> + <classloader> + <psr4 prefix="Civi\" path="Civi"/> + </classloader> + <civix> + <namespace>CRM/Event/Cart</namespace> + </civix> +</extension> diff --git a/civicrm/ext/eventcart/settings/Eventcart.setting.php b/civicrm/ext/eventcart/settings/Eventcart.setting.php new file mode 100644 index 0000000000000000000000000000000000000000..d52892d25cf296e8b8e350bbb5b21f2c14f23233 --- /dev/null +++ b/civicrm/ext/eventcart/settings/Eventcart.setting.php @@ -0,0 +1,38 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + +/** + * Settings metadata file + */ +return [ + 'enable_cart' => [ + 'name' => 'enable_cart', + 'group_name' => 'Event Preferences', + 'settings_pages' => ['event' => ['weight' => 10]], + 'group' => 'event', + 'type' => 'Boolean', + 'quick_form_type' => 'CheckBox', + 'default' => '0', + 'add' => '4.1', + 'title' => ts('Use Shopping Cart Style Event Registration'), + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => ts('This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a "cart" and then pay for them all at once. Enabling this setting will affect online registration for all active events. The code is an alpha state, and you will potentially need to have developer resources to debug and fix sections of the codebase while testing and deploying it'), + 'help_text' => '', + 'documentation_link' => ['page' => 'CiviEvent Cart Checkout', 'resource' => 'wiki'], + ], +]; diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/viewCartLink.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/viewCartLink.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/viewCartLink.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/viewCartLink.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Page/AddToCart.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/AddToCart.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Page/AddToCart.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/AddToCart.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Page/ViewCart.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/ViewCart.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Page/ViewCart.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/ViewCart.tpl diff --git a/civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl new file mode 100644 index 0000000000000000000000000000000000000000..a212dc09c2601da4b7345904e62507922cd62fe3 --- /dev/null +++ b/civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl @@ -0,0 +1,2 @@ +<a href="{crmURL p='civicrm/event/view_cart'}" class="button crm-shoppingcart-button"><i class="crm-i fa-shopping-cart" aria-hidden="true"></i> {ts}View Cart{/ts}</a> +<a href="{crmURL p='civicrm/event/cart_checkout'}" class="button crm-check-out-button"><i class="crm-i fa-credit-card" aria-hidden="true"></i> {ts}Checkout{/ts}</a> diff --git a/civicrm/ext/eventcart/xml/Menu/Eventcart.xml b/civicrm/ext/eventcart/xml/Menu/Eventcart.xml new file mode 100644 index 0000000000000000000000000000000000000000..838014501a74c9d6878066586daaf52d5d46a60d --- /dev/null +++ b/civicrm/ext/eventcart/xml/Menu/Eventcart.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> + +<menu> + <item> + <path>civicrm/ajax/event/add_participant_to_cart</path> + <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::add_participant_to_cart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + </item> + <item> + <path>civicrm/ajax/event/remove_participant_from_cart</path> + <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::remove_participant_from_cart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + </item> + <item> + <path>civicrm/event/add_to_cart</path> + <title>Add Event To Cart</title> + <page_callback>CRM_Event_Cart_Page_AddToCart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>false</is_ssl> + </item> + <item> + <path>civicrm/event/cart_checkout</path> + <title>Cart Checkout</title> + <page_callback>CRM_Event_Cart_Controller_Checkout</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>true</is_ssl> + </item> + <item> + <path>civicrm/event/remove_from_cart</path> + <title>Remove From Cart</title> + <page_callback>CRM_Event_Cart_Page_RemoveFromCart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>false</is_ssl> + </item> + <item> + <path>civicrm/event/view_cart</path> + <title>View Cart</title> + <page_callback>CRM_Event_Cart_Page_ViewCart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>false</is_ssl> + </item> +</menu> diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml index f89dbd026e786fb9cb3761354b367cd04a45cf64..7317ae50277fa2619f025c77432495d1b96dee2a 100644 --- a/civicrm/ext/flexmailer/info.xml +++ b/civicrm/ext/flexmailer/info.xml @@ -14,16 +14,16 @@ <url desc="Support">http://civicrm.stackexchange.com/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2019-11-26</releaseDate> - <version>1.1.1</version> - <develStage>alpha</develStage> + <releaseDate>2020-08-05</releaseDate> + <version>1.1.2</version> + <develStage>stable</develStage> <comments> FlexMailer is an email delivery engine which replaces the internal guts of CiviMail. It is a drop-in replacement which enables *other* extensions to provide richer email features. </comments> <compatibility> - <ver>5.13</ver> + <ver>5.29</ver> </compatibility> <classloader> <psr4 prefix="Civi\FlexMailer\" path="src"/> diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php index 1daeab0640713e6b08186056bee4ebf7a97ce74f..b68047122537ebfe50f8975dd38321a78ff1fc4d 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php @@ -12,7 +12,7 @@ namespace Civi\FlexMailer; /** * - * @copyright CiviCRM LLC (c) 2004-2017 + * @copyright CiviCRM LLC https://civicrm.org/licensing * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $ * */ diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php index 876d0637e81c482924d7c4e0cc04bc664c1c2382..d592787e8d0fc333ef716c52a124256d4542a597 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php @@ -13,7 +13,7 @@ namespace Civi\FlexMailer; /** * Test that content produced by CiviMail looks the way it's expected. * - * @copyright CiviCRM LLC (c) 2004-2017 + * @copyright CiviCRM LLC https://civicrm.org/licensing * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $ * */ diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php index 4df278002acc20b551a156100d9cb69af6b077b4..8a0eba86356a460df95cc03ca1a00efe7c3b5dd6 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php @@ -12,7 +12,7 @@ namespace Civi\FlexMailer\Listener; /** * - * @copyright CiviCRM LLC (c) 2004-2017 + * @copyright CiviCRM LLC https://civicrm.org/licensing * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $ * */ diff --git a/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php b/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php index 67bfb11ede989520fc128ff0a817ee18e1e96248..4e84a7676cdf54f18a73d996be8c50a311f7792f 100644 --- a/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php +++ b/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php @@ -32,7 +32,7 @@ function sequentialcreditnotes_civicrm_pre($op, $objectName, $id, &$params) { $reversalStatuses = ['Cancelled', 'Chargeback', 'Refunded']; if (empty($params['creditnote_id']) && in_array(CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution_status_id']), $reversalStatuses, TRUE)) { if ($id) { - $existing = Contribution::get()->setCheckPermissions(FALSE)->addWhere('id', '=', (int) $id)->setSelect(['creditnote_id'])->execute()->first(); + $existing = Contribution::get(FALSE)->addWhere('id', '=', (int) $id)->setSelect(['creditnote_id'])->execute()->first(); if ($existing['creditnote_id']) { // Since we have it adding it makes is clearer. $params['creditnote_id'] = $existing['creditnote_id']; diff --git a/civicrm/extern/authorizeIPN.php b/civicrm/extern/authorizeIPN.php index f552926fd4583af28c8d3022ec2d54c743851080..a972cabc1cd82fbe73f728d7ca52d35f49b706d1 100644 --- a/civicrm/extern/authorizeIPN.php +++ b/civicrm/extern/authorizeIPN.php @@ -12,7 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ if (defined('PANTHEON_ENVIRONMENT')) { diff --git a/civicrm/extern/ipn.php b/civicrm/extern/ipn.php index d658dafcecb7ab1be9fe5a9072d07e48207b1d04..5f5f6bef15c81004e749ee959ca775c8c988b4c5 100644 --- a/civicrm/extern/ipn.php +++ b/civicrm/extern/ipn.php @@ -12,8 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * This script processes "Instant Payment Notifications" (IPNs). Modern * Payment Processors use the /civicrm/payment/ipn/123 endpoint instead (where * 123 is the payment processor ID), however a quirk in the way PayPal works diff --git a/civicrm/extern/pxIPN.php b/civicrm/extern/pxIPN.php deleted file mode 100644 index 6ef2a57bf8e8dcde5d105a0f0509820d90b1e9ad..0000000000000000000000000000000000000000 --- a/civicrm/extern/pxIPN.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, - * Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -if (defined('PANTHEON_ENVIRONMENT')) { - ini_set('session.save_handler', 'files'); -} -session_start(); - -require_once '../civicrm.config.php'; -require_once 'CRM/Core/Config.php'; - -CRM_Core_Config::singleton(); -$log = new CRM_Utils_SystemLogger(); -$log->alert('payment_notification processor_name=Payment_Express', $_REQUEST); -/* - * Get the password from the Payment Processor's table based on the DPS user id - * being passed back from the server - */ - -$query = " -SELECT url_site, password, user_name, signature -FROM civicrm_payment_processor -LEFT JOIN civicrm_payment_processor_type ON civicrm_payment_processor_type.id = civicrm_payment_processor.payment_processor_type_id -WHERE civicrm_payment_processor_type.name = 'Payment_Express' -AND user_name = %1 -"; -$params = array(1 => array($_GET['userid'], 'String')); - -$dpsSettings = CRM_Core_DAO::executeQuery($query, $params); -while ($dpsSettings->fetch()) { - $dpsUrl = $dpsSettings->url_site; - $dpsUser = $dpsSettings->user_name; - $dpsKey = $dpsSettings->password; - $dpsMacKey = $dpsSettings->signature; -} - -if ($dpsMacKey) { - $method = "pxaccess"; -} -else { - $method = "pxpay"; -} - -require_once 'CRM/Core/Payment/PaymentExpressIPN.php'; -$rawPostData = $_GET['result']; -CRM_Core_Payment_PaymentExpressIPN::main($method, $rawPostData, $dpsUrl, $dpsUser, $dpsKey, $dpsMacKey); diff --git a/civicrm/extern/widget.php b/civicrm/extern/widget.php index f6bdf073db287a39512aed8a993ea54206344ec9..0c15e641e451909cad99d84d1885bd583872c02d 100644 --- a/civicrm/extern/widget.php +++ b/civicrm/extern/widget.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ require_once '../civicrm.config.php'; require_once 'CRM/Core/Config.php'; diff --git a/civicrm/i/crm-button-bg.gif b/civicrm/i/crm-button-bg.gif deleted file mode 100644 index 6aa345ebd2ec75de81c8a841c81227e6eb488be4..0000000000000000000000000000000000000000 Binary files a/civicrm/i/crm-button-bg.gif and /dev/null differ diff --git a/civicrm/install/civicrm.php b/civicrm/install/civicrm.php index c6fdaf10df2d32616fcf4d71c97dbe23b7a005c1..e6886134039281a2c69874ea93a06aac6b3bad53 100644 --- a/civicrm/install/civicrm.php +++ b/civicrm/install/civicrm.php @@ -12,8 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * $Id$ + * @copyright CiviCRM LLC https://civicrm.org/licensing * @param $filesDirectory */ function civicrm_setup($filesDirectory) { diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js index e6b0dbc1aacf9a38726846cf58f36239dae07a18..88c8c44b8ea1d794710699173d89ae1e084e820a 100644 --- a/civicrm/js/Common.js +++ b/civicrm/js/Common.js @@ -883,7 +883,7 @@ if (!CRM.vars) CRM.vars = {}; var that = this; validator.settings = $.extend({}, validator.settings, CRM.validate._defaults, CRM.validate.params); // Call our custom validation handler. - $(validator.currentForm).on("invalid-form.validate", validator.settings.invalidHandler ); + $(validator.currentForm).on("invalid-form.validate", validator.settings.invalidHandler); // Call any post-initialization callbacks if (CRM.validate.functions && CRM.validate.functions.length) { $.each(CRM.validate.functions, function(i, func) { @@ -967,7 +967,7 @@ if (!CRM.vars) CRM.vars = {}; }); } }); - if ($("input:radio[name=radio_ts]").size() == 1) { + if ($("input:radio[name=radio_ts]").length == 1) { $("input:radio[name=radio_ts]").prop("checked", true); } $('.crm-select2:not(.select2-offscreen, .select2-container)', e.target).crmSelect2(); @@ -1116,7 +1116,7 @@ if (!CRM.vars) CRM.vars = {}; } }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ CRM.status = function(options, deferred) { // For simple usage without async operations you can pass in a string. 2nd param is optional string 'error' if this is not a success msg. @@ -1180,7 +1180,7 @@ if (!CRM.vars) CRM.vars = {}; }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ CRM.alert = function (text, title, type, options) { type = type || 'alert'; @@ -1228,7 +1228,7 @@ if (!CRM.vars) CRM.vars = {}; }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ CRM.confirm = function (options) { var dialog, url, msg, buttons = [], settings = { @@ -1306,7 +1306,7 @@ if (!CRM.vars) CRM.vars = {}; }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ $.fn.crmError = function (text, title, options) { title = title || ''; @@ -1615,7 +1615,11 @@ if (!CRM.vars) CRM.vars = {}; return Math.round(n / scale) * scale; }; - // Create a js Date object from a unix timestamp or a yyyy-mm-dd string + /** + * Create a js Date object from a unix timestamp or a yyyy-mm-dd string + * @param input + * @returns {Date} + */ CRM.utils.makeDate = function(input) { switch (typeof input) { case 'object': @@ -1624,10 +1628,16 @@ if (!CRM.vars) CRM.vars = {}; case 'string': // convert iso format with or without dashes - if (input.indexOf('-') > 0) { - return $.datepicker.parseDate('yy-mm-dd', input.substr(0, 10)); + input = input.replace(/[- :]/g, ''); + var output = $.datepicker.parseDate('yymmdd', input.substr(0, 8)); + if (input.length === 14) { + output.setHours( + parseInt(input.substr(8, 2), 10), + parseInt(input.substr(10, 2), 10), + parseInt(input.substr(12, 2), 10) + ); } - return $.datepicker.parseDate('yymmdd', input.substr(0, 8)); + return output; case 'number': // convert unix timestamp @@ -1636,10 +1646,39 @@ if (!CRM.vars) CRM.vars = {}; throw 'Invalid input passed to CRM.utils.makeDate'; }; - // Format a date for output to the user - // Input may be a js Date object, a unix timestamp or a yyyy-mm-dd string - CRM.utils.formatDate = function(input, outputFormat) { - return input ? $.datepicker.formatDate(outputFormat || CRM.config.dateInputFormat, CRM.utils.makeDate(input)) : ''; + /** + * Format a date (and optionally time) for output to the user + * + * @param {string|int|Date} input + * Input may be a js Date object, a unix timestamp or a 'yyyy-mm-dd' string + * @param {string|null} dateFormat + * A string like 'yy-mm-dd' or null to use the system default + * @param {int|bool} timeFormat + * Leave empty to omit time from the output (default) + * Or pass 12, 24, or true to use the system default for 12/24hr format + * @returns {string} + */ + CRM.utils.formatDate = function(input, dateFormat, timeFormat) { + if (!input) { + return ''; + } + var date = CRM.utils.makeDate(input), + output = $.datepicker.formatDate(dateFormat || CRM.config.dateInputFormat, date); + if (timeFormat) { + var hour = date.getHours(), + min = date.getMinutes(), + suf = ''; + if (timeFormat === 12 || (timeFormat === true && !CRM.config.timeIs24Hr)) { + suf = ' ' + (hour < 12 ? ts('AM') : ts('PM')); + if (hour === 0 || hour > 12) { + hour = Math.abs(hour - 12); + } + } else if (hour < 10) { + hour = '0' + hour; + } + output += ' ' + hour + ':' + (min < 10 ? '0' : '') + min + suf; + } + return output; }; // Used to set appropriate text color for a given background diff --git a/civicrm/js/crm.ajax.js b/civicrm/js/crm.ajax.js index 7c7371131125d42848126a433d99fb0a0403c82a..9a3c3f1ce572d21cec0c0012a9a4840d339c7a83 100644 --- a/civicrm/js/crm.ajax.js +++ b/civicrm/js/crm.ajax.js @@ -1,7 +1,7 @@ // https://civicrm.org/licensing /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/AJAX+Interface - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Ajax+Pages+and+Forms + * @see https://docs.civicrm.org/dev/en/latest/api/interfaces/#ajax + * @see https://docs.civicrm.org/dev/en/latest/framework/ajax/ */ (function($, CRM, _, undefined) { /** diff --git a/civicrm/js/jquery/jquery.crmEditable.js b/civicrm/js/jquery/jquery.crmEditable.js index 7d0da65ba1b8fbae9bb5c7e8bc3ab9fc06897219..293686ed81867db531e4c2f73b1dd1511877d3bb 100644 --- a/civicrm/js/jquery/jquery.crmEditable.js +++ b/civicrm/js/jquery/jquery.crmEditable.js @@ -37,7 +37,7 @@ }; /** - * @see http://wiki.civicrm.org/confluence/display/CRMDOC/Structure+convention+for+automagic+edit+in+place + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#in-place-field-editing */ $.fn.crmEditable = function(options) { function checkable() { diff --git a/civicrm/js/view/crm.designer.js b/civicrm/js/view/crm.designer.js index b00a2964f15670b57c4f876311e4e93f620884ce..58b0446ecb379e7a166bc5d574e6b4081c7f77a2 100644 --- a/civicrm/js/view/crm.designer.js +++ b/civicrm/js/view/crm.designer.js @@ -2,7 +2,7 @@ if (!CRM.Designer) CRM.Designer = {}; /** - * When rendering a template with Marionette.ItemView, the list of variables is determined by + * When rendering a template with Backbone.Marionette.ItemView, the list of variables is determined by * serializeData(). The normal behavior is to map each property of this.model to a template * variable. * @@ -14,7 +14,7 @@ * @return {*} */ var extendedSerializeData = function() { - var result = Marionette.ItemView.prototype.serializeData.apply(this); + var result = Backbone.Marionette.ItemView.prototype.serializeData.apply(this); result._view = this; result._model = this.model; result._collection = this.collection; diff --git a/civicrm/packages/Net/Curl.php b/civicrm/packages/Net/Curl.php deleted file mode 100644 index 0037b4a19574e502482cdc8b0971bbe9b0d5edf7..0000000000000000000000000000000000000000 --- a/civicrm/packages/Net/Curl.php +++ /dev/null @@ -1,876 +0,0 @@ -<?php - -/** - * An Object Oriented interface to PHP's cURL extension - * - * PHP version 5.1.0+ - * - * Copyright (c) 2007, The PEAR Group - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - Neither the name of the The PEAR Group nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Net - * @package Net_Curl - * @author David Costa <gurugeek@php.net> - * @author Sterling Hughes <sterling@php.net> - * @author Joe Stump <joe@joestump.net> - * @author Philippe Jausions <jausions@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Revision: 1.15 $ - * @link http://pear.php.net/package/Net_Curl - */ - -/** - * Include PEAR package for error handling - */ -require_once 'PEAR.php'; - -/** - * Object-oriented implementation of the Curl extension - * - * @category Net - * @package Net_Curl - * @author David Costa <gurugeek@php.net> - * @author Sterling Hughes <sterling@php.net> - * @author Joe Stump <joe@joestump.net> - * @author Philippe Jausions <jausions@php.net> - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @link http://pear.php.net/package/Net_Curl - */ -class Net_Curl -{ - // {{{ Public Properties - /** - * The URL for cURL to work with - * - * @var string $url - * @access public - */ - var $url; - - /** - * The Username for standard HTTP Authentication - * - * @var string $username - * @access public - */ - var $username = ''; - - /** - * The Password for standard HTTP Authentication - * - * @var string $password - * @access public - */ - var $password = ''; - - /** - * The SSL version for the transfer - * - * @var integer $sslVersion - * @access public - */ - var $sslVersion; - - /** - * The filename of the SSL certificate - * - * @var string $sslCert - * @access public - */ - var $sslCert; - - /** - * The password corresponding to the certificate - * in the $sslCert property - * - * @var string $sslCertPasswd - * @access public - */ - var $sslCertPasswd; - - /** - * User Agent string when making an HTTP request - * - * @var string $userAgent - * @access public - */ - var $userAgent; - - /** - * Whether or not to include the header in the results - * of the CURL transfer - * - * @var boolean $header - */ - var $header = false; - - /** - * Whether or not to output debug information while executing a - * curl transfer - * - * @var boolean $verbose - * @access public - */ - var $verbose = false; - - /** - * Whether or not to display a progress meter for the current transfer - * - * @var boolean $progress - * @access public - */ - var $progress = false; - - /** - * Whether or not to suppress error messages - * - * @var boolean $mute - * @access public - */ - var $mute = false; - - /** - * Whether or not to follow HTTP Location headers. - * - * @var boolean $followLocation - * @access public - */ - var $followLocation = true; - - /** - * Whether or not to follow HTTP Location headers. - * - * @var boolean $follow_location - * @access public - * @deprecated - */ - var $follow_location = false; - - /** - * Time allowed for current transfer, in seconds. 0 means no limit - * - * @var int $timeout - * @access public - */ - var $timeout = 0; - - /** - * Whether or not to return the results of the - * current transfer - * - * @var boolean $returnTransfer - * @access public - */ - var $returnTransfer = true; - - /** - * Whether or not to return the results of the - * current transfer - * - * @var boolean $return_transfer - * @access public - * @deprecated - */ - var $return_transfer = false; - - /** - * The type of transfer to perform (ie. 'POST', 'GET', 'PUT', etc) - * - * @var string $type - * @access public - */ - var $type; - - /** - * The file to upload (PUT, or FTP methods) - * - * @var string $file - * @access public - */ - var $file; - - /** - * The file size of the file pointed to by the $file - * property - * - * @var integer $fileSize - * @access public - */ - var $fileSize; - - /** - * The file size of the file pointed to by the $file - * property - * - * @var integer $file_size - * @access public - * @deprecated - */ - var $file_size = false; - - - /** - * The cookies to send to the remote site - * - * @var array $cookies - * @access public - */ - var $cookies = array(); - - /** - * Additional HTTP headers to send to the remote site - * - * @var array $httpHeaders - * @access public - */ - var $httpHeaders = null; - - /** - * Additional HTTP headers to send to the remote site - * - * @var array $http_headers - * @access public - * @deprecated - */ - var $http_headers = false; - - /** - * The fields to send in a 'POST' request - * - * @var array $fields - * @access public - */ - var $fields; - - /** - * The proxy server to go through - * - * @var string $proxy - * @access public - */ - var $proxy; - - /** - * The username for the Proxy server - * - * @var string $proxyUser - * @access public - */ - var $proxyUser; - - /** - * The password for the Proxy server - * - * @var string $proxyPassword - * @access public - */ - var $proxyPassword; - - /** - * $verifyPeer - * - * FALSE to stop CURL from verifying the peer's certificate. - * Alternate certificates to verify against can be specified - * with the CURLOPT_CAINFO option or a certificate directory - * can be specified with the CURLOPT_CAPATH option. - * CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE - * if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2). - * - * @var boolean $verifyPeer - * @access public - */ - var $verifyPeer = true; - - /** - * $verifyHost - * - * 0 : to stop CURL from verifying the host's certificate. - * 1 : to check the existence of a common name in the SSL peer certificate. - * 2 : to check the existence of a common name and also verify that it - * matches the hostname provided. - * - * @var bool $verifyHost - * @access public - */ - var $verifyHost = 2; - - /** - * $caInfo - * - * Set value for CURLOPT_CAINFO. The name of a file holding one or more - * certificates to verify the peer with. This only makes sense when used - * in combination with CURLOPT_SSL_VERIFYPEER. curl-ca-bundle.crt is - * avaible on the Curl website http://curl.haxx.se/ for download inside - * the packages. - * - * @var string $caInfo - * @access public - */ - var $caInfo = ''; - - /** - * $caPath - * - * Set value for CURLOPT_CAPATH. A directory that holds multiple CA - * certificates. Use this option alongside CURLOPT_SSL_VERIFYPEER. - * - * @var string $caPath - * @access public - */ - var $caPath; - // }}} - // {{{ Private Properties - /** - * The current curl handle - * - * @var resource $_ch - * @access private - * @see Net_Curl::create() - */ - var $_ch = null; - - /** - * The file upload resource - * - * The CURLOPT_INFILE requires a file resource and not just a file name. - * This is used by execute to open the file. - * - * @var resource $_fp - * @access private - * @see Net_Curl::execute() - */ - var $_fp = null; - // }}} - - // {{{ __construct($url = '', $userAgent = '') - /** - * The Net_Curl PHP 5.x constructor, called when a new Net_Curl object - * is initialized (also called via 4.x constructor) - * - * @param string $url The URL to fetch (can be set using the $url - * property as well) - * @param string $userAgent The userAgent string (can be set using the - * $userAgent property as well) - * - * @access public - * @author Joe Stump <joe@joestump.net> - * @return void - */ - function __construct($url = '', $userAgent = '') - { - if (is_string($url) && strlen($url)) { - $this->url = $url; - } - - if (is_string($userAgent) && strlen($userAgent)) { - $this->userAgent = $userAgent; - } - } - // }}} - - // {{{ Net_Curl($url = '', $userAgent = '') - /** - * Net_Curl - * - * PHP 4.x constructor. - * - * @param string $url The URL to fetch (can be set using the $url - * property as well) - * @param string $userAgent The userAgent string (can be set using the - * $userAgent property as well) - * - * @access public - * @return void - * - function Net_Curl($url = '', $userAgent = '') - { - $this->__construct($url, $userAgent); - } - // }}} */ - - // {{{ execute() - /** - * Executes a prepared CURL transfer - * - * Run this function to execute your cURL request. If all goes well you - * should get a string (the output from the remote host regarding your - * request) or true (if you choose to output directly to the browser). If - * something fails then PEAR_Error is returned. - * - * <code> - * <?php - * require_once 'Net/Curl.php'; - * - * $curl = new Net_Curl('http://www.example.com'); - * $curl->fields = array('foo' => '1', 'bar' => 'apple'); - * $result = $curl->execute(); - * if (!PEAR::isError($result)) { - * echo $result; - * } - * ?> - * </code> - * - * @access public - * @author Sterling Hughes <sterling@php.net> - * @author Joe Stump <joe@joestump.net> - * @return PEAR_Error on failure, true/result on success - * @since PHP 4.0.5 - */ - function execute() - { - // Create cURL handle if it hasn't already been created - if (!is_resource($this->_ch)) { - $result = $this->create(); - if (PEAR::isError($result)) { - return $result; - } - } - - // Map the deprecated variables and throw a bunch of errors - $this->_mapDeprecatedVariables(); - - // Default return value is true. - $ret = true; - - // Basic stuff - $ret = curl_setopt($this->_ch, CURLOPT_URL, $this->url); - $ret = curl_setopt($this->_ch, CURLOPT_HEADER, $this->header); - - // Whether or not to return the transfer contents - if ($this->returnTransfer === true || $this->mute === true) { - $ret = curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, true); - } - - // HTTP Authentication - if ($this->username != '') { - $ret = curl_setopt($this->_ch, - CURLOPT_USERPWD, - $this->username . ':' . $this->password); - } - - // SSL Checks - if (isset($this->sslVersion)) { - $ret = curl_setopt($this->_ch, - CURLOPT_SSLVERSION, - $this->sslVersion); - } - - if (isset($this->sslCert)) { - $ret = curl_setopt($this->_ch, CURLOPT_SSLCERT, $this->sslCert); - } - - if (isset($this->sslCertPasswd)) { - $ret = curl_setopt($this->_ch, - CURLOPT_SSLCERTPASSWD, - $this->sslCertPasswd); - } - - // Proxy Related checks - if (isset($this->proxy)) { - $ret = curl_setopt($this->_ch, CURLOPT_PROXY, $this->proxy); - } - - if (isset($this->proxyUser) || isset($this->proxyPassword)) { - $ret = curl_setopt($this->_ch, - CURLOPT_PROXYUSERPWD, - $this->proxyUser . ':' . $this->proxyPassword); - } - - if (is_bool($this->verifyPeer)) { - if (!$this->setOption(CURLOPT_SSL_VERIFYPEER, $this->verifyPeer)) { - return PEAR::raiseError('Error setting CURLOPT_SSL_VERIFYPEER'); - } - } - - if (is_numeric($this->verifyHost) && $this->verifyHost >= 0 && - $this->verifyHost <= 2) { - if (!$this->setOption(CURLOPT_SSL_VERIFYHOST, $this->verifyHost)) { - return PEAR::raiseError('Error setting CURLOPT_SSL_VERIFYPEER'); - } - } - - if (is_bool($this->verifyPeer) && $this->verifyPeer == true) { - if (isset($this->caInfo) && strlen($this->caInfo)) { - if (file_exists($this->caInfo)) { - if (!$this->setOption(CURLOPT_CAINFO, $this->caInfo)) { - return PEAR::raiseError('Error setting CURLOPT_CAINFO'); - } - } else { - return PEAR::raiseError('Could not find CA info: '. - $this->caInfo); - } - } - - if (isset($this->caPath) && is_string($this->caPath)) { - if (!$this->setOption(CURLOPT_CAPATH, $this->caPath)) { - return PEAR::raiseError('Error setting CURLOPT_CAPATH'); - } - } - } - - // Transfer type - if (isset($this->type)) { - switch (strtolower($this->type)) { - case 'post': - $ret = curl_setopt($this->_ch, CURLOPT_POST, true); - break; - case 'put': - $ret = curl_setopt($this->_ch, CURLOPT_PUT, true); - break; - } - } - - // Transfer upload, etc. related - if (isset($this->file)) { - if (!file_exists($this->file)) { - return PEAR::raiseError('File does not exist: '.$this->file); - } - - $this->_fp = fopen($this->file, 'r'); - if (!is_resource($this->_fp)) { - return PEAR::raiseError('Could not open file: '.$this->file); - } - - if (!isset($this->fileSize)) { - $this->fileSize = filesize($this->file); - } - - $ret = curl_setopt($this->_ch, CURLOPT_INFILE, $this->_fp); - $ret = curl_setopt($this->_ch, CURLOPT_INFILESIZE, $this->fileSize); - $ret = curl_setopt($this->_ch, CURLOPT_UPLOAD, true); - } - - if (isset($this->fields)) { - $sets = null; - if (!isset($this->type)) { - $this->type = 'post'; - $ret = curl_setopt($this->_ch, CURLOPT_POST, true); - } - - // If fields is an array then turn it into a string. Sometimes - // cURL doesn't like fields as an array. - // Exception: if a value is prefixed with "@" and the rest of the - // value resolves to an existing file, then pass - // the values as the original array. - if (is_array($this->fields)) { - $sets = array(); - foreach ($this->fields as $key => $val) { - if (strlen($val) > 1 && $val{0} == '@') { - $file = substr($val, 1); - if (is_file($file) && is_readable($file)) { - $sets = null; - break; - } - } - $sets[] = urlencode($key) . '=' . urlencode($val); - } - } - - if (!is_null($sets)) { - $fields = implode('&', $sets); - } else { - $fields = $this->fields; - } - $ret = curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $fields); - } - - // Error related - if ($this->progress === true) { - $ret = curl_setopt($this->_ch, CURLOPT_PROGRESS, true); - } - - if ($this->verbose === true) { - $ret = curl_setopt($this->_ch, CURLOPT_VERBOSE, true); - } - - // If a Location: header is passed then follow it - $ret = curl_setopt($this->_ch, - CURLOPT_FOLLOWLOCATION, - $this->followLocation); - - // If a timeout is set and is greater then zero then set it - if (is_numeric($this->timeout) && $this->timeout > 0) { - $ret = curl_setopt($this->_ch, CURLOPT_TIMEOUT, $this->timeout); - } - - if (isset($this->userAgent)) { - $ret = curl_setopt($this->_ch, CURLOPT_USERAGENT, $this->userAgent); - } - - // Cookies - if (is_array($this->cookies) && count($this->cookies)) { - $cookieData = ''; - foreach ($this->cookies as $name => $value) { - $cookieData .= $name . '=' . $value . ';'; - } - - $ret = curl_setopt($this->_ch, CURLOPT_COOKIE, $cookieData); - } - - // Other HTTP headers - if ($this->httpHeaders !== null) { - if (is_array($this->httpHeaders)) { - $ret = curl_setopt($this->_ch, - CURLOPT_HTTPHEADER, - $this->httpHeaders); - } else { - return PEAR::raiseError('Net_Curl::$httpHeaders must be an array'); - } - } - - $ret = curl_exec($this->_ch); - - // Close the file before we return anything - if (is_resource($this->_fp)) { - fclose($this->_fp); - } - - if (curl_errno($this->_ch)) { - return PEAR::raiseError(curl_error($this->_ch), curl_errno($this->_ch)); - } - - // Check to make sure we get a 2XX/3XX code and not a 404 or something. - $info = $this->getInfo(); - if (!isset($info['http_code'])) { - return PEAR::raiseError('Unknown or invalid HTTP response'); - } else { - $type = substr($info['http_code'], 0, 1); - if ($type != 2 && $type != 3) { - return PEAR::raiseError('Unexpected HTTP code: ' . - $info['http_code']); - } - } - - return $ret; - } - // }}} - - // {{{ setOption($option, $value) - /** - * Sets an option for your cURL session. Please note that the cURL handler - * is NOT created before execute(). This is for error checking purposes. - * You should use setOption() in the following manner: - * - * <code> - * <?php - * - * require_once 'Net/Curl.php'; - * $curl = new Net_Curl('http://www.example.com'); - * $check = $curl->create(); - * if (!PEAR::isError($check)) { - * $curl->setOption(CURLOPT_FOO, 'bar'); - * $result = $curl->execute(); - * if (!PEAR::isError($result)) { - * echo $result; - * } - * } - * - * ?> - * </code> - * - * @param int $option cURL constant (ie. CURLOPT_URL) - * @param mixed $value The option's value - * - * @author Joe Stump <joe@joestump.net> - * @access public - * @return boolean - */ - function setOption($option, $value) - { - if (is_resource($this->_ch)) { - return curl_setopt($this->_ch, $option, $value); - } - - return false; - } - // }}} - - // {{{ getInfo() - /** - * Returns the info from the cURL session. PEAR_Error if you try and run - * this before you execute the session. - * - * @author Joe Stump <joe@joestump.net> - * @access public - * @return mixed PEAR_Error if there is no resource, info on success - */ - function getInfo() - { - if (is_resource($this->_ch)) { - return curl_getinfo($this->_ch); - } - - return PEAR::isError('cURL handler does not exist!'); - } - // }}} - - // {{{ create() - /** - * Creates a cURL resource. If curl_init() doesn't exist or we could not - * create a resource it will error out. - * - * @author Joe Stump <joe@joestump.net> - * @return boolean TRUE on success, PEAR_Error on failure - */ - function create() - { - if (!PEAR::loadExtension('curl')) { - return PEAR::raiseError('CURL extension is not available'); - } - if (!function_exists('curl_init')) { - return PEAR::raiseError('Function curl_init() not found'); - } - - $this->_ch = curl_init(); - if (!is_resource($this->_ch)) { - return PEAR::raiseError('Could not initialize cURL handler'); - } - - return true; - } - // }}} - - // {{{ verboseAll() - /** - * Sets verbose output - * - * Turns on super debugging mode by not suppressing errors, turning on - * verbose mode, showing headers and displaying progress. - * - * @access public - * @author David Costa <gurugeek@php.net> - * @return void - */ - function verboseAll() - { - $this->verbose = true; - $this->mute = false; - $this->header = true; - $this->progress = true; - } - // }}} - - // {{{ verbose_all() - /** - * Sets verbose output - * - * @access public - * @author David Costa <gurugeek@php.net> - * @return void - * @deprecated - */ - function verbose_all() - { - $this->verboseAll(); - PEAR::raiseError('Net_Curl::verbose_all() is deprecated! Please use Net_Curl::verboseAll()'." <br />\n", null, PEAR_ERROR_PRINT); - } - // }}} - - // {{{ close() - /** - * Closes the curl transfer and finishes the object (kinda ;) - * - * @access public - * @author Sterling Hughes <sterling@php.net> - * @return void - * @since PHP 4.0.5 - */ - function close() - { - if (is_resource($this->_ch)) { - curl_close($this->_ch); - } - } - // }}} - - // {{{ _mapDeprecatedVariables() - /** - * Maps deprecated variables into the appropriate places. It also throws - * the necessary notices. - * - * @author Joe Stump <joe@joestump.net> - * @access private - * @return void - */ - function _mapDeprecatedVariables() - { - $bad = array(); - if ($this->follow_location !== false) { - if ($this->follow_location > 0) { - $this->followLocation = true; - } else { - $this->followLocation = false; - } - - $bad[] = array('follow_location', 'followLocation'); - } - - if ($this->return_transfer !== false) { - if ($this->return_transfer > 0) { - $this->returnTransfer = true; - } else { - $this->returnTransfer = false; - } - - $bad[] = array('return_transfer', 'returnTransfer'); - } - - if ($this->file_size !== false) { - $this->fileSize = $this->file_size; - $bad[] = array('file_size', 'fileSize'); - } - - if ($this->http_headers !== false) { - $this->httpHeaders = $this->http_headers; - $bad[] = array('http_headers', 'httpHeaders'); - } - - foreach ($bad as $map) { - PEAR::raiseError('Net_Curl::$'. $map[0]. ' is deprecated! Please use Net_Curl::$'.$map[1]." instead! <br />\n", null, PEAR_ERROR_PRINT); - } - } - // }}} - - // {{{ __destruct() - /** - * PHP 5.x destructor. - * - * Runs Net_Curl::close() to make sure we close our cURL connection. - * - * @author Joe Stump <joe@joestump.net> - * @see Net_Curl::close() - */ - function __destruct() - { - $this->close(); - } - // }}} -} - -?> diff --git a/civicrm/packages/Net/DIME.php b/civicrm/packages/Net/DIME.php deleted file mode 100644 index ba327835949ea7c2d4de20a9aae9cc269c835373..0000000000000000000000000000000000000000 --- a/civicrm/packages/Net/DIME.php +++ /dev/null @@ -1,693 +0,0 @@ -<?php -/** - * This file holds the Net_DIME_Message and Net_DIME_Record classes and all - * constants defined for the Net_DIME package. - * - * PHP versions 4 and 5 - * - * Copyright (c) 2002-2007 The PHP Group - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the authors may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Networking - * @package Net_DIME - * @author Shane Caraveo <shane@caraveo.com> - * @author Ralf Hofmann <ralf.hofmann@verdisoft.com> - * @author Jan Schneider <jan@horde.org> - * @copyright 2002-2007 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://pear.php.net/package/Net_DIME - * @example test/dime_record_test.php For example of usage. - */ - -/** PEAR */ -require_once 'PEAR.php'; - -define('NET_DIME_TYPE_UNCHANGED', 0x00); -define('NET_DIME_TYPE_MEDIA', 0x01); -define('NET_DIME_TYPE_URI', 0x02); -define('NET_DIME_TYPE_UNKNOWN', 0x03); -define('NET_DIME_TYPE_NONE', 0x04); - -define('NET_DIME_VERSION', 0x0001); - -define('NET_DIME_RECORD_HEADER', 12); - -define('NET_DIME_FLAGS', 0); -define('NET_DIME_OPTS_LEN', 1); -define('NET_DIME_ID_LEN', 2); -define('NET_DIME_TYPE_LEN', 3); -define('NET_DIME_DATA_LEN', 4); -define('NET_DIME_OPTS', 5); -define('NET_DIME_ID', 6); -define('NET_DIME_TYPE', 7); -define('NET_DIME_DATA', 8); - -/** - * Net_DIME_Record encodes and decodes single DIME records. - * - * @category Networking - * @package Net_DIME - * @author Shane Caraveo <shane@caraveo.com> - * @author Ralf Hofmann <ralf.hofmann@verdisoft.com> - * @author Jan Schneider <jan@horde.org> - * @copyright 2002-2007 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @see Net_DIME_Message - * @link http://pear.php.net/package/Net_DIME - * @link http://www.ietf.org/internet-drafts/draft-nielsen-dime-02.txt - */ -class Net_DIME_Record { - - // these are used to hold the padded length - var $OPTS_LENGTH = 0; - var $ID_LENGTH = 0; - var $TYPE_LENGTH = 0; - var $DATA_LENGTH = 0; - var $_haveOpts = false; - var $_haveID = false; - var $_haveType = false; - var $_haveData = false; - var $debug = false; - var $padstr = "\0"; - - /** - * Elements - * [NET_DIME_FLAGS], 16 bits: VERSION:MB:ME:CF:TYPE_T - * [NET_DIME_OPTS_LEN], 16 bits: OPTIONS_LENGTH - * [NET_DIME_ID_LEN], 16 bits: ID_LENGTH - * [NET_DIME_TYPE_LEN], 16 bits: TYPE_LENGTH - * [NET_DIME_DATA_LEN], 32 bits: DATA_LENGTH - * [NET_DIME_OPTS] : OPTIONS - * [NET_DIME_ID] : ID - * [NET_DIME_TYPE] : TYPE - * [NET_DIME_DATA] : DATA - */ - var $Elements = array(NET_DIME_FLAGS => 0, NET_DIME_OPTS_LEN => 0, - NET_DIME_ID_LEN => 0, NET_DIME_TYPE_LEN => 0, - NET_DIME_DATA_LEN => 0, - NET_DIME_OPTS => '', - NET_DIME_ID => '', - NET_DIME_TYPE => '', - NET_DIME_DATA => ''); - - function __construct($debug = false) - { - $this->debug = $debug; - if ($debug) { - $this->padstr = '*'; - } - } - - function setMB() - { - $this->Elements[NET_DIME_FLAGS] |= 0x0400; - } - - function setME() - { - $this->Elements[NET_DIME_FLAGS] |= 0x0200; - } - - function setCF() - { - $this->Elements[NET_DIME_FLAGS] |= 0x0100; - } - - function isChunk() - { - return $this->Elements[NET_DIME_FLAGS] & 0x0100; - } - - function isEnd() - { - return $this->Elements[NET_DIME_FLAGS] & 0x0200; - } - - function isStart() - { - return $this->Elements[NET_DIME_FLAGS] & 0x0400; - } - - function getID() - { - return $this->Elements[NET_DIME_ID]; - } - - function getType() - { - return $this->Elements[NET_DIME_TYPE]; - } - - function getData() - { - return $this->Elements[NET_DIME_DATA]; - } - - function getDataLength() - { - return $this->Elements[NET_DIME_DATA_LEN]; - } - - function setType($typestring, $type = NET_DIME_TYPE_UNKNOWN) - { - $typelen = strlen($typestring) & 0xFFFF; - $type = $type << 4; - $this->Elements[NET_DIME_FLAGS] = ($this->Elements[NET_DIME_FLAGS] & 0xFF0F) | $type; - $this->Elements[NET_DIME_TYPE_LEN] = $typelen; - $this->TYPE_LENGTH = $this->_getPadLength($typelen); - $this->Elements[NET_DIME_TYPE] = $typestring; - } - - function generateID() - { - $id = md5(time()); - $this->setID($id); - return $id; - } - - function setID($id) - { - $idlen = strlen($id) & 0xFFFF; - $this->Elements[NET_DIME_ID_LEN] = $idlen; - $this->ID_LENGTH = $this->_getPadLength($idlen); - $this->Elements[NET_DIME_ID] = $id; - } - - function setData($data, $size = 0) - { - $datalen = $size ? $size : strlen($data); - $this->Elements[NET_DIME_DATA_LEN] = $datalen; - $this->DATA_LENGTH = $this->_getPadLength($datalen); - $this->Elements[NET_DIME_DATA] = $data; - } - - function encode() - { - // Insert version. - $this->Elements[NET_DIME_FLAGS] = ($this->Elements[NET_DIME_FLAGS] & 0x07FF) | (NET_DIME_VERSION << 11); - - // The real DIME encoding. - $format = '%c%c%c%c%c%c%c%c%c%c%c%c' - . '%' . $this->OPTS_LENGTH . 's' - . '%' . $this->ID_LENGTH . 's' - . '%' . $this->TYPE_LENGTH . 's' - . '%' . $this->DATA_LENGTH . 's'; - - return sprintf($format, - ($this->Elements[NET_DIME_FLAGS] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_FLAGS] & 0x000000FF), - ($this->Elements[NET_DIME_OPTS_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_OPTS_LEN] & 0x000000FF), - ($this->Elements[NET_DIME_ID_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_ID_LEN] & 0x000000FF), - ($this->Elements[NET_DIME_TYPE_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_TYPE_LEN] & 0x000000FF), - ($this->Elements[NET_DIME_DATA_LEN] & 0xFF000000) >> 24, - ($this->Elements[NET_DIME_DATA_LEN] & 0x00FF0000) >> 16, - ($this->Elements[NET_DIME_DATA_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_DATA_LEN] & 0x000000FF), - str_pad($this->Elements[NET_DIME_OPTS], $this->OPTS_LENGTH, $this->padstr), - str_pad($this->Elements[NET_DIME_ID], $this->ID_LENGTH, $this->padstr), - str_pad($this->Elements[NET_DIME_TYPE], $this->TYPE_LENGTH, $this->padstr), - str_pad($this->Elements[NET_DIME_DATA], $this->DATA_LENGTH, $this->padstr)); - } - - function _getPadLength($len) - { - $pad = 0; - if ($len) { - $pad = $len % 4; - if ($pad) $pad = 4 - $pad; - } - return $len + $pad; - } - - function decode($data) - { - // Real DIME decoding. - $this->Elements[NET_DIME_FLAGS] = (hexdec(bin2hex($data[0])) << 8) - + hexdec(bin2hex($data[1])); - $this->Elements[NET_DIME_OPTS_LEN] = (hexdec(bin2hex($data[2])) << 8) - + hexdec(bin2hex($data[3])); - $this->Elements[NET_DIME_ID_LEN] = (hexdec(bin2hex($data[4])) << 8) - + hexdec(bin2hex($data[5])); - $this->Elements[NET_DIME_TYPE_LEN] = (hexdec(bin2hex($data[6])) << 8) - + hexdec(bin2hex($data[7])); - $this->Elements[NET_DIME_DATA_LEN] = (hexdec(bin2hex($data[8])) << 24) - + (hexdec(bin2hex($data[9])) << 16) - + (hexdec(bin2hex($data[10])) << 8) - + hexdec(bin2hex($data[11])); - $p = 12; - - $version = (($this->Elements[NET_DIME_FLAGS] >> 11) & 0x001F); - - if ($version == NET_DIME_VERSION) { - $this->OPTS_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_OPTS_LEN]); - $this->ID_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_ID_LEN]); - $this->TYPE_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_TYPE_LEN]); - $this->DATA_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_DATA_LEN]); - - $datalen = strlen($data); - $this->Elements[NET_DIME_OPTS] = substr($data, $p, $this->Elements[NET_DIME_OPTS_LEN]); - $this->_haveOpts = (strlen($this->Elements[NET_DIME_OPTS]) == $this->Elements[NET_DIME_OPTS_LEN]); - if ($this->_haveOpts) { - $p += $this->OPTS_LENGTH; - $this->Elements[NET_DIME_ID] = substr($data, $p, $this->Elements[NET_DIME_ID_LEN]); - $this->_haveID = (strlen($this->Elements[NET_DIME_ID]) == $this->Elements[NET_DIME_ID_LEN]); - if ($this->_haveID) { - $p += $this->ID_LENGTH; - $this->Elements[NET_DIME_TYPE] = substr($data, $p, $this->Elements[NET_DIME_TYPE_LEN]); - $this->_haveType = (strlen($this->Elements[NET_DIME_TYPE]) == $this->Elements[NET_DIME_TYPE_LEN]); - if ($this->_haveType) { - $p += $this->TYPE_LENGTH; - $this->Elements[NET_DIME_DATA] = substr($data, $p, $this->Elements[NET_DIME_DATA_LEN]); - $this->_haveData = (strlen($this->Elements[NET_DIME_DATA]) == $this->Elements[NET_DIME_DATA_LEN]); - if ($this->_haveData) { - $p += $this->DATA_LENGTH; - } else { - $p += strlen($this->Elements[NET_DIME_DATA]); - } - } else { - $p += strlen($this->Elements[NET_DIME_TYPE]); - } - } else { - $p += strlen($this->Elements[NET_DIME_ID]); - } - } else { - $p += strlen($this->Elements[NET_DIME_OPTS]); - } - } - return substr($data, $p); - } - - function addData($data) - { - $datalen = strlen($data); - $p = 0; - if (!$this->_haveOpts) { - $have = strlen($this->Elements[NET_DIME_OPTS]); - $this->Elements[NET_DIME_OPTS] .= substr($data, $p, $this->Elements[NET_DIME_OPTS_LEN] - $have); - $this->_haveOpts = strlen($this->Elements[NET_DIME_OPTS]) == $this->Elements[NET_DIME_OPTS_LEN]; - if (!$this->_haveOpts) { - return null; - } - $p += $this->OPTS_LENGTH - $have; - } - if (!$this->_haveID) { - $have = strlen($this->Elements[NET_DIME_ID]); - $this->Elements[NET_DIME_ID] .= substr($data, $p, $this->Elements[NET_DIME_ID_LEN] - $have); - $this->_haveID = strlen($this->Elements[NET_DIME_ID]) == $this->Elements[NET_DIME_ID_LEN]; - if (!$this->_haveID) { - return null; - } - $p += $this->ID_LENGTH - $have; - } - if (!$this->_haveType && $p < $datalen) { - $have = strlen($this->Elements[NET_DIME_TYPE]); - $this->Elements[NET_DIME_TYPE] .= substr($data, $p, $this->Elements[NET_DIME_TYPE_LEN] - $have); - $this->_haveType = strlen($this->Elements[NET_DIME_TYPE]) == $this->Elements[NET_DIME_TYPE_LEN]; - if (!$this->_haveType) { - return null; - } - $p += $this->TYPE_LENGTH - $have; - } - if (!$this->_haveData && $p < $datalen) { - $have = strlen($this->Elements[NET_DIME_DATA]); - $this->Elements[NET_DIME_DATA] .= substr($data, $p, $this->Elements[NET_DIME_DATA_LEN] - $have); - $this->_haveData = strlen($this->Elements[NET_DIME_DATA]) == $this->Elements[NET_DIME_DATA_LEN]; - if (!$this->_haveData) { - return null; - } - $p += $this->DATA_LENGTH - $have; - } - return substr($data, $p); - } -} - -/** - * Net_DIME_Message enables you to manipulate and build a DIME encapsulated - * message. - * - * @category Networking - * @package Net_DIME - * @author Shane Caraveo <shane@caraveo.com> - * @author Ralf Hofmann <ralf.hofmann@verdisoft.com> - * @author Jan Schneider <jan@horde.org> - * @copyright 2002-2007 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @see Net_DIME_Message - * @link http://pear.php.net/package/Net_DIME - * @link http://www.ietf.org/internet-drafts/draft-nielsen-dime-02.txt - * @example test/dime_message_test.php For example of usage. - * @todo - Lots of stuff needs to be tested. - * - Definitely have to go through DIME spec and make things work - * right, most importantly, sec 3.3. - * - Make examples, document. - */ -class Net_DIME_Message { - - var $record_size = 4096; - var $parts = array(); - var $currentPart = -1; - var $stream = null; - var $_currentRecord; - var $_proc = array(); - var $type; - var $typestr; - var $mb = 1; - var $me = 0; - var $cf = 0; - var $id = null; - var $debug = false; - - /** - * Constructor. - * - * @todo Integrate with PHP streams. - * - * @param resource $stream A file pointer. - * @param integer $record_size - * @param boolean $debug - */ - function __construct($stream = null, $record_size = 4096, - $debug = false) - { - $this->stream = $stream; - $this->record_size = $record_size; - $this->debug = $debug; - } - - function _makeRecord($data, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $record = new Net_DIME_Record($this->debug); - if ($this->mb) { - $record->setMB(); - // all subsequent records are not message begin! - $this->mb = 0; - } - if ($this->me) { - $record->setME(); - } - if ($this->cf) { - $record->setCF(); - } - $record->setData($data); - $record->setType($typestr,$type); - if ($id) { - $record->setID($id); - } - - return $record->encode(); - } - - function startChunk($data, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $this->me = 0; - $this->cf = 1; - $this->type = $type; - $this->typestr = $typestr; - if ($id) { - $this->id = $id; - } else { - $this->id = md5(time()); - } - - return $this->_makeRecord($data, $this->typestr, $this->id, $this->type); - } - - function doChunk($data) - { - $this->me = 0; - $this->cf = 1; - - return $this->_makeRecord($data, null, null, NET_DIME_TYPE_UNCHANGED); - } - - function endChunk() - { - $this->cf = 0; - $data = null; - $rec = $this->_makeRecord($data, null, null, NET_DIME_TYPE_UNCHANGED); - $this->id = 0; - $this->cf = 0; - $this->id = 0; - $this->type = NET_DIME_TYPE_UNKNOWN; - $this->typestr = null; - - return $rec; - } - - function endMessage() - { - $this->me = 1; - $data = null; - $rec = $this->_makeRecord($data, null, null, NET_DIME_TYPE_NONE); - $this->me = 0; - $this->mb = 1; - $this->id = 0; - - return $rec; - } - - /** - * Creates DIME records from a chunk of data and writes them to the stream - * provided in the constructor. - * - * @param string $data - * @param string $typestr - * @param string $id - * @param integer $type One of the NET_DIME_TYPE_* constants. - */ - function sendData($data, $typestr='', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $len = strlen($data); - if ($len > $this->record_size) { - $chunk = substr($data, 0, $this->record_size); - $p = $this->record_size; - $rec = $this->startChunk($chunk, $typestr, $id, $type); - fwrite($this->stream, $rec); - while ($p < $len) { - $chunk = substr($data, $p, $this->record_size); - $p += $this->record_size; - $rec = $this->doChunk($chunk); - fwrite($this->stream, $rec); - } - $rec = $this->endChunk(); - fwrite($this->stream, $rec); - return; - } - $rec = $this->_makeRecord($data, $typestr, $id, $type); - fwrite($this->stream, $rec); - } - - function sendEndMessage() - { - $rec = $this->endMessage(); - fwrite($this->stream, $rec); - } - - /** - * Reads a file, creates records and writes them to the stream provided in - * the constructor. - * - * @param string $filename A file name. - * @param string $typestr - * @param string $id - * @param integer $type One of the NET_DIME_TYPE_* constants. - */ - function sendFile($filename, $typestr='', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $f = fopen($filename, 'rb'); - if ($f) { - if ($data = fread($f, $this->record_size)) { - $this->startChunk($data, $typestr, $id, $type); - } - while ($data = fread($f, $this->record_size)) { - $this->doChunk($data, $typestr, $id, $type); - } - $this->endChunk(); - fclose($f); - } - } - - /** - * Encodes data in DIME. - * - * @param string $data - * @param string $typestr - * @param string $id - * @param integer $type One of the NET_DIME_TYPE_* constants. - */ - function encodeData($data, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $len = strlen($data); - $resp = ''; - - if ($len > $this->record_size) { - $chunk = substr($data, 0, $this->record_size); - $p = $this->record_size; - $resp .= $this->startChunk($chunk, $typestr, $id, $type); - while ($p < $len) { - $chunk = substr($data, $p, $this->record_size); - $p += $this->record_size; - $resp .= $this->doChunk($chunk); - } - $resp .= $this->endChunk(); - } else { - $resp .= $this->_makeRecord($data, $typestr, $id, $type); - } - - return $resp; - } - - /** - * Reads a file, creates records and writes them to the stream provided in - * the constructor. - * - */ - function encodeFile($filename, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $f = fopen($filename, 'rb'); - if ($f) { - if ($data = fread($f, $this->record_size)) { - $resp = $this->startChunk($data, $typestr, $id, $type); - } - while ($data = fread($f, $this->record_size)) { - $resp = $this->doChunk($data, $typestr, $id, $type); - } - $resp = $this->endChunk(); - fclose($f); - } - - return $resp; - } - - /** - * Creates Net_DIME_Records from provided data. - */ - function _processData(&$data) - { - $leftover = null; - if (!$this->_currentRecord) { - $this->_currentRecord = new Net_DIME_Record($this->debug); - $data = $this->_currentRecord->decode($data); - } else { - $data = $this->_currentRecord->addData($data); - } - - if ($this->_currentRecord->_haveData) { - if (count($this->parts) == 0 && - !$this->_currentRecord->isStart()) { - return PEAR::raiseError('First Message is not a DIME begin record!'); - } - - if ($this->_currentRecord->isEnd() && - $this->_currentRecord->getDataLength() == 0) { - return; - } - - if ($this->currentPart < 0 && !$this->_currentRecord->isChunk()) { - $this->parts[] = array(); - $this->currentPart = count($this->parts) - 1; - $this->parts[$this->currentPart]['id'] = $this->_currentRecord->getID(); - $this->parts[$this->currentPart]['type'] = $this->_currentRecord->getType(); - $this->parts[$this->currentPart]['data'] = $this->_currentRecord->getData(); - $this->currentPart = -1; - } else { - if ($this->currentPart < 0) { - $this->parts[] = array(); - $this->currentPart = count($this->parts) - 1; - $this->parts[$this->currentPart]['id'] = $this->_currentRecord->getID(); - $this->parts[$this->currentPart]['type'] = $this->_currentRecord->getType(); - $this->parts[$this->currentPart]['data'] = $this->_currentRecord->getData(); - } else { - $this->parts[$this->currentPart]['data'] .= $this->_currentRecord->getData(); - if (!$this->_currentRecord->isChunk()) { - // We reached the end of the chunk. - $this->currentPart = -1; - } - } - } - if (!$this->_currentRecord->isEnd()) { - $this->_currentRecord = null; - } - } - - return; - } - - /** - * Decodes a DIME encode string of data. - */ - function decodeData(&$data) - { - while (strlen($data) >= NET_DIME_RECORD_HEADER) { - $err = $this->_processData($data); - if (PEAR::isError($err)) { - return $err; - } - } - } - - /** - * Reads the stream and creates an array of records. - * - * The method can accept the start of a previously read buffer. This is - * useful in situations where you need to read headers before discovering - * that the data is DIME encoded, such as in the case of reading an HTTP - * response. - */ - function read($buf = null) - { - while ($data = fread($this->stream, 8192)) { - if ($buf) { - $data = $buf . $data; - $buf = null; - } - if ($this->debug) { - echo 'read: ' . strlen($data) . " bytes\n"; - } - $err = $this->decodeData($data); - if (PEAR::isError($err)) { - return $err; - } - - // Store any leftover data to be used again. - // Should be < NET_DIME_RECORD_HEADER bytes. - $buf = $data; - } - - if (!$this->_currentRecord || !$this->_currentRecord->isEnd()) { - return PEAR::raiseError('reached stream end without end record'); - } - } -} diff --git a/civicrm/packages/VERSIONS.php b/civicrm/packages/VERSIONS.php index bb33761e99a49cfb8ccf4b19eb47a1902d7e2afb..13510eb9e3728fa9869ece7f4a33edd09dbc42ae 100644 --- a/civicrm/packages/VERSIONS.php +++ b/civicrm/packages/VERSIONS.php @@ -115,11 +115,7 @@ * HTML_QuickForm_Controller 1.0.9 PHP 3 local changes * HTML_Template_IT 1.2.1 BSD 3-cl. * Log 1.11.5 X11 - * Mail 1.2.0 PHP 2 local changes - * Mail_Mime 1.8.0 BSD 3-cl. local changes * Mail_mimeDecode 1.5.1 BSD 3-cl. - * Net_Curl 1.2.5 BSD 3-cl. - * Net_DIME 1.0.1 BSD 3-cl. * Net_URL 1.0.15 BSD 3-cl. * Pager 2.4.8 BSD 3-cl. * PEAR 1.9.0 PHP 3.0 diff --git a/civicrm/packages/jquery/plugins/jquery.tableHeader.js b/civicrm/packages/jquery/plugins/jquery.tableHeader.js index fa63076ae203dccd15645a066f3764da384cbf44..71eb1b7290eddc84db9ef665ec5546fa9771f724 100644 --- a/civicrm/packages/jquery/plugins/jquery.tableHeader.js +++ b/civicrm/packages/jquery/plugins/jquery.tableHeader.js @@ -18,7 +18,7 @@ $(document).ready(function() { if (html == ' ') { html = ' '; } - if ($(this).children().size() == 0) { + if ($(this).children().length == 0) { html = '<span>'+ html +'</span>'; } diff --git a/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js b/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js index 2e42cc13d07bd025ceb2f249aa4b3c74c301251a..d8d93ac10e62cab96b6fe4b70977a93a08de3dac 100755 --- a/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js +++ b/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js @@ -580,10 +580,10 @@ obj = this._get_node(obj); if(obj === -1) { return this.get_container().find("> ul > li:first-child"); } if(!obj.length) { return false; } - if(strict) { return (obj.nextAll("li").size() > 0) ? obj.nextAll("li:eq(0)") : false; } + if(strict) { return (obj.nextAll("li").length > 0) ? obj.nextAll("li:eq(0)") : false; } if(obj.hasClass("jstree-open")) { return obj.find("li:eq(0)"); } - else if(obj.nextAll("li").size() > 0) { return obj.nextAll("li:eq(0)"); } + else if(obj.nextAll("li").length > 0) { return obj.nextAll("li:eq(0)"); } else { return obj.parentsUntil(".jstree","li").next("li").eq(0); } }, _get_prev : function (obj, strict) { @@ -1976,7 +1976,7 @@ }, get_text : function (obj, lang) { obj = this._get_node(obj) || this.data.ui.last_selected; - if(!obj.size()) { return false; } + if(!obj.length) { return false; } var langs = this._get_settings().languages, s = this._get_settings().core.html_titles; if($.isArray(langs) && langs.length) { @@ -1996,7 +1996,7 @@ }, set_text : function (obj, val, lang) { obj = this._get_node(obj) || this.data.ui.last_selected; - if(!obj.size()) { return false; } + if(!obj.length) { return false; } var langs = this._get_settings().languages, s = this._get_settings().core.html_titles, tmp; @@ -3201,7 +3201,7 @@ _is_loaded : function (obj) { var s = this._get_settings().xml_data; obj = this._get_node(obj); - return obj == -1 || !obj || (!s.ajax && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0; + return obj == -1 || !obj || (!s.ajax && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0; }, load_node_xml : function (obj, s_call, e_call) { var s = this.get_settings().xml_data, @@ -4028,7 +4028,7 @@ load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_html(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); }, _is_loaded : function (obj) { obj = this._get_node(obj); - return obj == -1 || !obj || (!this._get_settings().html_data.ajax && !$.isFunction(this._get_settings().html_data.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0; + return obj == -1 || !obj || (!this._get_settings().html_data.ajax && !$.isFunction(this._get_settings().html_data.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0; }, load_node_html : function (obj, s_call, e_call) { var d, diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index 83524742a31e025e2b8b2f7b38e3e35953124ab4..d2d501d26a7269a62d69b124f710f2b7c42d5917 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -15,6 +15,17 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress +## CiviCRM 5.29.0 + +Released September 2, 2020 + +- **[Synopsis](release-notes/5.29.0.md#synopsis)** +- **[Features](release-notes/5.29.0.md#features)** +- **[Bugs resolved](release-notes/5.29.0.md#bugs)** +- **[Miscellany](release-notes/5.29.0.md#misc)** +- **[Credits](release-notes/5.29.0.md#credits)** +- **[Feedback](release-notes/5.29.0.md#feedback)** + ## CiviCRM 5.28.4 Released September 1, 2020 diff --git a/civicrm/release-notes/5.28.3.md b/civicrm/release-notes/5.28.3.md index ceac9f06d6742207df42d2938532b3b2dba6d878..4f83984cdae76ec0c3f70e3ec7d698d75b5a1362 100644 --- a/civicrm/release-notes/5.28.3.md +++ b/civicrm/release-notes/5.28.3.md @@ -21,14 +21,8 @@ Released August 22, 2020 ## <a name="bugs"></a>Bugs resolved * **_CiviContribute_: Re-enable "Cancel" button in backend UI for recurring contributions ([dev/core#1961](https://lab.civicrm.org/dev/core/-/issues/1961): [#18204](https://github.com/civicrm/civicrm-core/pull/18204))** - - Only affects some payment-processors - * **_CiviContribute_: Contributions sometimes display "RoundingNecessaryException" ([dev/core#1959](https://lab.civicrm.org/dev/core/-/issues/1959): [#18206](https://github.com/civicrm/civicrm-core/pull/18206))** * **_Dedupe_: Merging certain contacts raises DB error ([dev/core#1964](https://lab.civicrm.org/dev/core/-/issues/1964): [#18223](https://github.com/civicrm/civicrm-core/pull/18223))** - - Only affects contacts with dedupe exception records - * **_Dedupe_: Deleted contacts are incorrectly displayed ([#18214](https://github.com/civicrm/civicrm-core/pull/18214))** * **_Drupal Views_: Filtering on multi-select custom fields ([dev/core#1966](https://lab.civicrm.org/dev/core/-/issues/1966): [drupal#615](https://github.com/civicrm/civicrm-drupal/pull/615), [drupal#618](https://github.com/civicrm/civicrm-drupal/pull/618))** * **_Quick Search_: Deleted contacts are incorrectly displayed ([#18213](https://github.com/civicrm/civicrm-core/pull/18213))** diff --git a/civicrm/release-notes/5.29.0.md b/civicrm/release-notes/5.29.0.md new file mode 100644 index 0000000000000000000000000000000000000000..5548efbe97974ed88e2fd728556ce3d17bd37011 --- /dev/null +++ b/civicrm/release-notes/5.29.0.md @@ -0,0 +1,1139 @@ +# CiviCRM 5.29.0 + +Released September 2, 2020 + +- **[Synopsis](#synopsis)** +- **[Features](#features)** +- **[Bugs resolved](#bugs)** +- **[Miscellany](#misc)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| **Change the database schema?** | **yes** | +| **Alter the API?** | **yes** | +| **Require attention to configuration options?** | **yes** | +| **Fix problems installing or upgrading to a previous version?** | **yes** | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Contact export is very slow, creates huge temporary tables + ([dev/core#1725](https://lab.civicrm.org/dev/core/-/issues/1725): + [17458](https://github.com/civicrm/civicrm-core/pull/17458))** + + Improves performance when exporting contacts by only exporting primary address + fields. + +- **Allow different output formats for CiviReport results, like native excel + format, and untangle code + ([dev/core#1855](https://lab.civicrm.org/dev/core/-/issues/1855): + [17901](https://github.com/civicrm/civicrm-core/pull/17901))** + + This makes it possible to extend CiviReport by reworking the PDF and CSV + generation code as new output handlers, and allowing for extension developers + to add new ones. + +- **Icon in status message after saving a civireport is misleading + ([dev/report#43](https://lab.civicrm.org/dev/report/-/issues/43): + [17863](https://github.com/civicrm/civicrm-core/pull/17863))** + + Improves icons in Status Messages for reports. + +- **Show cron warning on Scheduled Jobs admin page + ([18065](https://github.com/civicrm/civicrm-core/pull/18065))** + + A pop-up message will appear on the Scheduled Jobs page if cron has not been + running. + +- **Add APIv4 and pseudoconstants for RelationshipCache + ()** + +- **RelationshipCache - Add a high-level index to facilitate relationship + queries (more fields) + ([17781](https://github.com/civicrm/civicrm-core/pull/17781) and + [17879](https://github.com/civicrm/civicrm-core/pull/17879))** + + A new table caches relationships to provide a single resource for tracking + relationships from a specified contact's perspective. The RelationshipCache + records the "near" and "far" contacts and relationship names along with the + orientation and relationship type. Each record from `civicrm_relationship` + will have two records in `civicrm_relationship_cache`, one for each + orientation. + +- **Remove ORDER BY and GROUP BY from alphabetQuery to improve performance + ([16877](https://github.com/civicrm/civicrm-core/pull/16877))** + +- **Differentiate smart group from regular group using icon in select2 field + ([dev/core#785](https://lab.civicrm.org/dev/core/-/issues/785): + [17927](https://github.com/civicrm/civicrm-core/pull/17927))** + + Improves Group's select2 by adding icon next to smart groups. + +- **Feature: Ability to enable SSL for database connection. + ([dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137): + [17706](https://github.com/civicrm/civicrm-core/pull/17706))** + + Makes it so sites can use ssl to connect to mysql. + +- **Add in hook to allow for altering of Profile Schemas + ([dev/core#1913](https://lab.civicrm.org/dev/core/-/issues/1913): + [17986](https://github.com/civicrm/civicrm-core/pull/17986))** + + Extensions that allow additional fields to be added to profiles can now add + schemas so that fields can be added from new entities. + +- **Why not make the buttons flat? + ([18054](https://github.com/civicrm/civicrm-core/pull/18054))** + + Buttons no longer have a gradient background. + +- **SystemCheck: add ability to efficiently run only specified checks + ([17824](https://github.com/civicrm/civicrm-core/pull/17824))** + + The APIv4 system check action can now filter on name, running just the + specified check(s). + +- **Change inform-icon to fa-info-circle + ([18001](https://github.com/civicrm/civicrm-core/pull/18001))** + + The information icon is now produced with Font Awesome rather than a sprite. + +- **APIv4 - Add keyword to select all custom fields + ([17955](https://github.com/civicrm/civicrm-core/pull/17955))** + + You can now use a wildcard to select all custom fields on an entity without + specifying each individually. + +- **Improve caching of current domain + ([17916](https://github.com/civicrm/civicrm-core/pull/17916))** + + Domain information is now cached in one central place, making it more + straightforward to use and flush. + +- **APIv4 - Specify BridgeEntities to assist with joins + ([17808](https://github.com/civicrm/civicrm-core/pull/17808))** + + Minor entities that intermediate many-to-many relationships are now specified + as bridge entities and extend from a new base class. This will allow them to + be distinguished better in the future. + +- **APIv4 - Add shorthand for setCheckPermissions() + ([17834](https://github.com/civicrm/civicrm-core/pull/17834) and + [17874](https://github.com/civicrm/civicrm-core/pull/17874))** + + The CRUD functions of APIv4 now accept a boolean argument that corresponds to + the value sent to `setCheckPermissions()`. This provides a shorthand for a + very common use case. + +- **Add search extension + ([17775](https://github.com/civicrm/civicrm-core/pull/17775), + [17789](https://github.com/civicrm/civicrm-core/pull/17789), and + [17864](https://github.com/civicrm/civicrm-core/pull/17864))** + + An extension that replaces Search Builder is now shipped with core, though it + is hidden from the extensions user interface because it is currently + incompatible with the default theming framework. + +### CiviContribute + +- **Add configure and priceset url icons on public contribution & event pages + ([dev/core#1905](https://lab.civicrm.org/dev/core/-/issues/1905): + [17942](https://github.com/civicrm/civicrm-core/pull/17942), + [18088](https://github.com/civicrm/civicrm-core/pull/18088) and + [18064](https://github.com/civicrm/civicrm-core/pull/18064))** + + A "Configure" button now appears to administrators when viewing a contribution + page or event, or a priceset within either, from the frontend. This links to + the corresponding form to administer the contribution page, event, or + priceset. + +### CiviEvent + +- **Move Event Cart to extension + ([17741](https://github.com/civicrm/civicrm-core/pull/17741), + [17743](https://github.com/civicrm/civicrm-core/pull/17743), + [17861](https://github.com/civicrm/civicrm-core/pull/17861), + [17884](https://github.com/civicrm/civicrm-core/pull/17884), + [17885](https://github.com/civicrm/civicrm-core/pull/17885), and + [17891](https://github.com/civicrm/civicrm-core/pull/17891))** + + The event cart features have been moved to a separate extension that is + shipped with core. + +### CiviMember + +- **Option to update expired memberships as part of the job.process_membership + ([dev/membership#18](https://lab.civicrm.org/dev/membership/-/issues/18): + [16298](https://github.com/civicrm/civicrm-core/pull/16298))** + + Improves the Job.process_membership API/Scheduled job by adding some new + parameters, specifically: + + - exclude_test_memberships: Exclude test memberships from calculations + (default = TRUE) + - only_active_membership_types: Exclude disabled membership types from + calculations (default = TRUE) + - exclude_membership_status_ids: Default: Exclude Pending, Cancelled, + Expired. + + Deceased will always be excluded + +- **Add auto-renew status to membership detail report + ([17683](https://github.com/civicrm/civicrm-core/pull/17683) and + [17911](https://github.com/civicrm/civicrm-core/pull/17911))** + + The membership detail report can now display and filter on the auto-renew + status of each membership. + +### Backdrop Integration + +- **Support for installing CiviCRM-Backdrop via "setup" UI + ([17749](https://github.com/civicrm/civicrm-core/pull/17749) and + [121](https://github.com/civicrm/civicrm-backdrop/pull/121))** + + Improves the installation and Setup process for Backdrop integration's so that + one enables the CiviCRM module like any other module and then is directed to + the setup screen to complete installation as opposed to having to navigate to + a specific link. + +### Drupal Integration + +- **Upgrading a site that still has "mysql" in the dsn string breaks in latest + master ([dev/core#1937](https://lab.civicrm.org/dev/core/-/issues/1937): + [18174](https://github.com/civicrm/civicrm-core/pull/18174))** + + This adds an upgrade message for 5.29.0 warning that Composer patching will + need to be enabled before upgrading to 5.30.0 or higher. + + The "mysql" in the DSN (as opposed to "mysqli") will not be a problem, but the + solution for this is in a package patch that appears in 5.30. + +- **Installation - Support "activate first" w/setup UI + ([606](https://github.com/civicrm/civicrm-drupal/pull/606))** + + The new setup user interface for Backdrop and WordPress installations is now + available for Drupal 7. + +### WordPress Integration + +- **Add system check to ensure WP base page exists + ([17698](https://github.com/civicrm/civicrm-core/pull/17698))** + + A new system check will display a message if the base page, as set in CiviCRM, + doesn't match an existing page in WordPress. No message will display if + WordPress multisite is enabled. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **CRM_Dedupe_Finder parses phone key incorrectly + ([dev/core#1767](https://lab.civicrm.org/dev/core/-/issues/1767): + [17361](https://github.com/civicrm/civicrm-core/pull/17361) and + [17882](https://github.com/civicrm/civicrm-core/pull/17882))** + + The process to match duplicate contacts was not accurately identifying phone + fields, causing contacts with matching phone numbers to be treated as if they + didn't match. + +- **Dedupe: Location type is treated inconsistently + ([dev/core#1826](https://lab.civicrm.org/dev/core/-/issues/1826): + [17645](https://github.com/civicrm/civicrm-core/pull/17645))** + + Duplicate matching now ignores location type for postal address fields, now + consistent with how it has ignored phone and email location types. + +- **Installing Drupal 8 using civicrm-setup leads to "incorrect resource url" + system status check errors + ([dev/drupal#114](https://lab.civicrm.org/dev/drupal/-/issues/114) and + [dev/core#1647](https://lab.civicrm.org/dev/core/-/issues/1647): + [17754](https://github.com/civicrm/civicrm-core/pull/17754))** + + Removes the resource URL status check. + +- **API4: 500 error on chain with custom field + ([dev/core#1578](https://lab.civicrm.org/dev/core/-/issues/1578): + [17866](https://github.com/civicrm/civicrm-core/pull/17866))** + +- **MySQL uses filesort index when building the query which can cause + performance issues + ([dev/core#1665](https://lab.civicrm.org/dev/core/-/issues/1665): + [18052](https://github.com/civicrm/civicrm-core/pull/18052))** + +- **Custom fields not copied on shared address + ([dev/core#1670](https://lab.civicrm.org/dev/core/-/issues/1670): + [17580](https://github.com/civicrm/civicrm-core/pull/17580))** + +- **Email template permissions + ([dev/core#1751](https://lab.civicrm.org/dev/core/-/issues/1751): + [17480](https://github.com/civicrm/civicrm-core/pull/17480))** + + Users sending an email are no longer able to save or modify a template if they + lack the "edit message templates" permission. + +- **Using Parent tag in search form doesn't pull contacts marked with child tag + in search form result + ([dev/core#1795](https://lab.civicrm.org/dev/core/-/issues/1795): + [17513](https://github.com/civicrm/civicrm-core/pull/17513))** + +- **Activity Search : Tags are not working + ([dev/core#1827](https://lab.civicrm.org/dev/core/-/issues/1827): + [17655](https://github.com/civicrm/civicrm-core/pull/17655) and + [17755](https://github.com/civicrm/civicrm-core/pull/17755))** + +- **Autocomplete-select custom field is not searchable + ([dev/core#1805](https://lab.civicrm.org/dev/core/-/issues/1805): + [17569](https://github.com/civicrm/civicrm-core/pull/17569))** + +- **Do not allow enabling database logging when using multilingual + ([dev/core#1812](https://lab.civicrm.org/dev/core/-/issues/1812): + [17815](https://github.com/civicrm/civicrm-core/pull/17815))** + + This has never worked, with network errors as the result. This prevents it + from being set. + +- **Can't remove subtype if any required custom field is based on it + ([dev/core#1853](https://lab.civicrm.org/dev/core/-/issues/1853): + [17765](https://github.com/civicrm/civicrm-core/pull/17765))** + +- **User account form action not passing along contact id correctly possibly + leading to duplicate contacts + ([dev/core#1858](https://lab.civicrm.org/dev/core/-/issues/1858): + [17769](https://github.com/civicrm/civicrm-core/pull/17769))** + + When creating a user account from a contact record, the contact ID was not + properly passed along. Depending upon your unsupervised duplicate matching + rule, it would potentially create a duplicate contact record. + +- **Cannot edit a profile field of "Email" to use the Location Type "Primary" + ([dev/core#1861](https://lab.civicrm.org/dev/core/-/issues/1861): + [17812](https://github.com/civicrm/civicrm-core/pull/17812))** + + The location type would get reset to your default location type rather than + staying as "primary". + +- **Downgrade checkEnvironment level and skip non-prod checks (part of + [dev/core#1863](https://lab.civicrm.org/dev/core/-/issues/1863): + [17807](https://github.com/civicrm/civicrm-core/pull/17807))** + + In non-production environments, a system check produces a message saying so. + This downgrades it from an "Alert" to a more appropriate level of "Notice", + and it also suppresses cron and CiviMail system checks in this situation. + +- **Slew of E_NOTICES on Profiles admin page and description field is always + blank ([dev/core#1868](https://lab.civicrm.org/dev/core/-/issues/1868): + [17786](https://github.com/civicrm/civicrm-core/pull/17786))** + +- **CiviReport sent as email via mail_report job with a CSV attachment doesn't + show UTF8 characters properly in Excel + ([dev/core#1869](https://lab.civicrm.org/dev/core/-/issues/1869): + [17806](https://github.com/civicrm/civicrm-core/pull/17806))** + +- **References to packages path in security status checks are assumed to be + under civicrm root + ([dev/core#1872](https://lab.civicrm.org/dev/core/-/issues/1872): + [17844](https://github.com/civicrm/civicrm-core/pull/17844))** + + This changes how package and vendor paths are calculated in system checks + since (in Drupal 8 and potentially elsewhere) they may not be within the + CiviCRM root folder. + +- **Custom data insert/update error if using reserved words + ([dev/core#1880](https://lab.civicrm.org/dev/core/-/issues/1880): + [17848](https://github.com/civicrm/civicrm-core/pull/17848))** + +- **Advanced Search (search by complete or partial name) returns all contacts + ([dev/core#1895](https://lab.civicrm.org/dev/core/-/issues/1895): + [17950](https://github.com/civicrm/civicrm-core/pull/17950))** + + The ability to search first/last name was recently added to core. The primary + intent was to properly handle advanced searches that originate from + quicksearch first/last name filters. While that was working, a first/last name + search that originated directly from an advanced search was not working. This + fixes the issue. + +- **Miscellaneous E_NOTICES + ([dev/core#1909](https://lab.civicrm.org/dev/core/-/issues/1909): + [18006](https://github.com/civicrm/civicrm-core/pull/18006), + [17962](https://github.com/civicrm/civicrm-core/pull/17962), + [17964](https://github.com/civicrm/civicrm-core/pull/17964), + [17959](https://github.com/civicrm/civicrm-core/pull/17959), and + [17985](https://github.com/civicrm/civicrm-core/pull/17985))** + +- **CRM_Core_Key::valid() does backwards comparison + ([dev/core#1918](https://lab.civicrm.org/dev/core/-/issues/1918): + [18007](https://github.com/civicrm/civicrm-core/pull/18007))** + + This removes legacy code that appeared to attempt to check for a valid + quickForm key but wasn't effectively doing so. + +- **Upgrade fails for 4.6 => 5.29 during status-check + ([dev/core#1932](https://lab.civicrm.org/dev/core/-/issues/1932): + [18085](https://github.com/civicrm/civicrm-core/pull/18085))** + +- **Installation doclinks not getting url-rewritten + ([18175](https://github.com/civicrm/civicrm-core/pull/18175))** + + Links to the new installation documentation are now handled in the same way as + other documentation sites. + +- **Wrap multi record custom field inside a div + ([17966](https://github.com/civicrm/civicrm-core/pull/17966))** + +- **Fixed filling default values for tagssets in the advanced search form + ([17978](https://github.com/civicrm/civicrm-core/pull/17978))** + +- **Simplify caching of status checks + ([17817](https://github.com/civicrm/civicrm-core/pull/17817))** + +- **Ensure custom field checkboxes are populated in profiles + ([17977](https://github.com/civicrm/civicrm-core/pull/17977))** + +- **Upgrade PEAR/mail_mime package to be compliant with PHP7.4 and deploy it + using composer ([17948](https://github.com/civicrm/civicrm-core/pull/17948))** + +- **Setup UI - Validate that at least one "Component" is enabled + ([17778](https://github.com/civicrm/civicrm-core/pull/17778))** + + This prevents you from proceeding with installation without enabling at least + one component. Not enabling any components causes a messy failed + installation. + +- **Call apiv4 from Contribution create rather than fugly addActivity function + ([17881](https://github.com/civicrm/civicrm-core/pull/17881))** + +- **Search debug ([17887](https://github.com/civicrm/civicrm-core/pull/17887))** + +- **Simplify flushing group contact cache query to reduce table locking and + improve performance + ([17846](https://github.com/civicrm/civicrm-core/pull/17846))** + +- **Make api get upgrade-safe + ([17729](https://github.com/civicrm/civicrm-core/pull/17729))** + + This avoids database errors when the code and database versions don't match by + preventing the API from accessing fields that are unsupported in the database. + +- **CheckEnv - Give new installs a grace period before 'Cron Not Running' msg + ([17800](https://github.com/civicrm/civicrm-core/pull/17800))** + + The system check will lower the severity of the "cron not running" check for + the first 24 hours after a site has been installed. + +- **Sort permittedActivityTypes + ([17794](https://github.com/civicrm/civicrm-core/pull/17794))** + + This improves performance on filtering activity types by making it possible to + compare a list of permitted types with the overall list of activity type IDs. + +- **APIv4 - Fix saving custom fields with same name + ([17791](https://github.com/civicrm/civicrm-core/pull/17791))** + +- **Status Checks - Use more specific label regarding "Domain"/"Organization" + check ([17776](https://github.com/civicrm/civicrm-core/pull/17776))** + +- **SQL temp table not using utf8mb4 if server default already set to utf8mb4 + ([18012](https://github.com/civicrm/civicrm-core/pull/18012))** + +- **Wrong link to admin page in error message about FROM address on PCP page + ([17996](https://github.com/civicrm/civicrm-core/pull/17996))** + +- **Fix sticky table header on "Find Activities" page + ([17917](https://github.com/civicrm/civicrm-core/pull/17917))** + +- **Fixed DB Error: syntax error if line item refers to civicrm_case + ([16626](https://github.com/civicrm/civicrm-core/pull/16626))** + +- **Fix potential js error on summary screen when reloading blocks + ([17865](https://github.com/civicrm/civicrm-core/pull/17865))** + +- **Fix 'Undefined variable: jsSet in CRM_Core_BAO_Mapping::loadSavedMapping()' + ([17816](https://github.com/civicrm/civicrm-core/pull/17816))** + +- **Fixed notice error on Relationships report + ([17787](https://github.com/civicrm/civicrm-core/pull/17787))** + +- **Fix obscure dedupe scenario where 'bad' location data can overwrite good + data ([17993](https://github.com/civicrm/civicrm-core/pull/17993))** + +- **Fix JQuery Validation for radios + ([17937](https://github.com/civicrm/civicrm-core/pull/17937))** + +### CiviCase + +- **Fix case activity field set to allow long details to be exported + ([17970](https://github.com/civicrm/civicrm-core/pull/17970))** + +- **Case export has two fields that are not what they say they are + ([dev/core#1916](https://lab.civicrm.org/dev/core/-/issues/1916): + [18043](https://github.com/civicrm/civicrm-core/pull/18043))** + +- **Collapsed custom field set for activities with a required radio makes case + activity buttons seem disabled + ([dev/core#1928](https://lab.civicrm.org/dev/core/-/issues/1928): + [18080](https://github.com/civicrm/civicrm-core/pull/18080))** + +- **CRM_Utils_Check_Component_Case - Guard against post-upgrade crash + ([17944](https://github.com/civicrm/civicrm-core/pull/17944))** + +### CiviContribute + +- **Define the logic that sets (or not) contribution receive_date in relation to + payments + ([dev/financial#139](https://lab.civicrm.org/dev/financial/-/issues/139): + [17777](https://github.com/civicrm/civicrm-core/pull/17777) and + [18000](https://github.com/civicrm/civicrm-core/pull/18000))** + + This undoes a regression where the contribution date of a pay-later + contribution would change when a payment completes the contribution. The + contribution date is the accrual date and is distinct from the date the + contribution is entered and the date when all payments have been received. + + In the process, this changes the "Update pending contribution status" search + action to be "Record payments for contributions". The result is generally the + same, but the status change comes about because the payments complete the + contributions. You can modify contribution statuses in bulk with a profile by + using the "Update multiple contributions" action. + +- **Disable frequency/interval fields if not required. Mark required if they are + so they are validated before submit + ([17526](https://github.com/civicrm/civicrm-core/pull/17526))** + + The frequency and interval fields for recurring contributions now use jQuery + validation to disable or require them as appropriate. + +- **Paypal IPN sometimes fails to update the next scheduled payment date when + recording the latest recurring payment + ([dev/core#1679](https://lab.civicrm.org/dev/core/-/issues/1679): + [17744](https://github.com/civicrm/civicrm-core/pull/17744))** + +- **Contribution Details Statistics are multiplied under many circumstances + ([dev/report#21](https://lab.civicrm.org/dev/report/-/issues/21): + [15435](https://github.com/civicrm/civicrm-core/pull/15435) and + [17809](https://github.com/civicrm/civicrm-core/pull/17809))** + +- **Contribution Summary Report: The "general total" row does not take the + currency filtered + ([dev/report#27](https://lab.civicrm.org/dev/report/-/issues/27): + [16736](https://github.com/civicrm/civicrm-core/pull/16736))** + + When the contribution summary report is used by filtering for a currency other + than the site's default currency, the "grand total" row shows the sign of the + default currency instead of the filtered currency. + +- **Fix PaypalIPN single function to not receive-by-reference + ([18044](https://github.com/civicrm/civicrm-core/pull/18044))** + +- **Allow Failed -> Completed status for contributions + ([dev/core#1906](https://lab.civicrm.org/dev/core/-/issues/1906): + [17943](https://github.com/civicrm/civicrm-core/pull/17943))** + +- **Fix currency symbol for Total Amount on contribution page + ([17703](https://github.com/civicrm/civicrm-core/pull/17703))** + + This resolves a but where the total amount would show the default system + currency symbol regardless of the currency configured on the contribution + page. + +- **On behalf label / Honoree Title / Honoree Description not translatable on + contribution page + ([dev/core#1280](https://lab.civicrm.org/dev/core/-/issues/1280): + [16838](https://github.com/civicrm/civicrm-core/pull/16838))** + +- **Load contribution page if live payment processor is disabled but test is + available ([17828](https://github.com/civicrm/civicrm-core/pull/17828))** + +- **Remove requirement to pass 'contribution_status_id' => Pending from + order.create ([18018](https://github.com/civicrm/civicrm-core/pull/18018))** + +- **Use saved contribution's line items rather than the primaryContributionID + ([18033](https://github.com/civicrm/civicrm-core/pull/18033))** + +- **Do not overwrite values saved from the repeatContribution routine + ([17972](https://github.com/civicrm/civicrm-core/pull/17972))** + +- **"Contribution Source" profile field has no effect on new contribution + ([dev/core#1902](https://lab.civicrm.org/dev/core/-/issues/1902): + [17930](https://github.com/civicrm/civicrm-core/pull/17930))** + +- **Incorrect check for "soft_credit" after making pcp donation + ([dev/core#1915](https://lab.civicrm.org/dev/core/-/issues/1915): + [18002](https://github.com/civicrm/civicrm-core/pull/18002))** + +- **Total Tax Amount on the Contribution (generated in backoffice/offline) no + longer adds up to sum of the Tax Amount for the individual line items + ([dev/core#1983](https://lab.civicrm.org/dev/core/-/issues/1983): + [18290](https://github.com/civicrm/civicrm-core/pull/18290))** + +- **Downloaded Invoice activity attaches non wkhtmltopdf invoice + ([dev/core#1922](https://lab.civicrm.org/dev/core/-/issues/1922): + [18056](https://github.com/civicrm/civicrm-core/pull/18056))** + + Downloading an invoice would ignore whether wkhtmltopdf was configured and + always use dompdf. + +- **Fix repeattransaction api to use custom data from the template contribution + ([17975](https://github.com/civicrm/civicrm-core/pull/17975))** + + The Contribution.repeattransaction API will now copy custom data from the + template rather than the earliest related contribution. + +### CiviEvent + +- **Can't meaningfully disable self-service transfer/cancellation once enabled + ([dev/event#35](https://lab.civicrm.org/dev/event/-/issues/35): + [18040](https://github.com/civicrm/civicrm-core/pull/18040))** + +- **Event registration form has inconsistent labeling + ([dev/event#38](https://lab.civicrm.org/dev/event/-/issues/38): + [17695](https://github.com/civicrm/civicrm-core/pull/17695))** + +- **Event cart hidden/enabled in buildkit 5.29 RC + ([dev/event#40](https://lab.civicrm.org/dev/event/-/issues/40): + [18101](https://github.com/civicrm/civicrm-core/pull/18101))** + + Ensures that the Event Cart functionality defaults to off. + +### CiviMail + +- **Remove URL-tracking in mass SMS + ([dev/core#1843](https://lab.civicrm.org/dev/core/-/issues/1843): + [17700](https://github.com/civicrm/civicrm-core/pull/17700))** + + Rewritten URLs were confusing and made SMS messages unnecessarily long. There + also have never been SMS tracking reports to use them anyway. + +- **Test mailings create new contacts even when "Add Contacts" permission is not + present. ([dev/mail#70](https://lab.civicrm.org/dev/mail/-/issues/70): + [17867](https://github.com/civicrm/civicrm-core/pull/17867))** + + Ensures contacts are not created when a user without permissions to create + contacts sends a test email. + +- **Mailing Subscription form does not validate reCAPTCHA + ([dev/core#1755](https://lab.civicrm.org/dev/core/-/issues/1755): + [17305](https://github.com/civicrm/civicrm-core/pull/17305))** + +- **Text version of unsubscribed email is missing the link to resubscribe + ([dev/core#1919](https://lab.civicrm.org/dev/core/-/issues/1919): + [18015](https://github.com/civicrm/civicrm-core/pull/18015))** + +- **Add CiviMail synchronisation frequency setting + (in support of [dev/core#1768](https://lab.civicrm.org/dev/core/-/issues/1768): + [17709](https://github.com/civicrm/civicrm-core/pull/17709))** + + This adds a setting for updating how frequently the database should be updated + with the status of emails that have been sent. Updating the database more + frequently can slow the process down, but it reduces the likelihood that a + recipient will be re-emailed when recovering from a stalled mailing. + +- **Mark the new routes for "open.php" and "url.php" as public + ([17813](https://github.com/civicrm/civicrm-core/pull/17813))** + + This denotes the paths for open and URL tracking as "public" pages as they are + meant to be used by unauthenticated email clients and recipients. + +### CiviMember + +- **Decimal Separator - Invalid value "total_amount" (NaN,N) creating or editing + a membership ([dev/core#1113](https://lab.civicrm.org/dev/core/-/issues/1113): + [16429](https://github.com/civicrm/civicrm-core/pull/16429))** + +- **Offline Membership Renewal Tax Calculation is incorrect [regression] + ([dev/core#1972](https://lab.civicrm.org/dev/core/-/issues/1972): + [18271](https://github.com/civicrm/civicrm-core/pull/18271))** + +### Drupal Integration + +- **Drupal 8 - Using Create User Record action on a contact with no email is too + quiet. Also CRM_Core_Session::setStatus is sometimes ignored. + ([dev/drupal#127](https://lab.civicrm.org/dev/drupal/-/issues/127): + [17914](https://github.com/civicrm/civicrm-core/pull/17914) and + [17915](https://github.com/civicrm/civicrm-core/pull/17915))** + + Require email when adding a user and ensure that errors show. + +- **The following PHP variables are not set: $_SERVER[HTTP_HOST] + ([dev/core#750](https://lab.civicrm.org/dev/core/-/issues/750): + [17636](https://github.com/civicrm/civicrm-core/pull/17636))** + + Skip the server variable checks if running in a CLI environment, removing an + error when running Drush commands against Drupal 8 and Drupal 9 based sites. + +- **Can't find reCAPTCHA in Drupal 8 + ([dev/core#1871](https://lab.civicrm.org/dev/core/-/issues/1871): + [17822](https://github.com/civicrm/civicrm-core/pull/17822))** + +- **Fixed for multi-select filter + ([615](https://github.com/civicrm/civicrm-drupal/pull/615))** + + This fixes filters for multi-select fields in Views. + +- **Fix URL for file field + ([608](https://github.com/civicrm/civicrm-drupal/pull/608))** + + This fixes the generated URL for file fields in Views. + +### Wordpress Integration + +- **[civicrm.files] token doesn't work in some cases since 5.27 + ([dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66): + [18068](https://github.com/civicrm/civicrm-core/pull/18068))** + + Ensures the [civicrm.files] token plays nice for sites with older WordPress + file directory set ups. + +- **CiviCRM and the WordPress Pods plugin (since version 2.7.13) is incompatible + due to Pods including marionette v3.3.1 for backbone, newer than CiviCRM's + bundled marionette v1.0.3 + ([dev/core#1090](https://lab.civicrm.org/dev/core/-/issues/1090): + [17855](https://github.com/civicrm/civicrm-core/pull/17855))** + + Ensures CiviCRM plays nicely with recent versions of Elementor Plugin. + +- **Fix PHP notice on WordPress permissions form + ([17758](https://github.com/civicrm/civicrm-core/pull/17758))** + +- **Slow down the frequency of WordPress "heartbeat" calls in CiviCRM admin + ([dev/wordpress#67](https://lab.civicrm.org/dev/wordpress/-/issues/67): + [214](https://github.com/civicrm/civicrm-wordpress/pull/214))** + +- **Be more forgiving about slash in wpBasePage ([dev/wordpress#73](https://lab.civicrm.org/dev/wordpress/issues/73): + [18332](https://github.com/civicrm/civicrm-core/pull/18332))** + +## <a name="misc"></a>Miscellany + +- **APIv4 - Add BasicEntity helper class + ([17899](https://github.com/civicrm/civicrm-core/pull/17899))** + +- **Bump minimum upgradable version to 4.4.7 + ([17750](https://github.com/civicrm/civicrm-core/pull/17750))** + +- **Update version in the test_data_second_domain file and also update the + setVersion script to update the file version as necessary + ([17897](https://github.com/civicrm/civicrm-core/pull/17897))** + +- **Be a little less supportive to cvs + ([17896](https://github.com/civicrm/civicrm-core/pull/17896))** + +- **Replace a load of references to the wiki with docs links + ([17900](https://github.com/civicrm/civicrm-core/pull/17900))** + +- **Remove unneccessary isoToDate function + ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921): + [18025](https://github.com/civicrm/civicrm-core/pull/18025))** + +- **CRM_Activity_Form_SearchTest::testQill can fail semi-randomly + ([dev/core#1894](https://lab.civicrm.org/dev/core/-/issues/1894): + [17902](https://github.com/civicrm/civicrm-core/pull/17902))** + +- **Test for fatal error on new individual form + ([dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874): + [17835](https://github.com/civicrm/civicrm-core/pull/17835))** + +- **Bump lodash from 4.17.15 to 4.17.19 + ([17858](https://github.com/civicrm/civicrm-core/pull/17858))** + +- **Update regen.sh with new & upcoming core extensions + ([17839](https://github.com/civicrm/civicrm-core/pull/17839))** + +- **APIv4 - Add activity contacts to APIv4 field spec + ([17766](https://github.com/civicrm/civicrm-core/pull/17766))** + +- **Adjust mysql SET NAMES in remaining places as we agreed this was the go + ([17825](https://github.com/civicrm/civicrm-core/pull/17825))** + +- **CRM_Utils_SQL - Add "onDuplicate()" and "syncInto()" helpers + ([17780](https://github.com/civicrm/civicrm-core/pull/17780))** + +- **Improve efficiency of findFiles + ([17745](https://github.com/civicrm/civicrm-core/pull/17745))** + +- **APIv4 Explorer: Improve selection of fields for HAVING + ([17746](https://github.com/civicrm/civicrm-core/pull/17746))** + +- **Convert CRM.utils.formatDate tests to karma + ([17757](https://github.com/civicrm/civicrm-core/pull/17757))** + +- **Teach CRM.utils.formatDate to also show time + ([17684](https://github.com/civicrm/civicrm-core/pull/17684))** + +- **CRM_Utils_Hook: deprecation warning and short array syntax + ([17995](https://github.com/civicrm/civicrm-core/pull/17995))** + +- **Remove check for valid email in synchronizeUFMatch + ([17771](https://github.com/civicrm/civicrm-core/pull/17771))** + +- **Remove unused "ufUniqID" session variable + ([17904](https://github.com/civicrm/civicrm-core/pull/17904))** + +- **Remove duplicate cache flush + ([17988](https://github.com/civicrm/civicrm-core/pull/17988))** + +- **Remove extraneous opportunistic cache flush. + ([17936](https://github.com/civicrm/civicrm-core/pull/17936))** + +- **Hooks/Dispatcher - Close loopholes that occur around "preboot" hooks + ([17831](https://github.com/civicrm/civicrm-core/pull/17831))** + +- **Use PrematureExit exception instead of weird hack in tests + ([17870](https://github.com/civicrm/civicrm-core/pull/17870))** + +- **Remove unnecessary try/catch per #17729 + ([17823](https://github.com/civicrm/civicrm-core/pull/17823))** + +- **handlePaymentNotification() should not be declared as a static method + ([17849](https://github.com/civicrm/civicrm-core/pull/17849))** + +- **MembershipRenewalTest - Fix failure + ([17830](https://github.com/civicrm/civicrm-core/pull/17830))** + +- **Remove hard coded charset. + ([17826](https://github.com/civicrm/civicrm-core/pull/17826))** + +- **getLoggedInContactID() is a static function + ([17783](https://github.com/civicrm/civicrm-core/pull/17783))** + +- **Remove PaymentExpress ipn class + ([17763](https://github.com/civicrm/civicrm-core/pull/17763))** + +- **Remove unused, deprecated functions + ([17761](https://github.com/civicrm/civicrm-core/pull/17761))** + +- **CIVICRM_BAO_CACHE_ADAPTER - Remove obsolete option + ([17990](https://github.com/civicrm/civicrm-core/pull/17990))** + +- **More unused functions in GenCode + ([17756](https://github.com/civicrm/civicrm-core/pull/17756))** + +- **Temporary tables should follow consistent naming convention + ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183): + [17827](https://github.com/civicrm/civicrm-core/pull/17827))** + +- **CRM_Core_BAO_Cache - Remove functions deprecated a year ago + ([17989](https://github.com/civicrm/civicrm-core/pull/17989))** + +- **Fix all core processors to implement doPayment and not doTransferPayment or + doDirectPayment + ([https://lab.civicrm.org/dev/financial/-/issues/135](https://lab.civicrm.org/dev/financial/-/issues/135): + [18078](https://github.com/civicrm/civicrm-core/pull/18078) and + [18072](https://github.com/civicrm/civicrm-core/pull/18072))** + +- **[REF] Extract setUserContext on contribution form & cleanup on backend add + membership form + ([17968](https://github.com/civicrm/civicrm-core/pull/17968))** + +- **[REF] remove unnecessary variable variables + ([17903](https://github.com/civicrm/civicrm-core/pull/17903))** + +- **[REF] - Add helper function for the repetitive task of fetching multilingual + ([17650](https://github.com/civicrm/civicrm-core/pull/17650))** + +- **[REF] Unit test attempt to create reported bugs , minor cleanup + ([17560](https://github.com/civicrm/civicrm-core/pull/17560))** + +- **[REF] Extract addToRecentItems from membership create + ([17524](https://github.com/civicrm/civicrm-core/pull/17524))** + +- **[REF] Fix a couple of jQuery errors that have cropped up + ([17871](https://github.com/civicrm/civicrm-core/pull/17871))** + +- **[REF] regen.sh - Remove unusual handling of `zipcodes.mysql` + ([17869](https://github.com/civicrm/civicrm-core/pull/17869))** + +- **[REF] ScheduledJob cleanup, remove unused var + ([17862](https://github.com/civicrm/civicrm-core/pull/17862))** + +- **[REF] Migrate Event Cart Setting into the Extension + ([17841](https://github.com/civicrm/civicrm-core/pull/17841))** + +- **[REF] Only printOnly once + ([17850](https://github.com/civicrm/civicrm-core/pull/17850))** + +- **[REF] APIv4 ConformanceTest - Split apart into per-entity sub-tests + ([17845](https://github.com/civicrm/civicrm-core/pull/17845))** + +- **[REF] WebsiteTest - Mitigate flaky failures + ([17833](https://github.com/civicrm/civicrm-core/pull/17833))** + +- **[REF] Follow up cleanup + ([17788](https://github.com/civicrm/civicrm-core/pull/17788))** + +- **[REF] Remove ACL join on temp table creation in Member ContributionDetail + report ([17723](https://github.com/civicrm/civicrm-core/pull/17723))** + +- **[REF] Do or do not - there is no try + ([17795](https://github.com/civicrm/civicrm-core/pull/17795))** + +- **[REF] Unused interface CRM_Report_Interface + ([17767](https://github.com/civicrm/civicrm-core/pull/17767))** + +- **[REF] - Cleanup StatusPreference BAO to be more standard + ([17801](https://github.com/civicrm/civicrm-core/pull/17801))** + +- **[REF] Reduce interaction between dedupe code and createProfileContact + ([17920](https://github.com/civicrm/civicrm-core/pull/17920))** + +- **[REF] Simplify field reference + ([17941](https://github.com/civicrm/civicrm-core/pull/17941))** + +- **[REF] [Test] Minor simplification on test + ([18019](https://github.com/civicrm/civicrm-core/pull/18019))** + +- **[REF] Simplify is_email_receipt in sendMail + ([18029](https://github.com/civicrm/civicrm-core/pull/18029))** + +- **[REF] Remove transaction from BaseIPN completeTransaction call + ([18042](https://github.com/civicrm/civicrm-core/pull/18042))** + +- **[REF] Simplify membership status date handling + ([18030](https://github.com/civicrm/civicrm-core/pull/18030))** + +- **[REF] Clean up handling of financial_type_id override + ([18032](https://github.com/civicrm/civicrm-core/pull/18032))** + +- **[REF] Remove transaction from completeOrder signature + ([18046](https://github.com/civicrm/civicrm-core/pull/18046))** + +- **[REF] Remove transaction instantiation in PaypalPro + ([18026](https://github.com/civicrm/civicrm-core/pull/18026))** + +- **[REF] Stop instantiating transaction in PaypalIPN + ([18020](https://github.com/civicrm/civicrm-core/pull/18020))** + +- **[REF] Remove pass-by-reference & always empty param + ([17984](https://github.com/civicrm/civicrm-core/pull/17984))** + +- **[REF] Tighten up function signature for dedupePair + ([17923](https://github.com/civicrm/civicrm-core/pull/17923))** + +- **[REF] Move noisily deprecate BaseIPN->sendMail, call api from it rather + than BAO function + ([17982](https://github.com/civicrm/civicrm-core/pull/17982))** + +- **[REF] Use CRM_Utils_Mail::send for sending emails for confirming unsubscribe + resubscribe auto replies and subscribing + ([17396](https://github.com/civicrm/civicrm-core/pull/17396))** + +- **[REF] Reduce calls to CRM_Member_PseudoConstant::membershipType + ([17987](https://github.com/civicrm/civicrm-core/pull/17987))** + +- **[REF] Use Standard function cacheClause to re-use contact acl cache table + ([17707](https://github.com/civicrm/civicrm-core/pull/17707))** + +- **[REF] Make explicit what we are doing with 'values' in this code + ([17979](https://github.com/civicrm/civicrm-core/pull/17979))** + +- **[REF] Minor code clean up + ([17974](https://github.com/civicrm/civicrm-core/pull/17974))** + +- **[REF] Grant cleanup + ([17967](https://github.com/civicrm/civicrm-core/pull/17967))** + +- **[REF] Refactor to use the standard CRM_Core_Form::addRadio function for a + number of radio elements + ([17932](https://github.com/civicrm/civicrm-core/pull/17932))** + +- **[REF] Fix the default to_financial_account_id for generated transactions + ([17938](https://github.com/civicrm/civicrm-core/pull/17938))** + +- **[REF] Upgrade dompdf version to be more compatible with PHP7.4 + ([17946](https://github.com/civicrm/civicrm-core/pull/17946))** + +- **[REF] [Tests] Cleanup test declaration to take advantage of mapping + improvements ([17939](https://github.com/civicrm/civicrm-core/pull/17939))** + +- **[REF] Remove unnecessary complexity on im export + ([17949](https://github.com/civicrm/civicrm-core/pull/17949))** + +- **[REF] GroupContact BAO - Minor code cleanup + ([17928](https://github.com/civicrm/civicrm-core/pull/17928))** + +- **[REF] Minor function signuture cleanup + ([17922](https://github.com/civicrm/civicrm-core/pull/17922))** + +- **[REF] Do not pass variable by reference + ([17921](https://github.com/civicrm/civicrm-core/pull/17921))** + +- **[REF] remove first attempt to set currency in repeattransaction flow + ([18055](https://github.com/civicrm/civicrm-core/pull/18055))** + +- **[REF] Even less variable variables + ([18058](https://github.com/civicrm/civicrm-core/pull/18058))** + +- **[REF] Move handling of form elements back to the Form + ([17981](https://github.com/civicrm/civicrm-core/pull/17981))** + +- **[REF] Simplify location metadata handling in Export class + ([17951](https://github.com/civicrm/civicrm-core/pull/17951))** + +- **[REF] Do not pass by reference to the recur function + ([18057](https://github.com/civicrm/civicrm-core/pull/18057))** + +- **[REF] Simplify getMembershipStatusByDate more + ([18051](https://github.com/civicrm/civicrm-core/pull/18051))** + +- **[REF] Remove mail_mime package as now supplied by composer + ([300](https://github.com/civicrm/civicrm-packages/pull/300))** + +- **[REF] Remove some deprecated size function calls replaced with length + ([299](https://github.com/civicrm/civicrm-packages/pull/299))** + +- **Refactor "applyLocale" and remove references to "language" column in UFMatch + table ([18049](https://github.com/civicrm/civicrm-core/pull/18049))** + +- **[NFC] Fix provider unit test on PHP7.4 + ([18073](https://github.com/civicrm/civicrm-core/pull/18073))** + +- **[NFC] Docblock cleanup + ([610](https://github.com/civicrm/civicrm-drupal/pull/610))** + +- **[NFC] Update versions file to remove reference to Mail_mime and Mail + ([301](https://github.com/civicrm/civicrm-packages/pull/301))** + +- **[NFC] Re run regen after recent merges + ([17842](https://github.com/civicrm/civicrm-core/pull/17842))** + +- **[NFC] Fix nonstandard header comments + ([17880](https://github.com/civicrm/civicrm-core/pull/17880))** + +- **[NFC] Add in a unit test of calling the contribution page widget endpoint + and remove unneeded file + ([17965](https://github.com/civicrm/civicrm-core/pull/17965))** + +- **[NFC] Improve docs for APIv4 Save action + ([18004](https://github.com/civicrm/civicrm-core/pull/18004))** + +- **[NFC] Docblock cleanup + ([17945](https://github.com/civicrm/civicrm-core/pull/17945))** + +- **[NFC] Update a few doc/wiki links in code comments + ([17918](https://github.com/civicrm/civicrm-core/pull/17918))** + +- **[NFC] Comment block cleanup + ([17872](https://github.com/civicrm/civicrm-core/pull/17872))** + +- **[Test] Update hook signature in test + ([609](https://github.com/civicrm/civicrm-drupal/pull/609))** + +- **[Test] Attempt to replicate #17852 + ([18038](https://github.com/civicrm/civicrm-core/pull/18038))** + +- **[Test fix] We might need this to ensure really quick test runs don't fail + ([18045](https://github.com/civicrm/civicrm-core/pull/18045))** + +- **Add testing to Authorize.net and remove the lines that are repeated + ([18028](https://github.com/civicrm/civicrm-core/pull/18028))** + +- **Add test on status calculation + ([18037](https://github.com/civicrm/civicrm-core/pull/18037))** + +- **Fix for failing test + ([18036](https://github.com/civicrm/civicrm-core/pull/18036))** + +- **[Test framework] re-re-fix test and add test for test + ([18013](https://github.com/civicrm/civicrm-core/pull/18013))** + +- **Re-fix test ([18009](https://github.com/civicrm/civicrm-core/pull/18009))** + +- **[Test framework] - Update failing test + ([18003](https://github.com/civicrm/civicrm-core/pull/18003))** + +- **[Test framework] - Combine triplicate createCase functions + ([17957](https://github.com/civicrm/civicrm-core/pull/17957))** + +- **Remove error checking by-pass in tests + ([17940](https://github.com/civicrm/civicrm-core/pull/17940))** + +- **[Test Framework] - Tests for report downloads + ([17892](https://github.com/civicrm/civicrm-core/pull/17892))** + +- **api_v3_TaxContributionPageTest - Remove hard coded processor id + ([17860](https://github.com/civicrm/civicrm-core/pull/17860))** + +- **API tests - label versions in dataprovider versionThreeAndFour + ([17847](https://github.com/civicrm/civicrm-core/pull/17847))** + +- **Extract code to set isEmailReceipt in Contribution.completeOrder + ([18039](https://github.com/civicrm/civicrm-core/pull/18039))** + +- **Do not pass-by-reference to recur function + ([18071](https://github.com/civicrm/civicrm-core/pull/18071))** + +- **Unused functions in GenCode + ([17753](https://github.com/civicrm/civicrm-core/pull/17753))** + +- **Fix typo in templates/CRM/Report/Form/Tabs/GroupBy.tpl + ([17747](https://github.com/civicrm/civicrm-core/pull/17747))** + +- **Remove unused "ufUniqID" session variable + ([213](https://github.com/civicrm/civicrm-wordpress/pull/213))** + +- **Remove Net packages Net_Curl Net_DIME as they do not appear to be used + ([294](https://github.com/civicrm/civicrm-packages/pull/294))** + +- **Update contributor key for Andrew + ([18230](https://github.com/civicrm/civicrm-core/pull/18230))** + +- **Fix qill typo + ([18041](https://github.com/civicrm/civicrm-core/pull/18041))** + +- **Update flexmailer release information + ([17912](https://github.com/civicrm/civicrm-core/pull/17912))** + +- **Remove invalid use of crmMoney formatter + ([18031](https://github.com/civicrm/civicrm-core/pull/18031))** + +- **Remove main PaymentExpress class + ([18010](https://github.com/civicrm/civicrm-core/pull/18010))** + +- **Remove unused parameter ids['billing'] + ([18021](https://github.com/civicrm/civicrm-core/pull/18021))** + +- **Cache loader - remove legacy handling, handle null result from setting + ([17999](https://github.com/civicrm/civicrm-core/pull/17999))** + +- **Use case id to get relationship for activity creation + ([17256](https://github.com/civicrm/civicrm-core/pull/17256) and + [17764](https://github.com/civicrm/civicrm-core/pull/17764))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; +Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma, +Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; +Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra +Purohit; iXiam - César Ramos, Diego Muñio; JMA Consulting - Monish Deb, Seamus +Lee; John Kingsnorth; Joinery - Allen Shaw; Lighthouse Consulting and Design - +Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech - +Chamil Wijesooriya; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; +Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan +Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Timbsoft +Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +Agileware - Pengyi Zhang; Andrew Thompson; Artful Robot - Rich Lott; Australian +Greens - Andrew Cormick-Dockery, John Twyman; Bastien Ho; Blackfly Solutions - +Alan Dixon; Carlos Capote; CompuCorp - Jamie Novick; DevApp - Adam Kwiatkowski; +Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Greenpeace +Central and Eastern Europe - Patrick Figel; Irene Meisel; JMA Consulting - Joe +Murray; Korlon - Stuart Gaston; Nicol Wistreich; Rar9; Ray Wright; Semper IT - +Karin Gerritsen; Third Sector Design - Michael McAndrew + +## <a name="feedback"></a>Feedback + +These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like +to provide feedback on them, please log in to https://chat.civicrm.org/civicrm +and contact `@agh1`. diff --git a/civicrm/settings/Address.setting.php b/civicrm/settings/Address.setting.php index 36264f540a505fb73764f849b264f82be99c1c26..ab63ea57996113467bac6f28782149ac8bae639d 100644 --- a/civicrm/settings/Address.setting.php +++ b/civicrm/settings/Address.setting.php @@ -12,7 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Campaign.setting.php b/civicrm/settings/Campaign.setting.php index c1cf5273d341da05ef08d8f670e28e2506fee07f..d7efe6ec24002f1aa29627f03cc0a85f797bd609 100644 --- a/civicrm/settings/Campaign.setting.php +++ b/civicrm/settings/Campaign.setting.php @@ -12,7 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Case.setting.php b/civicrm/settings/Case.setting.php index 44dc6055695280e93259af149bf0cc45b482cc5a..7b26c26e8a8c3206c7430202761f3b3d939bd7c5 100644 --- a/civicrm/settings/Case.setting.php +++ b/civicrm/settings/Case.setting.php @@ -12,9 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * $Id$ - * + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Contribute.setting.php b/civicrm/settings/Contribute.setting.php index be0c94a8ef310d66e3862cbfe601df8a29c095e7..28874f830c76671fcc5b7266fd93c365a2228998 100644 --- a/civicrm/settings/Contribute.setting.php +++ b/civicrm/settings/Contribute.setting.php @@ -12,8 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * + * @copyright CiviCRM LLC https://civicrm.org/licensing * Settings metadata file */ diff --git a/civicrm/settings/Core.setting.php b/civicrm/settings/Core.setting.php index 0f1f8aab13f28e675025d1f310916db5bddaf983..20b7d50b2412a2d7cbfff46e8c79309d90aee720 100644 --- a/civicrm/settings/Core.setting.php +++ b/civicrm/settings/Core.setting.php @@ -12,7 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Developer.setting.php b/civicrm/settings/Developer.setting.php index 6c181734035553f5ab777630aac616302d1c8e1b..ced086397de197369012df8d06b9c366eee0563c 100644 --- a/civicrm/settings/Developer.setting.php +++ b/civicrm/settings/Developer.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Directory.setting.php b/civicrm/settings/Directory.setting.php index 0fb6485db96a1a550e87975605b25c491c85c041..51fa9d6bfbd2b5551f20220a0f91a898931bc6ac 100644 --- a/civicrm/settings/Directory.setting.php +++ b/civicrm/settings/Directory.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Event.setting.php b/civicrm/settings/Event.setting.php index 50477d91369d3b9dfc15996af57c8826e353cf52..c7481cb2f2c0c5497fe92b046dc75264c3680844 100644 --- a/civicrm/settings/Event.setting.php +++ b/civicrm/settings/Event.setting.php @@ -19,22 +19,6 @@ * Settings metadata file */ return [ - 'enable_cart' => [ - 'name' => 'enable_cart', - 'group_name' => 'Event Preferences', - 'settings_pages' => ['event' => ['weight' => 10]], - 'group' => 'event', - 'type' => 'Boolean', - 'quick_form_type' => 'CheckBox', - 'default' => '0', - 'add' => '4.1', - 'title' => ts('Use Shopping Cart Style Event Registration'), - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => ts('This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a "cart" and then pay for them all at once. Enabling this setting will affect online registration for all active events. The code is an alpha state, and you will potentially need to have developer resources to debug and fix sections of the codebase while testing and deploying it'), - 'help_text' => '', - 'documentation_link' => ['page' => 'CiviEvent Cart Checkout', 'resource' => 'wiki'], - ], 'show_events' => [ 'name' => 'show_events', 'group_name' => 'Event Preferences', diff --git a/civicrm/settings/Extension.setting.php b/civicrm/settings/Extension.setting.php index 195de44bd08c62d4690890931320b2d89c54a3f7..180eff4564cc95f9aa2294092139a551b350c403 100644 --- a/civicrm/settings/Extension.setting.php +++ b/civicrm/settings/Extension.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Localization.setting.php b/civicrm/settings/Localization.setting.php index 9fc65ef10db9d75c45b88a05b28413ebc9972c3b..dbfbaa38a03aa64553cf999676461b27d637ed79 100644 --- a/civicrm/settings/Localization.setting.php +++ b/civicrm/settings/Localization.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Mailing.setting.php b/civicrm/settings/Mailing.setting.php index 2e2640956a7fc7bb5fc93b1ccb939007c0640a68..cb0b5ec0b6950d6cdba16c44f0aa004ba4bcea16 100644 --- a/civicrm/settings/Mailing.setting.php +++ b/civicrm/settings/Mailing.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file @@ -369,4 +367,25 @@ return [ 'description' => ts('If checked, mailings will have open tracking enabled by default.'), 'help_text' => NULL, ], + // dev/cor#1768 Allow mailer sync interval to be configured by the + // adminstrator. + 'civimail_sync_interval' => [ + 'group_name' => 'Mailing Preferences', + 'group' => 'mailing', + 'name' => 'civimail_sync_interval', + 'type' => 'Integer', + 'quick_form_type' => 'Element', + 'html_type' => 'text', + 'html_attributes' => [ + 'size' => 4, + 'maxlength' => 8, + ], + 'default' => 10, + 'title' => ts('Database Update Frequency'), + 'add' => '5.28', + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => ts('The frequency that CiviMail updates its sent mail database.'), + 'help_text' => 'CiviMail records email sent at the frequency you specify. If you set it to 1, it will update the database every time it sends an email. This ensures that emails are not resent if the batch job fails, but this may cause a performance hit, particularly for large jobs.', + ], ]; diff --git a/civicrm/settings/Map.setting.php b/civicrm/settings/Map.setting.php index dd474c53cdb2913d3042ddc82bb29eaa6e25b676..5dee60b77733e4f9e5352a4ddd73e0dbd1e51876 100644 --- a/civicrm/settings/Map.setting.php +++ b/civicrm/settings/Map.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * Settings metadata file */ return [ diff --git a/civicrm/settings/Member.setting.php b/civicrm/settings/Member.setting.php index c45fd19664cfecdabf51ebf9746a9c3dc97f8e18..7e5b27b89f0a32bee13a05adf30cd7b05c049319 100644 --- a/civicrm/settings/Member.setting.php +++ b/civicrm/settings/Member.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Search.setting.php b/civicrm/settings/Search.setting.php index c9a02e963e4cff03120890ab9360a8e3526e03e2..876eafa43b1091d44c91e822b4ac861a1a4c0ce3 100644 --- a/civicrm/settings/Search.setting.php +++ b/civicrm/settings/Search.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Url.setting.php b/civicrm/settings/Url.setting.php index f41f8363aeb83ba3a32acdb590da6d8dc60253c2..6c250b1ee9ad8dcc8e37905ab583dce0c1ca4bd5 100644 --- a/civicrm/settings/Url.setting.php +++ b/civicrm/settings/Url.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/setup/plugins/blocks/components.tpl.php b/civicrm/setup/plugins/blocks/components.tpl.php index 0c129709b474fb4c93347e5339735bddf04b72cf..2949a48c229407bbaea018c0efd0e37b197ad77d 100644 --- a/civicrm/setup/plugins/blocks/components.tpl.php +++ b/civicrm/setup/plugins/blocks/components.tpl.php @@ -2,6 +2,8 @@ endif; ?> <h2 id="components"><?php echo ts('Components'); ?></h2> +<p class="comp-error-required"><?php echo ts('At least one component must be enabled.'); ?></p> + <div> <?php foreach ($model->getField('components', 'options') as $comp => $label): ?> <input class="comp-cb sr-only" style="display: none;" type="checkbox" name="civisetup[components][<?php echo $comp; ?>]" id="civisetup[components][<?php echo $comp; ?>]" <?php echo in_array($comp, $model->components) ? 'checked' : '' ?>> @@ -16,3 +18,11 @@ endif; ?> <strong><?php echo ts('Tip'); ?></strong>: <?php echo ts('Not sure? That\'s OK. After installing, you can enable and disable components at any time.'); ?> </p> + +<script type="text/javascript"> + csj$(function($){ + $('.comp-cb').useValidator(function(){ + $('.comp-error-required').toggleError($('.comp-cb:checked').length == 0); + }); + }); +</script> diff --git a/civicrm/setup/plugins/init/Drupal.civi-setup.php b/civicrm/setup/plugins/init/Drupal.civi-setup.php index 75e7c5a3d4c87756ce88560e34dec84eb9c5860a..b24d7c164cba6e70d5b6b7ca8bd2ebbcc2c5bd74 100644 --- a/civicrm/setup/plugins/init/Drupal.civi-setup.php +++ b/civicrm/setup/plugins/init/Drupal.civi-setup.php @@ -59,7 +59,7 @@ if (!defined('CIVI_SETUP')) { // Compute default locale. global $language; - $model->lang = \Civi\Setup\LocaleUtil::pickClosest($language->langcode, $model->getField('lang', 'options')); + $model->lang = \Civi\Setup\LocaleUtil::pickClosest($language->langcode ?? NULL, $model->getField('lang', 'options')); }); function _drupal_civisetup_getPublicFiles() { diff --git a/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php b/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php index 90a6df717495e0a09b79add9e44856ec25d5b073..1d2f862a501afacb7eba833c20676342ccd5f796 100644 --- a/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php @@ -16,6 +16,13 @@ if (!defined('CIVI_SETUP')) { } \Civi\Setup::log()->info(sprintf('[%s] Flush CMS metadata', basename(__FILE__))); + // If the admin activated the module first, and then ran web-based installer, + // then some hooks (eg hook_menu) may not fire until we fix this flag. + $initialized = &backdrop_static('civicrm_initialize', FALSE); + $failure = &backdrop_static('civicrm_initialize_failure', FALSE); + $initialized = TRUE; + $failure = FALSE; + system_rebuild_module_data(); module_enable(array('civicrm', 'civicrmtheme')); backdrop_flush_all_caches(); diff --git a/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php b/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php index d761cb7a33e97a58f3a0da4128fe8bec94d4b81a..ef2bb25cc2fd0c7bec54fead7d53242985cfaf5b 100644 --- a/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php @@ -16,6 +16,13 @@ if (!defined('CIVI_SETUP')) { } \Civi\Setup::log()->info(sprintf('[%s] Flush CMS metadata', basename(__FILE__))); + // If the admin activated the module first, and then ran web-based installer, + // then some hooks (eg hook_menu) may not fire until we fix this flag. + $initialized = &drupal_static('civicrm_initialize', FALSE); + $failure = &drupal_static('civicrm_initialize_failure', FALSE); + $initialized = TRUE; + $failure = FALSE; + system_rebuild_module_data(); module_enable(array('civicrm', 'civicrmtheme')); drupal_flush_all_caches(); diff --git a/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php b/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php index e5a6b0b5d64341e4487ce3cc5b44ad800104d2bd..88170571b5dc05283476e6b6ea6522c5c936fc93 100644 --- a/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php @@ -9,6 +9,17 @@ if (!defined('CIVI_SETUP')) { exit("Installation plugins must only be loaded by the installer.\n"); } +Civi\Setup::dispatcher() + ->addListener('civi.setup.checkRequirements', function (\Civi\Setup\Event\CheckRequirementsEvent $e) { + \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'checkRequirements')); + $model = $e->getModel(); + + if (empty($model->components)) { + $e->addError('system', 'components', "System must have at least one active component."); + return; + } + }); + \Civi\Setup::dispatcher() ->addListener('civi.setup.installDatabase', function (\Civi\Setup\Event\InstallDatabaseEvent $e) { \Civi\Setup::log()->info('[InstallComponents.civi-setup.php] Activate components: ' . implode(" ", $e->getModel()->components)); diff --git a/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php b/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php index 62543fd29c7a9e566a83598722f3f0adf337ecb3..0da89b6b890ce177a31481c8065289b713dcd154 100644 --- a/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php @@ -14,5 +14,11 @@ if (!defined('CIVI_SETUP')) { if ($e->getModel()->lang) { \Civi\Setup::log()->info('[SetLanguage.civi-setup.php] Set default language to ' . $e->getModel()->lang); \Civi::settings()->set('lcMessages', $e->getModel()->lang); + + // Ensure that post-install messages are displayed in the new locale. + // Note: This arguably shouldn't be necessary since `$tsLocale` is generally setup before installation, + // but it may get trampled during bootstrap. + $domain = CRM_Core_BAO_Domain::getDomain(); + \CRM_Core_BAO_ConfigSetting::applyLocale(\Civi::settings($domain->id), $domain->locales); } }, \Civi\Setup::PRIORITY_LATE + 400); diff --git a/civicrm/setup/res/error.html b/civicrm/setup/res/error.html deleted file mode 100644 index 9bfe8e56de6bdcbd09c7acde5ba4716a7d2cbe45..0000000000000000000000000000000000000000 --- a/civicrm/setup/res/error.html +++ /dev/null @@ -1,17 +0,0 @@ -<?php \Civi\Setup::assertRunning(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title><?php echo $errorTitle ?></title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="stylesheet" type="text/css" href=<?php echo $installURLPath . "template.css"?> /> -</head> - -<body> -<div id="All"> - <h1><?php echo $errorTitle ?></h1> - - <?php echo $errorMsg ?> - -</div> -</body> -</html> diff --git a/civicrm/setup/res/finished.Backdrop.php b/civicrm/setup/res/finished.Backdrop.php index 51db493792e07fec3709d3ed422d7e518a4c1043..68ed482e910cf4241922b1e53bda1e538de7c0bb 100644 --- a/civicrm/setup/res/finished.Backdrop.php +++ b/civicrm/setup/res/finished.Backdrop.php @@ -1,39 +1,19 @@ <?php \Civi\Setup::assertRunning(); ?> <?php -throw new \Exception("A draft copy of this file is available but has not been tested. Please edit " . __FILE__); - -// FIXME: Compute URL's with backdrop functions (e.g. 'url(...)') -// FIXME: Just echo instead of doing $output silliness. -// FIXME: Use finished.Common.php instead of $commonOutputMessage. - -$registerSiteURL = "https://civicrm.org/register-site"; -$commonOutputMessage = "<li>" . ts("Have you registered this site at CiviCRM.org? If not, please help strengthen the CiviCRM ecosystem by taking a few minutes to <a %1>fill out the site registration form</a>. The information collected will help us prioritize improvements, target our communications and build the community. If you have a technical role for this site, be sure to check Keep in Touch to receive technical updates (a low volume mailing list).", array(1 => "href='$registerSiteURL' target='_blank'")) . "</li>" -. "<li>" . ts("We have integrated KCFinder with CKEditor and TinyMCE. This allows a user to upload images. All uploaded images are public.") . "</li>"; - -$output = NULL; -$output .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; -$output .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'; -$output .= '<head>'; -$output .= '<title>' . ts('CiviCRM Installed') . '</title>'; -$output .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; -$output .= '<link rel="stylesheet" type="text/css" href="template.css" />'; -$output .= '</head>'; -$output .= '<body>'; -$output .= '<div style="padding: 1em;"><p class="good">' . ts('CiviCRM has been successfully installed') . '</p>'; -$output .= '<ul>'; - -$backdropURL = civicrm_cms_base(); -$backdropPermissionsURL = "{$backdropURL}index.php?q=admin/config/people/permissions"; -$backdropURL .= "index.php?q=civicrm/admin/configtask&reset=1"; - -$output .= "<li>" . ts("Backdrop user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", array( - 1 => "target='_blank' href='{$backdropPermissionsURL}'", - 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'", -)) . "</li>"; -$output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$backdropURL'")) . "</li>"; -$output .= $commonOutputMessage; -$output .= '</ul>'; -$output .= '</div>'; -$output .= '</body>'; -$output .= '</html>'; -echo $output; +$backdropPermissionsURL = url('admin/config/people/permissions'); +$backdropURL = url('civicrm/admin/configtask', [ + 'query' => ['reset' => 1], +]); +?> +<div style="padding: 1em;"> + <h1><?php echo ts('CiviCRM Installed'); ?></h1> + <p class="good"><?php echo ts('CiviCRM has been successfully installed'); ?></p> + <ul> + <li><?php echo ts("Backdrop user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", array( + 1 => "target='_blank' href='{$backdropPermissionsURL}'", + 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'", +)); ?></li> + <li><?php echo ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$backdropURL'")); ?></li> + <?php include 'finished.Common.php'; ?> + </ul> +</div> diff --git a/civicrm/setup/res/finished.Drupal.php b/civicrm/setup/res/finished.Drupal.php index 1785f7ad41173bb03ca9c9d6c31a6d5a657a4506..2b64ec6bd28230b93530bd3cc700318ace19d5c7 100644 --- a/civicrm/setup/res/finished.Drupal.php +++ b/civicrm/setup/res/finished.Drupal.php @@ -1,22 +1,12 @@ <?php \Civi\Setup::assertRunning(); ?> <?php -throw new \Exception("A draft copy of this file is available but has not been tested. Please edit " . __FILE__); - $drupalPermissionsURL = url('admin/people/permissions'); $drupalURL = url('civicrm/admin/configtask', array( 'query' => array( 'reset' => 1, ), )); -?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title><?php echo ts('CiviCRM Installed'); ?></title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <link rel="stylesheet" type="text/css" href="template.css"/> -</head> -<body> +?> <div style="padding: 1em;"> <h1><?php echo ts('CiviCRM Installed'); ?></h1> <p class="good"><?php echo ts('CiviCRM has been successfully installed'); ?></p> @@ -29,5 +19,3 @@ $drupalURL = url('civicrm/admin/configtask', array( <?php include 'finished.Common.php'; ?> </ul> </div> -</body> -</html> diff --git a/civicrm/setup/res/installer.tpl.php b/civicrm/setup/res/installer.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..e335447270c20342a6cdf8380217c0d9a6955ce4 --- /dev/null +++ b/civicrm/setup/res/installer.tpl.php @@ -0,0 +1,21 @@ +<?php \Civi\Setup::assertRunning(); ?> +<?php +$mainClasses = array( + 'civicrm-setup-body', + count($reqs->getErrors()) ? 'has-errors' : '', + count($reqs->getWarnings()) ? 'has-warnings' : '', + (count($reqs->getErrors()) + count($reqs->getWarnings()) > 0) ? 'has-problems' : '', + (count($reqs->getErrors()) + count($reqs->getWarnings()) === 0) ? 'has-no-problems' : '', +); +?> + +<div class="<?php echo implode(' ', $mainClasses); ?>"> +<div id="All"> + +<form name="civicrm_form" method="post" action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?>"> + + <?php echo $ctrl->renderBlocks($_tpl_params); ?> + +</form> +</div> +</div> diff --git a/civicrm/setup/res/jquery.setupui.js b/civicrm/setup/res/jquery.setupui.js new file mode 100644 index 0000000000000000000000000000000000000000..e000da4cd02edcaab665b2fbc666471e3204a502 --- /dev/null +++ b/civicrm/setup/res/jquery.setupui.js @@ -0,0 +1,34 @@ +/** + * This is a jQuery plugin which adds some helpers for the setup UI. + */ +(function($){ + /** + * Enable or disable an error message. + * + * <p id="my-error-message">The world is one fire.</p> + * Ex: $('#my-error-message').toggleError(false) + * + * @param bool isError + */ + $.fn.toggleError = function (isError) { + this.toggleClass('install-validate-ok', !isError) + .toggleClass('install-validate-bad', isError) + .toggleClass('error', isError); + + var errors = $('.install-validate-bad'); + $('#install_button').prop('disabled', errors.length > 0); + return this; + }; + + /** + * Ex: $('.watch-these').useValidator(function(){ + * $('#some-error-message').toggleError(booleanExpression); + * }) + * @param cb + */ + $.fn.useValidator = function(cb) { + cb(); + this.on('change', cb); + return this; + }; +})(jQuery); \ No newline at end of file diff --git a/civicrm/setup/res/page.tpl.php b/civicrm/setup/res/page.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..3b3281cf6700297477735aeec277917e6a74366e --- /dev/null +++ b/civicrm/setup/res/page.tpl.php @@ -0,0 +1,31 @@ +<?php \Civi\Setup::assertRunning(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $shortLangCode; ?>" lang="<?php echo $shortLangCode; ?>" dir="<?php echo $textDirection; ?>"> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <title><?php echo htmlentities($pageTitle); ?></title> + <?php foreach ($pageAssets as $pageAsset) { + switch ($pageAsset['type']) { + case 'script-url': + printf("<script type=\"text/javascript\" src=\"%s\"></script>", htmlentities($pageAsset['url'])); + break; + + case 'script-code': + printf("<script type=\"text/javascript\">\n%s\n</script>", $pageAsset['code']); + break; + + case 'style-url': + printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\" />", htmlentities($pageAsset['url'])); + break; + + default: + throw new \Exception("Unrecognized page asset: " . $pageAsset['type']); + + } + } ?> +</head> +<body> + +<?php echo $pageBody; ?> + +</body> +</html> diff --git a/civicrm/setup/res/template.css b/civicrm/setup/res/template.css index 4d05aba3f54370ea924a0ea77e7a3954a7d4677f..5a2b3ea1060896e84c97e6e4337fa3f7852e78b8 100644 --- a/civicrm/setup/res/template.css +++ b/civicrm/setup/res/template.css @@ -84,7 +84,7 @@ body { padding-bottom: 1.5em; } -.civicrm-setup-body label span { +.civicrm-setup-block-components label span { float: left; width: 120px; } @@ -130,6 +130,13 @@ body { font-size: 80%; } +.civicrm-setup-body .install-validate-ok { + display: none; +} + +.civicrm-setup-body .install-validate-bad { +} + .civicrm-setup-body .reqTable { border-collapse: collapse; width: 100%; @@ -156,7 +163,7 @@ body { .civicrm-setup-body .comp-box { height: 3.5em; - width: 31%; + width: 30%; display: inline-block; padding: 0.5em; padding-top: 15px; @@ -223,6 +230,10 @@ body { .civicrm-setup-body input[type=submit]:hover { background: #60A237; } +.civicrm-setup-body input[type=submit]:disabled { + background: #888; + cursor: not-allowed; +} .civicrm-setup-body .settingsTable input[type=text] { width: 80%; } diff --git a/civicrm/setup/res/template.php b/civicrm/setup/res/template.php deleted file mode 100644 index 4af55b0d3c7e74066069f4362206796ea702f470..0000000000000000000000000000000000000000 --- a/civicrm/setup/res/template.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php \Civi\Setup::assertRunning(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $short_lang_code; ?>" lang="<?php echo $short_lang_code; ?>" dir="<?php echo $text_direction; ?>"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> - <title><?php echo ts('CiviCRM Installer'); ?></title> - <script type="text/javascript" src="<?php echo $ctrl->getUrl('jquery.js'); ?>"></script> - <script type="text/javascript"> - window.csj$ = jQuery.noConflict(); - </script> - <link rel="stylesheet" type="text/css" href=<?php echo $installURLPath . "template.css"?> /> - <link rel="stylesheet" type="text/css" href=<?php echo $ctrl->getUrl('font-awesome.css') ?> /> -<?php -if ($text_direction == 'rtl') { - echo " <link rel='stylesheet' type='text/css' href='{$installURLPath}template-rtl.css' />\n"; -} -?> -</head> -<body> - -<?php -$mainClasses = array( - 'civicrm-setup-body', - count($reqs->getErrors()) ? 'has-errors' : '', - count($reqs->getWarnings()) ? 'has-warnings' : '', - (count($reqs->getErrors()) + count($reqs->getWarnings()) > 0) ? 'has-problems' : '', - (count($reqs->getErrors()) + count($reqs->getWarnings()) === 0) ? 'has-no-problems' : '', -); -?> - -<div class="<?php echo implode(' ', $mainClasses); ?>"> -<div id="All"> - -<form name="civicrm_form" method="post" action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?>"> - - <?php echo $ctrl->renderBlocks($_tpl_params); ?> - -</form> -</div> -</div> -</body> -</html> diff --git a/civicrm/setup/src/Setup.php b/civicrm/setup/src/Setup.php index fb225ddb259376c7d5525316bc126849744dd558..04dd426b2b3fb4eb033306c9655fe9021d4ab585 100644 --- a/civicrm/setup/src/Setup.php +++ b/civicrm/setup/src/Setup.php @@ -16,7 +16,7 @@ use Symfony\Component\EventDispatcher\EventDispatcher; class Setup { - const PROTOCOL = '1.0'; + const PROTOCOL = '1.1'; const PRIORITY_START = 2000; const PRIORITY_PREPARE = 1000; diff --git a/civicrm/setup/src/Setup/BasicRunner.php b/civicrm/setup/src/Setup/BasicRunner.php index f0aaaefb16c1f8b8b2aeaca365bd041f5840e1f8..783f50dee9b2c257ad490afd9a484f57e8fb7978 100644 --- a/civicrm/setup/src/Setup/BasicRunner.php +++ b/civicrm/setup/src/Setup/BasicRunner.php @@ -11,16 +11,45 @@ class BasicRunner { * it may be easier to work directly with `getCtrl()->run(...)` which * handles inputs/outputs in a more abstract fashion. * - * @param object $ctrl + * @param \Civi\Setup\UI\SetupController $ctrl * A web controller. */ public static function run($ctrl) { $method = $_SERVER['REQUEST_METHOD']; - list ($headers, $body) = $ctrl->run($method, ($method === 'GET' ? $_GET : $_POST)); - foreach ($headers as $k => $v) { + + /** @var \Civi\Setup\UI\SetupResponse $response */ + $response = $ctrl->run($method, ($method === 'GET' ? $_GET : $_POST)); + + self::send($ctrl, $response); + } + + /** + * @param \Civi\Setup\UI\SetupController $ctrl + * @param \Civi\Setup\UI\SetupResponse $response + */ + public static function send($ctrl, $response) { + http_response_code($response->code); + foreach ($response->headers as $k => $v) { header("$k: $v"); } - echo $body; + + /** @var \Civi\Setup\Model $model */ + $model = \Civi\Setup::instance()->getModel(); + + if ($response->isComplete) { + echo $response->body; + } + else { + $pageVars = [ + 'pageAssets' => $response->assets, + 'pageTitle' => $response->title, + 'pageBody' => $response->body, + 'shortLangCode' => \CRM_Core_I18n_PseudoConstant::shortForLong($model->lang), + 'textDirection' => (\CRM_Core_I18n::isLanguageRTL($model->lang) ? 'rtl' : 'ltr'), + ]; + + echo $ctrl->render($ctrl->getResourcePath('page.tpl.php'), $pageVars); + } } } diff --git a/civicrm/setup/src/Setup/LocaleUtil.php b/civicrm/setup/src/Setup/LocaleUtil.php index fe0c9f0e6042b685345fdd87a511844bfe0db8e8..f996eb9a6680a3e79a0a67cda7fcb8d02a3bc4a2 100644 --- a/civicrm/setup/src/Setup/LocaleUtil.php +++ b/civicrm/setup/src/Setup/LocaleUtil.php @@ -19,6 +19,10 @@ class LocaleUtil { * Ex: 'en_US'. */ public static function pickClosest($preferredLang, $availLangs, $default = 'en_US') { + if ($preferredLang === NULL || $preferredLang === '') { + return $default; + } + // Perhaps we have this exact language? if (isset($availLangs[$preferredLang])) { return $preferredLang; diff --git a/civicrm/setup/src/Setup/UI/SetupController.php b/civicrm/setup/src/Setup/UI/SetupController.php index 0d1d1a0d4abd198ed7404d33735baff3fe8e47d1..c7e685f9fff8ffc7720dfcaf122ee5c375c13a66 100644 --- a/civicrm/setup/src/Setup/UI/SetupController.php +++ b/civicrm/setup/src/Setup/UI/SetupController.php @@ -48,9 +48,7 @@ class SetupController implements SetupControllerInterface { * Ex: 'GET' or 'POST'. * @param array $fields * List of any HTTP GET/POST fields. - * @return array - * The HTTP headers and response text. - * [0 => array $headers, 1 => string $body]. + * @return SetupResponse */ public function run($method, $fields = array()) { $this->setup->getDispatcher()->dispatch('civi.setupui.run', new UIBootEvent($this, $method, $fields)); @@ -74,14 +72,12 @@ class SetupController implements SetupControllerInterface { * Ex: 'GET' or 'POST'. * @param array $fields * List of any HTTP GET/POST fields. - * @return array - * The HTTP headers and response text. - * [0 => array $headers, 1 => string $body]. + * @return SetupResponse */ public function runStart($method, $fields) { $checkInstalled = $this->setup->checkInstalled(); if ($checkInstalled->isDatabaseInstalled() || $checkInstalled->isSettingInstalled()) { - return $this->createError("CiviCRM is already installed"); + return $this->renderAlreadyInstalled(); } /** @@ -89,21 +85,14 @@ class SetupController implements SetupControllerInterface { */ $model = $this->setup->getModel(); - $tplFile = $this->getResourcePath('template.php'); + $tplFile = $this->getResourcePath('installer.tpl.php'); $tplVars = [ - 'ctrl' => $this, - 'civicrm_version' => \CRM_Utils_System::version(), - 'installURLPath' => $this->urls['res'], - 'short_lang_code' => \CRM_Core_I18n_PseudoConstant::shortForLong($GLOBALS['tsLocale']), - 'text_direction' => (\CRM_Core_I18n::isLanguageRTL($GLOBALS['tsLocale']) ? 'rtl' : 'ltr'), 'model' => $model, 'reqs' => $this->setup->checkRequirements(), ]; // $body = "<pre>" . htmlentities(print_r(['method' => $method, 'urls' => $this->urls, 'data' => $fields], 1)) . "</pre>"; - $body = $this->render($tplFile, $tplVars); - - return array(array(), $body); + return $this->createPage(ts('CiviCRM Installer'), $this->render($tplFile, $tplVars)); } /** @@ -113,14 +102,12 @@ class SetupController implements SetupControllerInterface { * Ex: 'GET' or 'POST'. * @param array $fields * List of any HTTP GET/POST fields. - * @return array - * The HTTP headers and response text. - * [0 => array $headers, 1 => string $body]. + * @return SetupResponse */ public function runInstall($method, $fields) { $checkInstalled = $this->setup->checkInstalled(); if ($checkInstalled->isDatabaseInstalled() || $checkInstalled->isSettingInstalled()) { - return $this->createError("CiviCRM is already installed"); + return $this->renderAlreadyInstalled(); } $reqs = $this->setup->checkRequirements(); @@ -130,30 +117,34 @@ class SetupController implements SetupControllerInterface { $this->setup->installFiles(); $this->setup->installDatabase(); - - $m = $this->setup->getModel(); - $tplFile = $this->getResourcePath('finished.' . $m->cms . '.php'); - if (file_exists($tplFile)) { - $tplVars = array(); - return array(array(), $this->render($tplFile, $tplVars)); - } - else { - return $this->createError("Installation succeeded. However, the final page ($tplFile) was not available."); - } + return $this->renderFinished(); } /** * Partially bootstrap Civi services (such as localization). */ protected function boot($method, $fields) { + /** @var \Civi\Setup\Model $model */ $model = $this->setup->getModel(); define('CIVICRM_UF', $model->cms); + define('CIVICRM_TEMPLATE_COMPILEDIR', $model->templateCompilePath); + define('CIVICRM_UF_BASEURL', $model->cmsBaseUrl); + + global $civicrm_root; + $civicrm_root = $model->srcPath; // Set the Locale (required by CRM_Core_Config) global $tsLocale; $tsLocale = 'en_US'; + global $civicrm_paths; + foreach ($model->paths as $pathVar => $pathValues) { + foreach (['url', 'path'] as $aspectName => $aspectValue) { + $civicrm_paths[$pathVar][$aspectName] = $aspectValue; + } + } + // CRM-16801 This validates that lang is valid by looking in $langs. // NB: the variable is initial a $_REQUEST for the initial page reload, // then becomes a $_POST when the installation form is submitted. @@ -174,15 +165,43 @@ class SetupController implements SetupControllerInterface { $this->setup->getDispatcher()->dispatch('civi.setupui.boot', new UIBootEvent($this, $method, $fields)); } + /** + * @param string $message + * @param string $title + * @return SetupResponse + */ public function createError($message, $title = 'Error') { - return [ - [], - $this->render($this->getResourcePath('error.html'), [ - 'errorTitle' => htmlentities($title), - 'errorMsg' => htmlentities($message), - 'installURLPath' => $this->urls['res'], - ]), + return $this->createPage($title, sprintf('<h1>%s</h1>\n%s', htmlentities($title), htmlentities($message))); + } + + /** + * @param string $title + * @param string $body + * @return SetupResponse + */ + public function createPage($title, $body) { + /** @var \Civi\Setup\Model $model */ + $model = $this->setup->getModel(); + + $r = new SetupResponse(); + $r->code = 200; + $r->headers = []; + $r->isComplete = FALSE; + $r->title = $title; + $r->body = $body; + $r->assets = [ + ['type' => 'script-url', 'url' => $this->getUrl('jquery.js')], + ['type' => 'script-url', 'url' => $this->urls['res'] . "jquery.setupui.js"], + ['type' => 'script-code', 'code' => 'window.csj$ = jQuery.noConflict();'], + ['type' => 'style-url', 'url' => $this->urls['res'] . "template.css"], + ['type' => 'style-url', 'url' => $this->getUrl('font-awesome.css')], ]; + + if (\CRM_Core_I18n::isLanguageRTL($model->lang)) { + $r->assets[] = ['type' => 'style-url', 'url' => $this->urls['res'] . "template-rtl.css"]; + } + + return $r; } /** @@ -195,6 +214,7 @@ class SetupController implements SetupControllerInterface { * @return string */ public function render($_tpl_file, $_tpl_params = array()) { + $_tpl_params = array_merge($this->getCommonTplVars(), $_tpl_params); extract($_tpl_params); ob_start(); require $_tpl_file; @@ -290,4 +310,34 @@ class SetupController implements SetupControllerInterface { return $this->setup; } + private function renderAlreadyInstalled() { + // return $this->createError("CiviCRM is already installed"); + return $this->renderFinished(); + } + + /** + * @return SetupResponse + */ + private function renderFinished() { + $m = $this->setup->getModel(); + $tplFile = $this->getResourcePath('finished.' . $m->cms . '.php'); + if (file_exists($tplFile)) { + return $this->createPage(ts('CiviCRM Installed'), $this->render($tplFile)); + } + else { + return $this->createError("Installation succeeded. However, the final page ($tplFile) was not available."); + } + } + + /** + * @return array + */ + private function getCommonTplVars() { + return [ + 'ctrl' => $this, + 'civicrm_version' => \CRM_Utils_System::version(), + 'installURLPath' => $this->urls['res'], + ]; + } + } diff --git a/civicrm/setup/src/Setup/UI/SetupResponse.php b/civicrm/setup/src/Setup/UI/SetupResponse.php new file mode 100644 index 0000000000000000000000000000000000000000..43c42451f2a0a9e44acb9312964cac8d694389b4 --- /dev/null +++ b/civicrm/setup/src/Setup/UI/SetupResponse.php @@ -0,0 +1,95 @@ +<?php +namespace Civi\Setup\UI; + +/** + * This represents a response from the Setup UI. + * + * Previously, responses where an array of the form: + * [0 => array $headers, 1 => string $body]. + * + * This implements \ArrayAccess for backward compatibility. + */ +class SetupResponse implements \ArrayAccess { + + /** + * @var bool + * + * TRUE if the body represents a fully formed HTML page. + * FALSE if the body is a fragment of an HTML page. + */ + public $isComplete = TRUE; + + /** + * @var array + * Ex: ['Content-Type': 'text/html'] + */ + public $headers = []; + + /** + * @var array + * Ex: $assets[0] = ['type' => 'script-url', 'url' => 'http://foobar']; + */ + public $assets = []; + + /** + * @var string + * Ex: '<h1>Hello world</h1>' + */ + public $body = ''; + + /** + * @var string|null + * The title of the response page (if it's an HTML response). + */ + public $title = NULL; + + /** + * @var int + */ + public $code = 200; + + /** + * @var array + * Array(int $oldPos => string $newName). + */ + protected $oldFieldMap; + + /** + * SetupResponse constructor. + */ + public function __construct() { + $this->oldFieldMap = [ + 0 => 'headers', + 1 => 'body', + ]; + } + + public function offsetExists($offset) { + return isset($this->oldFieldMap[$offset]); + } + + public function &offsetGet($offset) { + if (isset($this->oldFieldMap[$offset])) { + $field = $this->oldFieldMap[$offset]; + return $this->{$field}; + } + else { + return NULL; + } + } + + public function offsetSet($offset, $value) { + if (isset($this->oldFieldMap[$offset])) { + $field = $this->oldFieldMap[$offset]; + $this->{$field} = $value; + } + } + + public function offsetUnset($offset) { + if (isset($this->oldFieldMap[$offset])) { + $field = $this->oldFieldMap[$offset]; + unset($this->{$field}); + } + } + +} diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index b181200c6874be1e3bcf887448d09ac1845fd0d0..48d11ec0e3b65c500c76e356127f09cb75f89cf8 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -68,6 +68,7 @@ DROP TABLE IF EXISTS `civicrm_mailing_job`; DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`; DROP TABLE IF EXISTS `civicrm_mailing_group`; DROP TABLE IF EXISTS `civicrm_mailing`; +DROP TABLE IF EXISTS `civicrm_relationship_cache`; DROP TABLE IF EXISTS `civicrm_relationship`; DROP TABLE IF EXISTS `civicrm_dashboard_contact`; DROP TABLE IF EXISTS `civicrm_action_log`; @@ -3681,6 +3682,49 @@ CREATE TABLE `civicrm_relationship` ( , CONSTRAINT FK_civicrm_relationship_contact_id_a FOREIGN KEY (`contact_id_a`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_contact_id_b FOREIGN KEY (`contact_id_b`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_case_id FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +-- /******************************************************* +-- * +-- * civicrm_relationship_cache +-- * +-- * The cache permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the cache. Joins should begin on the near side and extract info from the far side. +-- * +-- *******************************************************/ +CREATE TABLE `civicrm_relationship_cache` ( + + + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship Cache ID', + `relationship_id` int unsigned NOT NULL COMMENT 'id of the relationship (FK to civicrm_relationship.id)', + `relationship_type_id` int unsigned NOT NULL COMMENT 'id of the relationship type', + `orientation` char(3) NOT NULL COMMENT 'The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.', + `near_contact_id` int unsigned NOT NULL COMMENT 'id of the first contact', + `near_relation` varchar(64) COMMENT 'name for relationship of near_contact to far_contact.', + `far_contact_id` int unsigned NOT NULL COMMENT 'id of the second contact', + `far_relation` varchar(64) COMMENT 'name for relationship of far_contact to near_contact.', + `is_active` tinyint DEFAULT 1 COMMENT 'is the relationship active ?', + `start_date` date COMMENT 'date when the relationship started', + `end_date` date COMMENT 'date when the relationship ended' +, + PRIMARY KEY (`id`) + + , UNIQUE INDEX `UI_relationship`( + relationship_id + , orientation + ) + , INDEX `index_nearid_nearrelation`( + near_contact_id + , near_relation + ) + , INDEX `index_nearid_farrelation`( + near_contact_id + , far_relation + ) + , INDEX `index_near_relation`( + near_relation + ) + +, CONSTRAINT FK_civicrm_relationship_cache_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_cache_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_cache_near_contact_id FOREIGN KEY (`near_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_cache_far_contact_id FOREIGN KEY (`far_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + -- /******************************************************* -- * -- * civicrm_mailing diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 1d59ea7c90f06b21881e349abb0820e140ccfda5..5082547f7cd650d0d1dcae72e4a66f3cee5dc1ea 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -9,7 +9,7 @@ -- Generated from civicrm_country.tpl -- DO NOT EDIT. Generated by CRM_Core_CodeGen -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; /******************************************************* * @@ -289,7 +289,7 @@ INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated -- Generated from civicrm_state_province.tpl -- DO NOT EDIT. Generated by CRM_Core_CodeGen -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (1000, 1228, "AL", "Alabama"), @@ -4673,7 +4673,7 @@ VALUES ('Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1), ('Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1), ('Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {welcome.group} mailing list has been activated.','Welcome. Your subscription to the {welcome.group} mailing list has been activated.',1,1), - ('Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking ',1,1), + ('Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}',1,1), ('Resubscribe Message','Resubscribe','Re-subscribe Confirmation','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking <a href=\"{action.unsubscribeUrl}\">here</a>.','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking {action.unsubscribeUrl}',1,1), ('Opt-out Message','OptOut','Opt-out Confirmation','Your email address has been removed from {domain.name} mailing lists.','Your email address has been removed from {domain.name} mailing lists.',1,1), ('Auto-responder','Reply','Please Send Inquiries to Our Contact Email Address','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.',1,1); @@ -5946,7 +5946,6 @@ VALUES ('AuthNet', 'Authorize.Net', NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1), ('PayJunction', 'PayJunction', NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1), ('eWAY', 'eWAY (Single Currency)', NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0), - ('Payment_Express', 'DPS Payment Express', NULL,0,0,'User ID','Key','Mac Key - pxaccess only',NULL,'Payment_PaymentExpress','https://www.paymentexpress.com/pleaseenteraurl',NULL,NULL,NULL,'https://www.paymentexpress.com/pleaseenteratesturl',NULL,NULL,NULL,4,0), ('Dummy', 'Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1), ('Elavon', 'Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0), ('Realex', 'Realex Payment', NULL,0,0,'Merchant ID', 'Password', NULL, 'Account', 'Payment_Realex', 'https://epage.payandshop.com/epage.cgi', NULL, NULL, NULL, 'https://epage.payandshop.com/epage-remote.cgi', NULL, NULL, NULL, 1, 0), @@ -23093,6 +23092,7 @@ VALUES -- in the setup routine based on their tags & using the standard extension install api. -- do not try this at home folks. INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'sequentialcreditnotes', 'Sequential credit notes', 'Sequential credit notes', 'sequentialcreditnotes', 1); +INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'eventcart', 'Event cart', 'Event cart', 'eventcart', 1); -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | @@ -23897,4 +23897,4 @@ INSERT INTO `civicrm_report_instance` ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`) VALUES ( @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}'); -UPDATE civicrm_domain SET version = '5.28.4'; +UPDATE civicrm_domain SET version = '5.29.0'; diff --git a/civicrm/sql/civicrm_drop.mysql b/civicrm/sql/civicrm_drop.mysql index 02eed15d01ca189366f23203345cde6468dcfb73..f8c3b79a5f7bba3334e5848f4c0e95425932191e 100644 --- a/civicrm/sql/civicrm_drop.mysql +++ b/civicrm/sql/civicrm_drop.mysql @@ -55,6 +55,7 @@ DROP TABLE IF EXISTS `civicrm_mailing_job`; DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`; DROP TABLE IF EXISTS `civicrm_mailing_group`; DROP TABLE IF EXISTS `civicrm_mailing`; +DROP TABLE IF EXISTS `civicrm_relationship_cache`; DROP TABLE IF EXISTS `civicrm_relationship`; DROP TABLE IF EXISTS `civicrm_dashboard_contact`; DROP TABLE IF EXISTS `civicrm_action_log`; diff --git a/civicrm/sql/civicrm_dummy_processor.mysql b/civicrm/sql/civicrm_dummy_processor.mysql index 70ede786c6f440861494c904f3c65953c1e2a7f6..30e2b1ef0bd7a2ac7cecf93e968c49c290216ce7 100644 --- a/civicrm/sql/civicrm_dummy_processor.mysql +++ b/civicrm/sql/civicrm_dummy_processor.mysql @@ -1,5 +1,5 @@ -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); SELECT @dp := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 0; SELECT @dpTest := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 1; diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 563d1c55835f08a7cdf0bc406bc60e9500f06001..d1972c9448dd3cefcbdad70c6538ed80c25c3125 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 5.7.26, for osx10.10 (x86_64) +-- MySQL dump 10.13 Distrib 5.7.30, for Linux (x86_64) -- --- Host: 127.0.0.1 Database: dmasterciv_tdjht +-- Host: 127.0.0.1 Database: 47testcivi_yg7kx -- ------------------------------------------------------ --- Server version 5.7.26 +-- Server version 5.7.30-0ubuntu0.18.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -87,7 +87,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity` WRITE; /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */; -INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES (1,NULL,10,'Subject for Pledge Acknowledgment','2019-12-23 00:52:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(2,NULL,10,'Subject for Pledge Acknowledgment','2020-04-16 02:44:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(3,NULL,10,'Subject for Pledge Acknowledgment','2019-11-08 01:59:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(4,NULL,9,'Subject for Tell a Friend','2019-10-06 17:52:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(5,NULL,10,'Subject for Pledge Acknowledgment','2020-02-19 07:55:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(6,NULL,10,'Subject for Pledge Acknowledgment','2020-01-08 15:52:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(7,NULL,10,'Subject for Pledge Acknowledgment','2019-11-01 05:05:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(8,NULL,10,'Subject for Pledge Acknowledgment','2020-01-01 18:35:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(9,NULL,10,'Subject for Pledge Acknowledgment','2019-12-24 23:18:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(10,NULL,10,'Subject for Pledge Acknowledgment','2019-10-17 18:29:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(11,NULL,10,'Subject for Pledge Acknowledgment','2019-07-30 21:54:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(12,NULL,9,'Subject for Tell a Friend','2020-03-16 22:59:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(13,NULL,9,'Subject for Tell a Friend','2019-12-16 02:48:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(14,NULL,10,'Subject for Pledge Acknowledgment','2019-12-24 12:10:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(15,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 01:17:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(16,NULL,9,'Subject for Tell a Friend','2020-05-24 17:31:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(17,NULL,9,'Subject for Tell a Friend','2019-07-31 12:30:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(18,NULL,10,'Subject for Pledge Acknowledgment','2019-06-15 23:09:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(19,NULL,9,'Subject for Tell a Friend','2019-12-22 21:08:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(20,NULL,9,'Subject for Tell a Friend','2019-10-19 22:51:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(21,NULL,10,'Subject for Pledge Acknowledgment','2020-03-28 08:18:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(22,NULL,9,'Subject for Tell a Friend','2020-04-23 14:31:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(23,NULL,9,'Subject for Tell a Friend','2019-12-17 03:28:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(24,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 14:49:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(25,NULL,10,'Subject for Pledge Acknowledgment','2019-06-26 17:20:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(26,NULL,9,'Subject for Tell a Friend','2019-09-02 07:38:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(27,NULL,9,'Subject for Tell a Friend','2020-01-03 06:23:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(28,NULL,9,'Subject for Tell a Friend','2019-12-03 17:05:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(29,NULL,10,'Subject for Pledge Acknowledgment','2020-05-20 23:57:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(30,NULL,9,'Subject for Tell a Friend','2019-11-19 23:48:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(31,NULL,10,'Subject for Pledge Acknowledgment','2020-05-25 17:06:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(32,NULL,10,'Subject for Pledge Acknowledgment','2020-05-20 10:23:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(33,NULL,10,'Subject for Pledge Acknowledgment','2019-10-18 03:17:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(34,NULL,9,'Subject for Tell a Friend','2019-08-06 23:11:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(35,NULL,10,'Subject for Pledge Acknowledgment','2019-12-16 20:27:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(36,NULL,10,'Subject for Pledge Acknowledgment','2020-05-24 12:18:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(37,NULL,9,'Subject for Tell a Friend','2019-09-20 04:40:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(38,NULL,9,'Subject for Tell a Friend','2020-04-06 02:45:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(39,NULL,9,'Subject for Tell a Friend','2020-01-12 20:17:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(40,NULL,9,'Subject for Tell a Friend','2019-08-01 06:36:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(41,NULL,10,'Subject for Pledge Acknowledgment','2020-05-26 19:32:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(42,NULL,9,'Subject for Tell a Friend','2019-09-20 13:23:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(43,NULL,9,'Subject for Tell a Friend','2019-10-26 04:36:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(44,NULL,10,'Subject for Pledge Acknowledgment','2019-06-18 17:35:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(45,NULL,9,'Subject for Tell a Friend','2019-08-01 23:09:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(46,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 17:14:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(47,NULL,10,'Subject for Pledge Acknowledgment','2020-02-19 15:24:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(48,NULL,10,'Subject for Pledge Acknowledgment','2020-03-04 01:11:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(49,NULL,10,'Subject for Pledge Acknowledgment','2020-03-06 09:42:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(50,NULL,10,'Subject for Pledge Acknowledgment','2019-07-19 06:05:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(51,NULL,10,'Subject for Pledge Acknowledgment','2020-04-03 23:12:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(52,NULL,9,'Subject for Tell a Friend','2019-11-26 10:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(53,NULL,9,'Subject for Tell a Friend','2020-04-26 23:14:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(54,NULL,9,'Subject for Tell a Friend','2019-08-21 22:50:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(55,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 10:48:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(56,NULL,9,'Subject for Tell a Friend','2020-02-11 13:34:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(57,NULL,10,'Subject for Pledge Acknowledgment','2019-07-06 06:22:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(58,NULL,9,'Subject for Tell a Friend','2019-12-16 12:59:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(59,NULL,10,'Subject for Pledge Acknowledgment','2019-09-02 20:22:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(60,NULL,10,'Subject for Pledge Acknowledgment','2020-03-29 16:48:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(61,NULL,10,'Subject for Pledge Acknowledgment','2019-11-19 08:10:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(62,NULL,10,'Subject for Pledge Acknowledgment','2019-09-02 04:36:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(63,NULL,10,'Subject for Pledge Acknowledgment','2019-06-25 19:55:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(64,NULL,10,'Subject for Pledge Acknowledgment','2020-03-20 19:49:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(65,NULL,9,'Subject for Tell a Friend','2019-06-27 14:57:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(66,NULL,10,'Subject for Pledge Acknowledgment','2020-03-01 16:38:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(67,NULL,9,'Subject for Tell a Friend','2019-10-17 20:34:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(68,NULL,9,'Subject for Tell a Friend','2019-07-16 15:24:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(69,NULL,10,'Subject for Pledge Acknowledgment','2020-03-18 10:07:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(70,NULL,10,'Subject for Pledge Acknowledgment','2020-03-15 15:43:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(71,NULL,10,'Subject for Pledge Acknowledgment','2020-01-25 23:44:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(72,NULL,10,'Subject for Pledge Acknowledgment','2019-09-26 17:35:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(73,NULL,9,'Subject for Tell a Friend','2020-04-08 12:37:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(74,NULL,10,'Subject for Pledge Acknowledgment','2019-12-02 15:48:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(75,NULL,9,'Subject for Tell a Friend','2019-09-08 01:01:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(76,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 22:22:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(77,NULL,9,'Subject for Tell a Friend','2020-01-11 05:10:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(78,NULL,10,'Subject for Pledge Acknowledgment','2020-02-14 10:22:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(79,NULL,10,'Subject for Pledge Acknowledgment','2019-10-14 05:57:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(80,NULL,10,'Subject for Pledge Acknowledgment','2020-01-23 08:05:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(81,NULL,10,'Subject for Pledge Acknowledgment','2019-11-11 13:21:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(82,NULL,9,'Subject for Tell a Friend','2020-04-02 18:20:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(83,NULL,9,'Subject for Tell a Friend','2020-01-27 02:24:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(84,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 16:13:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(85,NULL,10,'Subject for Pledge Acknowledgment','2019-09-03 18:00:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(86,NULL,9,'Subject for Tell a Friend','2019-09-24 16:11:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(87,NULL,10,'Subject for Pledge Acknowledgment','2019-10-02 17:37:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(88,NULL,9,'Subject for Tell a Friend','2020-05-22 16:55:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(89,NULL,9,'Subject for Tell a Friend','2019-06-26 15:15:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(90,NULL,9,'Subject for Tell a Friend','2019-12-12 16:32:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(91,NULL,10,'Subject for Pledge Acknowledgment','2020-04-16 10:25:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(92,NULL,10,'Subject for Pledge Acknowledgment','2019-06-19 10:14:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(93,NULL,9,'Subject for Tell a Friend','2020-02-24 15:37:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(94,NULL,9,'Subject for Tell a Friend','2020-02-08 23:28:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(95,NULL,9,'Subject for Tell a Friend','2019-08-11 13:08:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(96,NULL,10,'Subject for Pledge Acknowledgment','2019-11-01 04:36:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(97,NULL,10,'Subject for Pledge Acknowledgment','2020-01-31 19:33:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(98,NULL,9,'Subject for Tell a Friend','2020-03-02 18:16:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(99,NULL,9,'Subject for Tell a Friend','2019-09-18 03:21:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(100,NULL,9,'Subject for Tell a Friend','2019-10-06 06:01:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(101,NULL,9,'Subject for Tell a Friend','2019-09-04 16:26:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(102,NULL,10,'Subject for Pledge Acknowledgment','2020-03-03 10:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(103,NULL,9,'Subject for Tell a Friend','2019-10-21 06:06:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(104,NULL,9,'Subject for Tell a Friend','2019-10-17 19:21:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(105,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 19:32:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(106,NULL,9,'Subject for Tell a Friend','2019-09-04 14:28:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(107,NULL,9,'Subject for Tell a Friend','2020-01-02 08:09:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(108,NULL,10,'Subject for Pledge Acknowledgment','2020-03-10 12:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(109,NULL,9,'Subject for Tell a Friend','2019-09-07 00:14:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(110,NULL,9,'Subject for Tell a Friend','2020-06-09 08:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(111,NULL,10,'Subject for Pledge Acknowledgment','2020-01-23 03:29:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(112,NULL,10,'Subject for Pledge Acknowledgment','2019-11-22 13:34:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(113,NULL,9,'Subject for Tell a Friend','2020-04-11 06:07:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(114,NULL,10,'Subject for Pledge Acknowledgment','2020-02-04 04:05:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(115,NULL,10,'Subject for Pledge Acknowledgment','2020-06-09 20:24:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(116,NULL,10,'Subject for Pledge Acknowledgment','2020-01-30 04:44:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(117,NULL,9,'Subject for Tell a Friend','2020-05-01 21:14:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(118,NULL,10,'Subject for Pledge Acknowledgment','2019-08-28 04:20:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(119,NULL,10,'Subject for Pledge Acknowledgment','2019-10-15 09:30:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(120,NULL,9,'Subject for Tell a Friend','2019-09-14 04:13:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(121,NULL,10,'Subject for Pledge Acknowledgment','2019-10-31 11:02:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(122,NULL,9,'Subject for Tell a Friend','2019-09-01 15:08:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(123,NULL,9,'Subject for Tell a Friend','2019-09-01 04:20:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(124,NULL,9,'Subject for Tell a Friend','2020-03-06 13:21:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(125,NULL,10,'Subject for Pledge Acknowledgment','2020-03-08 17:11:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(126,NULL,9,'Subject for Tell a Friend','2019-10-18 22:30:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(127,NULL,9,'Subject for Tell a Friend','2020-04-15 18:55:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(128,NULL,10,'Subject for Pledge Acknowledgment','2020-01-01 05:27:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(129,NULL,9,'Subject for Tell a Friend','2020-01-14 08:52:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(130,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 20:41:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(131,NULL,10,'Subject for Pledge Acknowledgment','2019-07-29 13:53:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(132,NULL,10,'Subject for Pledge Acknowledgment','2019-07-05 01:54:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(133,NULL,10,'Subject for Pledge Acknowledgment','2020-01-13 19:20:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(134,NULL,9,'Subject for Tell a Friend','2019-12-12 03:05:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(135,NULL,10,'Subject for Pledge Acknowledgment','2020-01-17 16:08:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(136,NULL,9,'Subject for Tell a Friend','2020-04-19 08:42:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(137,NULL,10,'Subject for Pledge Acknowledgment','2019-12-07 00:08:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(138,NULL,10,'Subject for Pledge Acknowledgment','2019-08-23 22:05:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(139,NULL,9,'Subject for Tell a Friend','2020-01-01 00:03:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(140,NULL,10,'Subject for Pledge Acknowledgment','2019-10-11 09:41:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(141,NULL,9,'Subject for Tell a Friend','2019-12-14 00:14:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(142,NULL,9,'Subject for Tell a Friend','2020-03-19 16:17:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(143,NULL,10,'Subject for Pledge Acknowledgment','2020-05-17 13:17:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(144,NULL,9,'Subject for Tell a Friend','2020-04-02 01:45:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(145,NULL,9,'Subject for Tell a Friend','2019-08-23 11:15:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(146,NULL,10,'Subject for Pledge Acknowledgment','2019-11-25 00:48:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(147,NULL,10,'Subject for Pledge Acknowledgment','2020-01-29 10:59:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(148,NULL,9,'Subject for Tell a Friend','2019-11-27 19:33:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(149,NULL,9,'Subject for Tell a Friend','2020-03-17 14:01:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(150,NULL,10,'Subject for Pledge Acknowledgment','2020-05-04 02:52:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(151,NULL,10,'Subject for Pledge Acknowledgment','2020-04-29 22:45:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(152,NULL,9,'Subject for Tell a Friend','2020-02-05 00:29:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(153,NULL,10,'Subject for Pledge Acknowledgment','2020-02-03 09:51:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(154,NULL,9,'Subject for Tell a Friend','2019-07-10 21:21:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(155,NULL,10,'Subject for Pledge Acknowledgment','2019-10-05 04:32:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(156,NULL,9,'Subject for Tell a Friend','2019-06-22 10:01:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(157,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 14:39:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(158,NULL,10,'Subject for Pledge Acknowledgment','2020-04-01 07:26:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(159,NULL,9,'Subject for Tell a Friend','2019-06-18 22:39:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(160,NULL,10,'Subject for Pledge Acknowledgment','2019-12-02 19:43:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(161,NULL,9,'Subject for Tell a Friend','2020-04-28 17:23:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(162,NULL,9,'Subject for Tell a Friend','2020-05-28 19:28:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(163,NULL,10,'Subject for Pledge Acknowledgment','2020-06-03 10:58:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(164,NULL,9,'Subject for Tell a Friend','2019-08-03 14:10:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(165,NULL,9,'Subject for Tell a Friend','2019-10-17 04:15:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(166,NULL,9,'Subject for Tell a Friend','2020-03-14 07:47:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(167,NULL,9,'Subject for Tell a Friend','2019-07-20 06:01:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(168,NULL,9,'Subject for Tell a Friend','2019-09-06 07:48:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(169,NULL,10,'Subject for Pledge Acknowledgment','2020-03-29 16:57:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(170,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 14:09:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(171,NULL,10,'Subject for Pledge Acknowledgment','2019-07-13 14:05:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(172,NULL,9,'Subject for Tell a Friend','2020-01-14 06:45:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(173,NULL,9,'Subject for Tell a Friend','2019-07-04 07:39:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(174,NULL,9,'Subject for Tell a Friend','2019-08-01 04:44:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(175,NULL,9,'Subject for Tell a Friend','2019-09-25 05:54:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(176,NULL,9,'Subject for Tell a Friend','2020-05-03 18:23:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(177,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 22:17:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(178,NULL,9,'Subject for Tell a Friend','2019-12-26 05:15:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(179,NULL,10,'Subject for Pledge Acknowledgment','2019-07-12 09:38:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(180,NULL,9,'Subject for Tell a Friend','2020-01-11 14:35:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(181,NULL,9,'Subject for Tell a Friend','2019-07-19 05:47:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(182,NULL,9,'Subject for Tell a Friend','2019-12-12 06:28:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(183,NULL,10,'Subject for Pledge Acknowledgment','2020-01-13 11:38:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(184,NULL,10,'Subject for Pledge Acknowledgment','2019-09-14 00:56:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(185,NULL,9,'Subject for Tell a Friend','2019-12-04 12:37:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(186,NULL,10,'Subject for Pledge Acknowledgment','2019-10-26 14:31:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(187,NULL,10,'Subject for Pledge Acknowledgment','2020-02-10 21:29:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(188,NULL,9,'Subject for Tell a Friend','2019-07-27 11:50:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(189,NULL,9,'Subject for Tell a Friend','2019-12-28 00:50:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(190,NULL,9,'Subject for Tell a Friend','2020-01-09 22:35:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(191,NULL,10,'Subject for Pledge Acknowledgment','2020-05-08 20:17:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(192,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 11:47:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(193,NULL,9,'Subject for Tell a Friend','2019-11-12 05:50:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(194,NULL,9,'Subject for Tell a Friend','2019-11-19 02:51:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(195,NULL,9,'Subject for Tell a Friend','2019-08-11 09:40:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(196,NULL,9,'Subject for Tell a Friend','2019-10-19 09:08:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(197,NULL,9,'Subject for Tell a Friend','2019-07-26 16:04:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(198,NULL,9,'Subject for Tell a Friend','2019-08-30 23:33:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(199,NULL,9,'Subject for Tell a Friend','2020-01-21 15:46:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(200,NULL,9,'Subject for Tell a Friend','2020-02-06 06:50:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(201,NULL,9,'Subject for Tell a Friend','2019-10-11 23:17:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(202,NULL,9,'Subject for Tell a Friend','2020-05-15 04:05:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(203,NULL,10,'Subject for Pledge Acknowledgment','2020-01-04 05:57:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(204,NULL,9,'Subject for Tell a Friend','2020-03-09 05:31:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(205,NULL,9,'Subject for Tell a Friend','2020-01-07 04:39:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(206,NULL,10,'Subject for Pledge Acknowledgment','2019-09-19 00:58:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(207,NULL,9,'Subject for Tell a Friend','2019-09-27 03:32:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(208,NULL,10,'Subject for Pledge Acknowledgment','2019-08-01 00:38:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(209,NULL,9,'Subject for Tell a Friend','2019-12-15 11:25:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(210,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 03:49:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(211,NULL,10,'Subject for Pledge Acknowledgment','2020-04-14 21:59:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(212,NULL,10,'Subject for Pledge Acknowledgment','2019-12-07 14:02:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(213,NULL,10,'Subject for Pledge Acknowledgment','2019-06-26 18:14:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(214,NULL,9,'Subject for Tell a Friend','2020-05-23 17:03:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(215,NULL,9,'Subject for Tell a Friend','2019-09-18 17:38:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(216,NULL,9,'Subject for Tell a Friend','2020-02-29 01:05:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(217,NULL,9,'Subject for Tell a Friend','2019-12-17 00:06:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(218,NULL,9,'Subject for Tell a Friend','2020-02-05 08:07:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(219,NULL,9,'Subject for Tell a Friend','2019-09-11 05:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(220,NULL,9,'Subject for Tell a Friend','2019-11-02 15:57:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(221,NULL,9,'Subject for Tell a Friend','2019-12-23 08:20:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(222,NULL,9,'Subject for Tell a Friend','2020-03-18 15:21:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(223,NULL,10,'Subject for Pledge Acknowledgment','2020-04-21 23:43:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(224,NULL,10,'Subject for Pledge Acknowledgment','2019-09-15 06:04:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(225,NULL,9,'Subject for Tell a Friend','2019-07-06 07:02:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(226,NULL,9,'Subject for Tell a Friend','2020-05-18 23:30:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(227,NULL,10,'Subject for Pledge Acknowledgment','2019-12-31 03:18:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(228,NULL,9,'Subject for Tell a Friend','2019-11-28 21:51:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(229,NULL,9,'Subject for Tell a Friend','2020-05-03 10:15:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(230,NULL,9,'Subject for Tell a Friend','2020-01-02 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(231,NULL,9,'Subject for Tell a Friend','2020-03-27 16:23:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(232,NULL,10,'Subject for Pledge Acknowledgment','2019-11-03 00:51:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(233,NULL,10,'Subject for Pledge Acknowledgment','2019-09-25 18:23:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(234,NULL,10,'Subject for Pledge Acknowledgment','2019-06-16 21:03:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(235,NULL,10,'Subject for Pledge Acknowledgment','2019-11-06 04:46:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(236,NULL,9,'Subject for Tell a Friend','2019-08-02 04:10:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(237,NULL,10,'Subject for Pledge Acknowledgment','2019-06-12 04:55:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(238,NULL,9,'Subject for Tell a Friend','2019-08-13 01:32:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(239,NULL,10,'Subject for Pledge Acknowledgment','2020-02-11 21:15:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(240,NULL,9,'Subject for Tell a Friend','2019-07-29 22:25:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(241,NULL,10,'Subject for Pledge Acknowledgment','2019-12-22 20:40:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(242,NULL,9,'Subject for Tell a Friend','2019-11-14 04:20:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(243,NULL,10,'Subject for Pledge Acknowledgment','2020-05-18 08:17:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(244,NULL,10,'Subject for Pledge Acknowledgment','2019-07-07 04:26:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(245,NULL,9,'Subject for Tell a Friend','2020-05-08 07:12:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(246,NULL,10,'Subject for Pledge Acknowledgment','2019-06-25 15:22:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(247,NULL,9,'Subject for Tell a Friend','2020-04-21 08:29:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(248,NULL,9,'Subject for Tell a Friend','2019-11-12 05:15:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(249,NULL,10,'Subject for Pledge Acknowledgment','2019-07-05 04:01:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(250,NULL,10,'Subject for Pledge Acknowledgment','2020-01-06 02:02:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(251,NULL,9,'Subject for Tell a Friend','2019-09-07 21:10:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(252,NULL,10,'Subject for Pledge Acknowledgment','2019-07-19 14:30:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(253,NULL,10,'Subject for Pledge Acknowledgment','2020-05-03 18:49:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(254,NULL,9,'Subject for Tell a Friend','2020-05-03 11:25:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(255,NULL,9,'Subject for Tell a Friend','2019-07-29 08:29:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(256,NULL,10,'Subject for Pledge Acknowledgment','2019-08-16 15:36:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(257,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 13:05:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(258,NULL,9,'Subject for Tell a Friend','2020-03-03 18:27:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(259,NULL,9,'Subject for Tell a Friend','2020-04-22 00:17:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(260,NULL,10,'Subject for Pledge Acknowledgment','2019-09-27 17:12:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(261,NULL,10,'Subject for Pledge Acknowledgment','2019-07-23 04:03:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(262,NULL,10,'Subject for Pledge Acknowledgment','2020-04-02 07:40:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(263,NULL,9,'Subject for Tell a Friend','2020-03-13 23:09:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(264,NULL,9,'Subject for Tell a Friend','2020-01-27 00:28:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(265,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 05:51:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(266,NULL,9,'Subject for Tell a Friend','2019-09-12 11:56:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(267,NULL,10,'Subject for Pledge Acknowledgment','2020-04-29 20:14:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(268,NULL,10,'Subject for Pledge Acknowledgment','2019-08-15 07:58:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(269,NULL,10,'Subject for Pledge Acknowledgment','2019-08-07 09:01:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(270,NULL,9,'Subject for Tell a Friend','2020-05-12 21:57:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(271,NULL,9,'Subject for Tell a Friend','2020-04-14 19:35:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(272,NULL,9,'Subject for Tell a Friend','2020-02-29 12:55:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(273,NULL,10,'Subject for Pledge Acknowledgment','2019-10-19 21:14:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(274,NULL,10,'Subject for Pledge Acknowledgment','2020-01-08 05:12:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(275,NULL,9,'Subject for Tell a Friend','2019-11-20 11:53:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(276,NULL,9,'Subject for Tell a Friend','2019-07-08 05:20:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(277,NULL,9,'Subject for Tell a Friend','2019-11-15 23:46:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(278,NULL,9,'Subject for Tell a Friend','2019-09-05 06:08:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(279,NULL,9,'Subject for Tell a Friend','2019-06-16 17:54:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(280,NULL,9,'Subject for Tell a Friend','2019-11-27 05:37:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(281,NULL,10,'Subject for Pledge Acknowledgment','2020-05-03 10:20:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(282,NULL,10,'Subject for Pledge Acknowledgment','2020-01-11 12:11:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(283,NULL,9,'Subject for Tell a Friend','2020-02-09 21:28:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(284,NULL,9,'Subject for Tell a Friend','2020-02-18 19:04:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(285,NULL,10,'Subject for Pledge Acknowledgment','2019-12-27 15:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(286,NULL,9,'Subject for Tell a Friend','2020-02-03 17:10:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(287,NULL,9,'Subject for Tell a Friend','2019-11-29 11:45:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(288,NULL,10,'Subject for Pledge Acknowledgment','2020-04-03 08:47:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(289,NULL,10,'Subject for Pledge Acknowledgment','2019-11-30 17:39:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(290,NULL,9,'Subject for Tell a Friend','2019-06-15 15:24:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(291,NULL,10,'Subject for Pledge Acknowledgment','2019-07-24 19:01:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(292,NULL,9,'Subject for Tell a Friend','2019-10-21 00:23:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(293,NULL,9,'Subject for Tell a Friend','2019-10-09 01:38:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(294,NULL,9,'Subject for Tell a Friend','2019-11-01 19:09:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(295,NULL,9,'Subject for Tell a Friend','2020-06-04 21:27:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(296,NULL,9,'Subject for Tell a Friend','2020-03-14 19:25:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(297,NULL,9,'Subject for Tell a Friend','2020-01-12 13:23:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(298,NULL,10,'Subject for Pledge Acknowledgment','2020-02-17 04:48:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(299,NULL,9,'Subject for Tell a Friend','2019-11-21 15:15:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(300,NULL,9,'Subject for Tell a Friend','2020-01-12 18:37:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(301,NULL,10,'Subject for Pledge Acknowledgment','2020-02-05 16:37:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(302,NULL,9,'Subject for Tell a Friend','2020-05-20 15:13:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(303,NULL,10,'Subject for Pledge Acknowledgment','2019-09-03 18:58:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(304,NULL,9,'Subject for Tell a Friend','2019-08-18 03:08:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(305,NULL,9,'Subject for Tell a Friend','2019-08-17 15:09:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(306,NULL,9,'Subject for Tell a Friend','2019-12-08 17:11:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(307,NULL,9,'Subject for Tell a Friend','2020-01-25 10:55:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(308,NULL,9,'Subject for Tell a Friend','2020-04-06 23:57:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(309,NULL,9,'Subject for Tell a Friend','2020-04-01 07:01:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(310,NULL,10,'Subject for Pledge Acknowledgment','2019-10-16 13:31:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(311,NULL,9,'Subject for Tell a Friend','2019-07-15 00:18:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(312,NULL,9,'Subject for Tell a Friend','2019-11-15 19:31:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(313,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 02:20:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(314,NULL,10,'Subject for Pledge Acknowledgment','2020-05-13 15:27:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(315,NULL,9,'Subject for Tell a Friend','2020-03-22 00:46:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(316,NULL,9,'Subject for Tell a Friend','2019-11-07 07:14:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(317,NULL,10,'Subject for Pledge Acknowledgment','2019-09-27 21:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(318,NULL,10,'Subject for Pledge Acknowledgment','2019-11-27 09:14:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(319,NULL,10,'Subject for Pledge Acknowledgment','2020-05-29 21:45:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(320,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 14:34:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(321,NULL,9,'Subject for Tell a Friend','2020-02-18 07:09:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(322,NULL,9,'Subject for Tell a Friend','2020-01-13 12:10:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(323,NULL,9,'Subject for Tell a Friend','2019-11-02 08:32:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(324,NULL,10,'Subject for Pledge Acknowledgment','2020-04-17 13:57:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(325,NULL,9,'Subject for Tell a Friend','2019-08-06 18:33:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(326,NULL,10,'Subject for Pledge Acknowledgment','2020-01-06 09:37:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(327,NULL,9,'Subject for Tell a Friend','2020-02-27 18:33:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(328,NULL,9,'Subject for Tell a Friend','2019-07-02 19:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(329,NULL,10,'Subject for Pledge Acknowledgment','2019-12-30 14:03:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(330,NULL,10,'Subject for Pledge Acknowledgment','2019-07-01 04:22:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(331,NULL,9,'Subject for Tell a Friend','2020-05-08 12:21:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(332,NULL,10,'Subject for Pledge Acknowledgment','2020-05-08 11:52:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(333,NULL,9,'Subject for Tell a Friend','2020-04-29 13:56:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(334,NULL,10,'Subject for Pledge Acknowledgment','2019-07-23 08:43:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(335,NULL,9,'Subject for Tell a Friend','2019-12-16 03:51:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(336,NULL,9,'Subject for Tell a Friend','2019-08-03 12:27:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(337,NULL,9,'Subject for Tell a Friend','2019-12-03 09:01:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(338,NULL,9,'Subject for Tell a Friend','2020-05-13 12:10:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(339,NULL,9,'Subject for Tell a Friend','2019-10-15 23:33:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(340,NULL,10,'Subject for Pledge Acknowledgment','2020-04-18 23:20:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(341,NULL,10,'Subject for Pledge Acknowledgment','2019-11-15 14:50:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(342,NULL,10,'Subject for Pledge Acknowledgment','2019-12-04 17:26:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(343,NULL,9,'Subject for Tell a Friend','2020-03-17 18:08:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(344,NULL,10,'Subject for Pledge Acknowledgment','2020-02-04 18:17:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(345,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 06:11:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(346,NULL,10,'Subject for Pledge Acknowledgment','2019-12-14 18:39:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(347,NULL,10,'Subject for Pledge Acknowledgment','2019-09-21 05:08:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(348,NULL,9,'Subject for Tell a Friend','2020-02-14 19:42:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(349,NULL,9,'Subject for Tell a Friend','2020-02-25 10:41:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(350,NULL,9,'Subject for Tell a Friend','2020-01-17 21:15:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(351,NULL,10,'Subject for Pledge Acknowledgment','2019-07-07 13:58:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(352,NULL,9,'Subject for Tell a Friend','2019-09-08 23:10:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(353,NULL,9,'Subject for Tell a Friend','2019-07-06 01:21:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(354,NULL,9,'Subject for Tell a Friend','2020-06-07 06:02:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(355,NULL,10,'Subject for Pledge Acknowledgment','2020-01-21 11:50:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(356,NULL,9,'Subject for Tell a Friend','2020-05-10 22:45:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(357,NULL,9,'Subject for Tell a Friend','2019-10-16 21:30:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(358,NULL,10,'Subject for Pledge Acknowledgment','2020-04-15 11:43:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(359,NULL,10,'Subject for Pledge Acknowledgment','2020-05-17 21:59:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(360,NULL,10,'Subject for Pledge Acknowledgment','2020-04-07 12:00:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(361,NULL,9,'Subject for Tell a Friend','2020-04-15 13:56:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(362,NULL,9,'Subject for Tell a Friend','2019-06-11 18:54:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(363,NULL,10,'Subject for Pledge Acknowledgment','2020-01-31 15:50:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(364,NULL,9,'Subject for Tell a Friend','2020-02-27 15:28:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(365,NULL,9,'Subject for Tell a Friend','2020-04-27 04:51:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(366,NULL,9,'Subject for Tell a Friend','2020-06-01 20:12:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(367,NULL,9,'Subject for Tell a Friend','2020-02-18 11:28:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(368,NULL,9,'Subject for Tell a Friend','2019-11-19 06:44:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(369,NULL,9,'Subject for Tell a Friend','2020-01-22 14:58:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(370,NULL,10,'Subject for Pledge Acknowledgment','2020-03-15 06:57:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(371,NULL,9,'Subject for Tell a Friend','2019-09-14 16:20:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(372,NULL,10,'Subject for Pledge Acknowledgment','2020-01-21 23:26:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(373,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 00:47:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(374,NULL,10,'Subject for Pledge Acknowledgment','2019-07-04 14:48:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(375,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 22:02:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(376,NULL,9,'Subject for Tell a Friend','2019-10-10 13:00:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(377,NULL,10,'Subject for Pledge Acknowledgment','2020-02-03 17:33:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(378,NULL,9,'Subject for Tell a Friend','2019-11-10 06:49:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(379,NULL,9,'Subject for Tell a Friend','2020-01-10 04:48:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(380,NULL,9,'Subject for Tell a Friend','2019-09-19 18:59:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(381,NULL,9,'Subject for Tell a Friend','2020-01-22 09:58:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(382,NULL,9,'Subject for Tell a Friend','2019-11-04 11:02:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(383,NULL,10,'Subject for Pledge Acknowledgment','2019-09-25 10:52:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(384,NULL,9,'Subject for Tell a Friend','2019-08-17 11:06:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(385,NULL,10,'Subject for Pledge Acknowledgment','2019-10-30 21:23:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(386,NULL,9,'Subject for Tell a Friend','2019-09-01 18:40:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(387,NULL,10,'Subject for Pledge Acknowledgment','2020-04-14 19:19:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(388,NULL,9,'Subject for Tell a Friend','2020-01-31 00:34:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(389,NULL,10,'Subject for Pledge Acknowledgment','2020-06-07 04:18:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(390,NULL,10,'Subject for Pledge Acknowledgment','2019-11-01 08:53:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(391,NULL,9,'Subject for Tell a Friend','2020-02-22 02:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(392,NULL,10,'Subject for Pledge Acknowledgment','2019-09-01 20:35:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(393,NULL,10,'Subject for Pledge Acknowledgment','2019-08-02 17:30:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(394,NULL,9,'Subject for Tell a Friend','2019-12-17 07:26:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(395,NULL,10,'Subject for Pledge Acknowledgment','2019-12-14 07:45:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(396,NULL,9,'Subject for Tell a Friend','2019-07-30 01:14:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(397,NULL,10,'Subject for Pledge Acknowledgment','2020-05-30 14:42:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(398,NULL,9,'Subject for Tell a Friend','2020-03-10 06:29:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(399,NULL,9,'Subject for Tell a Friend','2020-04-12 04:01:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(400,NULL,9,'Subject for Tell a Friend','2020-03-19 07:05:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(401,NULL,10,'Subject for Pledge Acknowledgment','2019-09-30 01:28:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(402,NULL,9,'Subject for Tell a Friend','2020-01-11 09:55:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(403,NULL,10,'Subject for Pledge Acknowledgment','2020-01-02 14:18:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(404,NULL,9,'Subject for Tell a Friend','2020-01-01 13:50:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(405,NULL,9,'Subject for Tell a Friend','2020-04-07 18:13:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(406,NULL,10,'Subject for Pledge Acknowledgment','2019-11-29 11:23:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(407,NULL,10,'Subject for Pledge Acknowledgment','2019-09-01 19:29:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(408,NULL,9,'Subject for Tell a Friend','2020-04-14 13:03:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(409,NULL,10,'Subject for Pledge Acknowledgment','2020-02-14 08:00:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(410,NULL,9,'Subject for Tell a Friend','2020-06-04 04:04:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(411,NULL,9,'Subject for Tell a Friend','2020-05-23 07:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(412,NULL,9,'Subject for Tell a Friend','2019-12-24 20:33:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(413,NULL,9,'Subject for Tell a Friend','2020-04-06 13:04:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(414,NULL,10,'Subject for Pledge Acknowledgment','2019-10-01 08:05:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(415,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 06:19:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(416,NULL,10,'Subject for Pledge Acknowledgment','2019-10-23 03:22:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(417,NULL,10,'Subject for Pledge Acknowledgment','2019-10-07 18:53:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(418,NULL,10,'Subject for Pledge Acknowledgment','2019-09-08 09:17:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(419,NULL,10,'Subject for Pledge Acknowledgment','2019-07-13 06:12:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(420,NULL,10,'Subject for Pledge Acknowledgment','2020-02-24 03:59:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(421,NULL,9,'Subject for Tell a Friend','2019-08-29 22:25:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(422,NULL,9,'Subject for Tell a Friend','2019-07-17 23:55:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(423,NULL,9,'Subject for Tell a Friend','2019-10-19 05:32:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(424,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 14:40:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(425,NULL,9,'Subject for Tell a Friend','2020-02-12 04:01:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(426,NULL,10,'Subject for Pledge Acknowledgment','2019-08-07 02:01:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(427,NULL,10,'Subject for Pledge Acknowledgment','2019-12-05 13:21:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(428,NULL,10,'Subject for Pledge Acknowledgment','2019-12-07 19:51:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(429,NULL,10,'Subject for Pledge Acknowledgment','2019-10-12 12:11:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(430,NULL,10,'Subject for Pledge Acknowledgment','2019-10-15 17:08:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(431,NULL,9,'Subject for Tell a Friend','2019-10-09 09:46:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(432,NULL,10,'Subject for Pledge Acknowledgment','2019-12-13 09:14:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(433,NULL,10,'Subject for Pledge Acknowledgment','2020-03-12 23:55:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(434,NULL,10,'Subject for Pledge Acknowledgment','2019-12-15 22:37:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(435,NULL,10,'Subject for Pledge Acknowledgment','2019-11-27 01:29:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(436,NULL,10,'Subject for Pledge Acknowledgment','2019-07-09 19:06:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(437,NULL,9,'Subject for Tell a Friend','2020-03-16 03:50:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(438,NULL,9,'Subject for Tell a Friend','2019-06-20 00:57:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(439,NULL,9,'Subject for Tell a Friend','2019-08-25 21:01:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(440,NULL,9,'Subject for Tell a Friend','2020-05-22 02:54:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(441,NULL,9,'Subject for Tell a Friend','2020-04-17 08:54:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(442,NULL,10,'Subject for Pledge Acknowledgment','2020-01-23 04:39:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(443,NULL,9,'Subject for Tell a Friend','2019-07-21 18:44:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(444,NULL,10,'Subject for Pledge Acknowledgment','2019-11-18 03:13:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(445,NULL,9,'Subject for Tell a Friend','2020-05-25 12:07:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(446,NULL,10,'Subject for Pledge Acknowledgment','2019-09-25 21:59:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(447,NULL,9,'Subject for Tell a Friend','2020-03-06 11:52:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(448,NULL,10,'Subject for Pledge Acknowledgment','2019-10-21 08:30:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(449,NULL,10,'Subject for Pledge Acknowledgment','2020-05-18 23:36:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(450,NULL,9,'Subject for Tell a Friend','2019-12-18 10:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(464,1,7,'General','2020-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(465,2,7,'Student','2020-06-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(466,3,7,'General','2020-06-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(467,4,7,'Student','2020-06-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(468,5,7,'General','2018-05-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(469,6,7,'Student','2020-06-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(470,7,7,'General','2020-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(471,8,7,'Student','2020-06-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(472,9,7,'General','2020-06-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(473,10,7,'General','2018-03-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(474,11,7,'Lifetime','2020-05-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(475,12,7,'Student','2020-05-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(476,13,7,'General','2020-05-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(477,14,7,'Student','2020-05-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(478,15,7,'General','2018-02-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(479,16,7,'Student','2020-05-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(480,17,7,'General','2020-05-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(481,18,7,'Student','2020-05-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(482,19,7,'General','2020-05-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(483,20,7,'Student','2019-05-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(484,21,7,'General','2020-05-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(485,22,7,'Lifetime','2020-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(486,23,7,'General','2020-05-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(487,24,7,'Student','2020-05-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(488,25,7,'General','2017-11-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(489,26,7,'Student','2020-05-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(490,27,7,'General','2020-05-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(491,28,7,'Student','2020-05-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(492,29,7,'General','2020-05-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(493,30,7,'Student','2019-05-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(508,28,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(525,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(526,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(527,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(528,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(529,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(530,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(531,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(532,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(533,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(534,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(535,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(536,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(537,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(538,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(539,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(540,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(541,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(542,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(543,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(544,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(545,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(546,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(547,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(548,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(549,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(550,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(551,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(552,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(553,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(554,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(555,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(556,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(557,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(558,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(559,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(560,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(561,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(562,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(563,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(564,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(565,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(566,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(567,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(568,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(569,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(570,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(571,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(572,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(573,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(574,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(575,45,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(576,46,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(577,47,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(578,48,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(579,49,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(580,50,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(581,51,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(582,52,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(583,53,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(584,54,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(585,55,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(586,56,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(588,58,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(589,59,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(590,60,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(592,62,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(594,64,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(595,65,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(600,70,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(603,73,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(606,76,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(609,79,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(622,92,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'); +INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES (1,NULL,10,'Subject for Pledge Acknowledgment','2020-02-10 22:36:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(2,NULL,9,'Subject for Tell a Friend','2020-07-10 09:36:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(3,NULL,9,'Subject for Tell a Friend','2019-10-23 21:11:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(4,NULL,10,'Subject for Pledge Acknowledgment','2020-01-25 21:48:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(5,NULL,9,'Subject for Tell a Friend','2020-04-09 13:53:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(6,NULL,10,'Subject for Pledge Acknowledgment','2019-11-28 12:45:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(7,NULL,10,'Subject for Pledge Acknowledgment','2019-11-25 11:57:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(8,NULL,9,'Subject for Tell a Friend','2020-07-01 21:13:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(9,NULL,9,'Subject for Tell a Friend','2019-12-04 18:07:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(10,NULL,9,'Subject for Tell a Friend','2020-01-10 18:16:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(11,NULL,10,'Subject for Pledge Acknowledgment','2019-11-12 17:06:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(12,NULL,9,'Subject for Tell a Friend','2019-10-09 00:12:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(13,NULL,9,'Subject for Tell a Friend','2019-12-28 00:37:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(14,NULL,10,'Subject for Pledge Acknowledgment','2019-09-18 15:30:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(15,NULL,9,'Subject for Tell a Friend','2020-04-23 01:33:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(16,NULL,10,'Subject for Pledge Acknowledgment','2020-02-06 22:59:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(17,NULL,9,'Subject for Tell a Friend','2020-05-14 08:33:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(18,NULL,9,'Subject for Tell a Friend','2020-03-03 16:08:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(19,NULL,9,'Subject for Tell a Friend','2020-01-02 11:31:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(20,NULL,9,'Subject for Tell a Friend','2020-01-21 15:32:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(21,NULL,9,'Subject for Tell a Friend','2019-11-19 15:55:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(22,NULL,10,'Subject for Pledge Acknowledgment','2020-02-09 19:43:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(23,NULL,9,'Subject for Tell a Friend','2020-04-23 07:17:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(24,NULL,9,'Subject for Tell a Friend','2020-05-06 04:29:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(25,NULL,9,'Subject for Tell a Friend','2019-11-10 18:19:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(26,NULL,10,'Subject for Pledge Acknowledgment','2020-03-16 23:19:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(27,NULL,9,'Subject for Tell a Friend','2020-07-01 12:22:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(28,NULL,10,'Subject for Pledge Acknowledgment','2020-07-19 00:40:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(29,NULL,10,'Subject for Pledge Acknowledgment','2020-05-25 00:37:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(30,NULL,10,'Subject for Pledge Acknowledgment','2020-05-19 14:18:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(31,NULL,10,'Subject for Pledge Acknowledgment','2020-07-01 04:28:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(32,NULL,9,'Subject for Tell a Friend','2019-08-15 21:07:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(33,NULL,10,'Subject for Pledge Acknowledgment','2020-05-11 15:40:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(34,NULL,9,'Subject for Tell a Friend','2020-02-12 20:09:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(35,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 11:16:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(36,NULL,10,'Subject for Pledge Acknowledgment','2019-11-28 03:25:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(37,NULL,9,'Subject for Tell a Friend','2020-07-15 01:35:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(38,NULL,9,'Subject for Tell a Friend','2020-02-19 22:18:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(39,NULL,9,'Subject for Tell a Friend','2020-05-29 00:51:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(40,NULL,9,'Subject for Tell a Friend','2020-04-08 16:09:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(41,NULL,9,'Subject for Tell a Friend','2019-11-30 17:37:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(42,NULL,10,'Subject for Pledge Acknowledgment','2019-08-29 22:36:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(43,NULL,10,'Subject for Pledge Acknowledgment','2019-07-27 04:48:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(44,NULL,9,'Subject for Tell a Friend','2020-02-07 08:33:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(45,NULL,10,'Subject for Pledge Acknowledgment','2019-10-08 06:33:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(46,NULL,9,'Subject for Tell a Friend','2019-11-07 05:39:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(47,NULL,9,'Subject for Tell a Friend','2020-07-16 04:56:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(48,NULL,10,'Subject for Pledge Acknowledgment','2020-06-24 04:44:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(49,NULL,9,'Subject for Tell a Friend','2019-09-05 17:00:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(50,NULL,9,'Subject for Tell a Friend','2019-12-16 01:54:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(51,NULL,10,'Subject for Pledge Acknowledgment','2020-06-22 23:12:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(52,NULL,10,'Subject for Pledge Acknowledgment','2019-08-01 06:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(53,NULL,9,'Subject for Tell a Friend','2019-09-09 21:56:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(54,NULL,9,'Subject for Tell a Friend','2020-06-25 15:15:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(55,NULL,9,'Subject for Tell a Friend','2020-04-20 19:09:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(56,NULL,9,'Subject for Tell a Friend','2020-01-28 00:48:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(57,NULL,9,'Subject for Tell a Friend','2020-05-31 02:51:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(58,NULL,10,'Subject for Pledge Acknowledgment','2019-10-01 15:16:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(59,NULL,10,'Subject for Pledge Acknowledgment','2020-02-24 09:22:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(60,NULL,10,'Subject for Pledge Acknowledgment','2019-12-11 02:10:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(61,NULL,10,'Subject for Pledge Acknowledgment','2020-07-21 06:13:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(62,NULL,10,'Subject for Pledge Acknowledgment','2020-05-01 05:20:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(63,NULL,9,'Subject for Tell a Friend','2020-01-09 06:28:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(64,NULL,9,'Subject for Tell a Friend','2020-01-15 21:39:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(65,NULL,10,'Subject for Pledge Acknowledgment','2020-02-12 10:56:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(66,NULL,9,'Subject for Tell a Friend','2019-10-14 23:33:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(67,NULL,10,'Subject for Pledge Acknowledgment','2020-05-02 17:30:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(68,NULL,9,'Subject for Tell a Friend','2019-09-07 02:51:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(69,NULL,9,'Subject for Tell a Friend','2019-11-18 18:30:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(70,NULL,10,'Subject for Pledge Acknowledgment','2020-01-02 13:01:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(71,NULL,10,'Subject for Pledge Acknowledgment','2019-08-19 11:52:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(72,NULL,9,'Subject for Tell a Friend','2019-10-25 18:35:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(73,NULL,9,'Subject for Tell a Friend','2019-09-29 08:51:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(74,NULL,10,'Subject for Pledge Acknowledgment','2020-06-02 16:46:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(75,NULL,10,'Subject for Pledge Acknowledgment','2020-01-20 03:15:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(76,NULL,10,'Subject for Pledge Acknowledgment','2020-06-13 14:51:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(77,NULL,10,'Subject for Pledge Acknowledgment','2020-05-09 23:16:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(78,NULL,9,'Subject for Tell a Friend','2019-12-07 02:04:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(79,NULL,10,'Subject for Pledge Acknowledgment','2019-11-11 07:23:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(80,NULL,10,'Subject for Pledge Acknowledgment','2020-01-26 14:54:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(81,NULL,10,'Subject for Pledge Acknowledgment','2020-06-21 19:10:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(82,NULL,10,'Subject for Pledge Acknowledgment','2020-05-09 04:20:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(83,NULL,9,'Subject for Tell a Friend','2019-11-30 23:20:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(84,NULL,9,'Subject for Tell a Friend','2019-11-03 17:00:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(85,NULL,10,'Subject for Pledge Acknowledgment','2020-07-24 05:06:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(86,NULL,10,'Subject for Pledge Acknowledgment','2020-07-10 13:36:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(87,NULL,10,'Subject for Pledge Acknowledgment','2019-10-22 05:26:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(88,NULL,10,'Subject for Pledge Acknowledgment','2020-03-08 05:00:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(89,NULL,10,'Subject for Pledge Acknowledgment','2020-04-22 11:44:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(90,NULL,9,'Subject for Tell a Friend','2020-03-14 00:53:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(91,NULL,10,'Subject for Pledge Acknowledgment','2019-08-10 22:23:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(92,NULL,9,'Subject for Tell a Friend','2020-04-08 23:35:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(93,NULL,9,'Subject for Tell a Friend','2019-12-29 00:02:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(94,NULL,9,'Subject for Tell a Friend','2020-02-28 23:00:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(95,NULL,9,'Subject for Tell a Friend','2019-08-06 11:09:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(96,NULL,10,'Subject for Pledge Acknowledgment','2019-12-13 16:50:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(97,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 22:14:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(98,NULL,9,'Subject for Tell a Friend','2019-08-08 17:07:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(99,NULL,9,'Subject for Tell a Friend','2020-01-04 06:20:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(100,NULL,9,'Subject for Tell a Friend','2020-01-08 07:54:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(101,NULL,9,'Subject for Tell a Friend','2020-02-18 02:05:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(102,NULL,10,'Subject for Pledge Acknowledgment','2020-06-07 05:18:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(103,NULL,10,'Subject for Pledge Acknowledgment','2019-11-16 01:08:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(104,NULL,9,'Subject for Tell a Friend','2020-06-02 23:35:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(105,NULL,10,'Subject for Pledge Acknowledgment','2020-03-09 08:49:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(106,NULL,9,'Subject for Tell a Friend','2019-12-20 12:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(107,NULL,10,'Subject for Pledge Acknowledgment','2019-12-16 12:53:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(108,NULL,9,'Subject for Tell a Friend','2020-06-25 08:57:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(109,NULL,9,'Subject for Tell a Friend','2020-07-24 02:07:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(110,NULL,10,'Subject for Pledge Acknowledgment','2020-03-12 13:01:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(111,NULL,9,'Subject for Tell a Friend','2020-05-03 10:42:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(112,NULL,9,'Subject for Tell a Friend','2020-05-27 20:44:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(113,NULL,10,'Subject for Pledge Acknowledgment','2020-05-07 22:55:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(114,NULL,9,'Subject for Tell a Friend','2020-03-09 00:54:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(115,NULL,9,'Subject for Tell a Friend','2019-10-07 20:47:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(116,NULL,10,'Subject for Pledge Acknowledgment','2020-01-19 09:08:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(117,NULL,10,'Subject for Pledge Acknowledgment','2020-06-03 04:14:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(118,NULL,10,'Subject for Pledge Acknowledgment','2020-02-16 10:07:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(119,NULL,9,'Subject for Tell a Friend','2019-10-13 06:54:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(120,NULL,9,'Subject for Tell a Friend','2019-08-15 17:03:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(121,NULL,10,'Subject for Pledge Acknowledgment','2020-05-10 03:12:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(122,NULL,9,'Subject for Tell a Friend','2020-06-19 13:14:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(123,NULL,9,'Subject for Tell a Friend','2020-05-27 01:04:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(124,NULL,9,'Subject for Tell a Friend','2020-03-23 01:13:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(125,NULL,10,'Subject for Pledge Acknowledgment','2020-05-27 03:27:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(126,NULL,9,'Subject for Tell a Friend','2020-06-07 01:14:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(127,NULL,9,'Subject for Tell a Friend','2020-03-19 10:17:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(128,NULL,10,'Subject for Pledge Acknowledgment','2020-02-08 22:25:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(129,NULL,9,'Subject for Tell a Friend','2019-10-06 17:15:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(130,NULL,9,'Subject for Tell a Friend','2019-09-14 11:17:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(131,NULL,9,'Subject for Tell a Friend','2019-10-20 23:58:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(132,NULL,9,'Subject for Tell a Friend','2019-11-07 13:58:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(133,NULL,9,'Subject for Tell a Friend','2019-11-18 14:37:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(134,NULL,9,'Subject for Tell a Friend','2019-09-17 13:14:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(135,NULL,9,'Subject for Tell a Friend','2020-04-10 02:52:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(136,NULL,9,'Subject for Tell a Friend','2020-01-09 10:16:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(137,NULL,10,'Subject for Pledge Acknowledgment','2020-02-26 00:42:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(138,NULL,10,'Subject for Pledge Acknowledgment','2020-07-18 16:35:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(139,NULL,9,'Subject for Tell a Friend','2019-11-17 16:14:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(140,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 04:50:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(141,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 11:23:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(142,NULL,10,'Subject for Pledge Acknowledgment','2020-06-05 13:39:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(143,NULL,10,'Subject for Pledge Acknowledgment','2020-05-04 09:52:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(144,NULL,10,'Subject for Pledge Acknowledgment','2020-06-13 21:43:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(145,NULL,10,'Subject for Pledge Acknowledgment','2019-11-04 15:35:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(146,NULL,9,'Subject for Tell a Friend','2019-11-16 17:27:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(147,NULL,10,'Subject for Pledge Acknowledgment','2020-02-13 01:40:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(148,NULL,10,'Subject for Pledge Acknowledgment','2019-08-13 22:41:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(149,NULL,10,'Subject for Pledge Acknowledgment','2020-04-11 07:00:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(150,NULL,10,'Subject for Pledge Acknowledgment','2020-06-11 03:48:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(151,NULL,9,'Subject for Tell a Friend','2019-10-13 12:26:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(152,NULL,9,'Subject for Tell a Friend','2020-03-13 08:10:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(153,NULL,9,'Subject for Tell a Friend','2019-12-18 06:53:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(154,NULL,10,'Subject for Pledge Acknowledgment','2019-12-31 11:27:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(155,NULL,10,'Subject for Pledge Acknowledgment','2019-09-06 16:09:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(156,NULL,10,'Subject for Pledge Acknowledgment','2019-11-05 20:33:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(157,NULL,10,'Subject for Pledge Acknowledgment','2019-09-08 18:46:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(158,NULL,10,'Subject for Pledge Acknowledgment','2019-11-14 02:03:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(159,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 12:00:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(160,NULL,10,'Subject for Pledge Acknowledgment','2019-11-04 18:20:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(161,NULL,10,'Subject for Pledge Acknowledgment','2019-09-02 20:02:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(162,NULL,9,'Subject for Tell a Friend','2019-08-04 07:24:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(163,NULL,10,'Subject for Pledge Acknowledgment','2019-12-30 12:40:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(164,NULL,9,'Subject for Tell a Friend','2020-01-13 09:55:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(165,NULL,9,'Subject for Tell a Friend','2020-05-22 02:13:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(166,NULL,10,'Subject for Pledge Acknowledgment','2020-03-07 20:20:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(167,NULL,9,'Subject for Tell a Friend','2019-12-07 17:37:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(168,NULL,9,'Subject for Tell a Friend','2020-01-23 05:29:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(169,NULL,10,'Subject for Pledge Acknowledgment','2020-03-06 01:58:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(170,NULL,10,'Subject for Pledge Acknowledgment','2020-05-02 05:51:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(171,NULL,9,'Subject for Tell a Friend','2020-02-23 09:46:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(172,NULL,10,'Subject for Pledge Acknowledgment','2020-02-19 18:24:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(173,NULL,10,'Subject for Pledge Acknowledgment','2020-07-11 01:44:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(174,NULL,9,'Subject for Tell a Friend','2019-12-20 10:58:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(175,NULL,10,'Subject for Pledge Acknowledgment','2019-12-13 01:20:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(176,NULL,9,'Subject for Tell a Friend','2019-09-08 10:07:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(177,NULL,10,'Subject for Pledge Acknowledgment','2019-11-07 14:17:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(178,NULL,9,'Subject for Tell a Friend','2019-12-11 02:01:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(179,NULL,10,'Subject for Pledge Acknowledgment','2019-11-20 00:32:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(180,NULL,10,'Subject for Pledge Acknowledgment','2020-05-20 05:10:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(181,NULL,9,'Subject for Tell a Friend','2019-08-09 15:29:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(182,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 14:38:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(183,NULL,9,'Subject for Tell a Friend','2020-06-27 14:10:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(184,NULL,10,'Subject for Pledge Acknowledgment','2019-09-18 01:16:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(185,NULL,10,'Subject for Pledge Acknowledgment','2020-06-26 06:46:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(186,NULL,9,'Subject for Tell a Friend','2020-01-27 11:13:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(187,NULL,9,'Subject for Tell a Friend','2019-07-31 00:01:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(188,NULL,10,'Subject for Pledge Acknowledgment','2019-07-31 03:25:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(189,NULL,9,'Subject for Tell a Friend','2020-06-29 10:20:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(190,NULL,9,'Subject for Tell a Friend','2020-01-10 02:53:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(191,NULL,10,'Subject for Pledge Acknowledgment','2020-02-25 13:46:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(192,NULL,10,'Subject for Pledge Acknowledgment','2020-05-31 10:43:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(193,NULL,9,'Subject for Tell a Friend','2019-11-23 11:48:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(194,NULL,10,'Subject for Pledge Acknowledgment','2019-12-14 14:32:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(195,NULL,10,'Subject for Pledge Acknowledgment','2020-03-11 19:59:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(196,NULL,9,'Subject for Tell a Friend','2020-07-19 16:48:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(197,NULL,10,'Subject for Pledge Acknowledgment','2020-07-06 05:44:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(198,NULL,9,'Subject for Tell a Friend','2020-04-12 17:17:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(199,NULL,10,'Subject for Pledge Acknowledgment','2020-02-07 08:00:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(200,NULL,9,'Subject for Tell a Friend','2020-03-01 09:47:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(201,NULL,9,'Subject for Tell a Friend','2019-11-17 03:20:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(202,NULL,9,'Subject for Tell a Friend','2020-05-19 11:32:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(203,NULL,10,'Subject for Pledge Acknowledgment','2020-06-12 16:55:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(204,NULL,9,'Subject for Tell a Friend','2020-03-11 19:26:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(205,NULL,9,'Subject for Tell a Friend','2020-04-08 08:16:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(206,NULL,9,'Subject for Tell a Friend','2020-06-30 04:29:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(207,NULL,10,'Subject for Pledge Acknowledgment','2020-02-11 02:21:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(208,NULL,10,'Subject for Pledge Acknowledgment','2020-01-11 21:31:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(209,NULL,9,'Subject for Tell a Friend','2019-09-02 16:14:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(210,NULL,10,'Subject for Pledge Acknowledgment','2020-06-05 16:10:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(211,NULL,10,'Subject for Pledge Acknowledgment','2019-11-20 17:01:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(212,NULL,10,'Subject for Pledge Acknowledgment','2020-03-07 17:14:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(213,NULL,9,'Subject for Tell a Friend','2020-05-09 23:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(214,NULL,9,'Subject for Tell a Friend','2019-10-27 17:22:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(215,NULL,10,'Subject for Pledge Acknowledgment','2020-06-28 16:21:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(216,NULL,9,'Subject for Tell a Friend','2019-11-14 23:18:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(217,NULL,10,'Subject for Pledge Acknowledgment','2020-01-22 09:26:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(218,NULL,9,'Subject for Tell a Friend','2019-12-30 22:38:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(219,NULL,10,'Subject for Pledge Acknowledgment','2020-05-29 16:35:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(220,NULL,9,'Subject for Tell a Friend','2019-08-22 08:39:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(221,NULL,10,'Subject for Pledge Acknowledgment','2020-06-12 09:26:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(222,NULL,10,'Subject for Pledge Acknowledgment','2020-04-16 20:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(223,NULL,9,'Subject for Tell a Friend','2020-02-07 05:03:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(224,NULL,10,'Subject for Pledge Acknowledgment','2020-07-06 12:55:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(225,NULL,9,'Subject for Tell a Friend','2020-06-19 11:31:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(226,NULL,10,'Subject for Pledge Acknowledgment','2020-02-23 18:01:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(227,NULL,10,'Subject for Pledge Acknowledgment','2020-06-26 14:42:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(228,NULL,10,'Subject for Pledge Acknowledgment','2019-11-06 23:22:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(229,NULL,9,'Subject for Tell a Friend','2019-08-08 11:36:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(230,NULL,9,'Subject for Tell a Friend','2020-05-27 01:43:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(231,NULL,10,'Subject for Pledge Acknowledgment','2019-11-20 04:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(232,NULL,9,'Subject for Tell a Friend','2020-01-15 13:23:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(233,NULL,9,'Subject for Tell a Friend','2019-08-14 16:16:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(234,NULL,9,'Subject for Tell a Friend','2020-07-03 19:32:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(235,NULL,9,'Subject for Tell a Friend','2019-09-06 19:28:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(236,NULL,10,'Subject for Pledge Acknowledgment','2020-02-10 00:44:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(237,NULL,10,'Subject for Pledge Acknowledgment','2020-05-01 22:31:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(238,NULL,9,'Subject for Tell a Friend','2020-04-28 23:59:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(239,NULL,10,'Subject for Pledge Acknowledgment','2020-03-08 04:37:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(240,NULL,9,'Subject for Tell a Friend','2019-12-07 22:06:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(241,NULL,9,'Subject for Tell a Friend','2020-02-29 20:52:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(242,NULL,9,'Subject for Tell a Friend','2020-06-12 21:13:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(243,NULL,9,'Subject for Tell a Friend','2020-06-13 08:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(244,NULL,10,'Subject for Pledge Acknowledgment','2019-10-29 18:25:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(245,NULL,9,'Subject for Tell a Friend','2020-06-28 09:05:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(246,NULL,10,'Subject for Pledge Acknowledgment','2020-06-23 03:41:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(247,NULL,9,'Subject for Tell a Friend','2020-05-17 06:36:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(248,NULL,9,'Subject for Tell a Friend','2019-12-07 12:45:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(249,NULL,9,'Subject for Tell a Friend','2019-10-10 07:28:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(250,NULL,9,'Subject for Tell a Friend','2020-01-27 08:09:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(251,NULL,9,'Subject for Tell a Friend','2020-05-06 10:14:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(252,NULL,10,'Subject for Pledge Acknowledgment','2020-02-11 08:57:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(253,NULL,9,'Subject for Tell a Friend','2019-09-19 13:01:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(254,NULL,10,'Subject for Pledge Acknowledgment','2020-02-06 19:48:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(255,NULL,10,'Subject for Pledge Acknowledgment','2020-03-21 10:07:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(256,NULL,9,'Subject for Tell a Friend','2020-04-26 07:02:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(257,NULL,10,'Subject for Pledge Acknowledgment','2019-10-03 03:50:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(258,NULL,10,'Subject for Pledge Acknowledgment','2019-09-14 20:44:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(259,NULL,9,'Subject for Tell a Friend','2020-01-21 02:50:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(260,NULL,9,'Subject for Tell a Friend','2019-10-18 20:45:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(261,NULL,9,'Subject for Tell a Friend','2019-11-04 21:46:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(262,NULL,9,'Subject for Tell a Friend','2019-09-19 16:50:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(263,NULL,10,'Subject for Pledge Acknowledgment','2020-07-12 05:54:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(264,NULL,10,'Subject for Pledge Acknowledgment','2019-12-09 20:53:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(265,NULL,9,'Subject for Tell a Friend','2020-05-27 22:39:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(266,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 22:01:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(267,NULL,9,'Subject for Tell a Friend','2019-12-19 23:37:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(268,NULL,9,'Subject for Tell a Friend','2020-01-13 08:31:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(269,NULL,10,'Subject for Pledge Acknowledgment','2019-12-16 23:57:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(270,NULL,9,'Subject for Tell a Friend','2020-07-22 20:24:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(271,NULL,10,'Subject for Pledge Acknowledgment','2020-04-05 19:39:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(272,NULL,9,'Subject for Tell a Friend','2019-09-14 20:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(273,NULL,10,'Subject for Pledge Acknowledgment','2020-01-21 06:14:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(274,NULL,10,'Subject for Pledge Acknowledgment','2020-07-11 05:43:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(275,NULL,10,'Subject for Pledge Acknowledgment','2020-02-08 01:11:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(276,NULL,10,'Subject for Pledge Acknowledgment','2020-05-06 03:12:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(277,NULL,10,'Subject for Pledge Acknowledgment','2020-06-27 01:08:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(278,NULL,10,'Subject for Pledge Acknowledgment','2019-11-04 02:21:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(279,NULL,9,'Subject for Tell a Friend','2020-03-10 08:13:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(280,NULL,10,'Subject for Pledge Acknowledgment','2019-12-17 00:22:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(281,NULL,10,'Subject for Pledge Acknowledgment','2019-11-05 08:09:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(282,NULL,9,'Subject for Tell a Friend','2020-02-07 20:17:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(283,NULL,9,'Subject for Tell a Friend','2020-03-31 02:35:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(284,NULL,9,'Subject for Tell a Friend','2019-08-29 22:50:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(285,NULL,10,'Subject for Pledge Acknowledgment','2020-07-07 17:26:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(286,NULL,10,'Subject for Pledge Acknowledgment','2019-09-07 06:13:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(287,NULL,10,'Subject for Pledge Acknowledgment','2020-04-12 02:30:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(288,NULL,10,'Subject for Pledge Acknowledgment','2019-09-29 03:07:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(289,NULL,9,'Subject for Tell a Friend','2019-10-15 09:15:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(290,NULL,9,'Subject for Tell a Friend','2019-10-07 17:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(291,NULL,10,'Subject for Pledge Acknowledgment','2019-08-17 03:43:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(292,NULL,9,'Subject for Tell a Friend','2019-12-21 06:36:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(293,NULL,10,'Subject for Pledge Acknowledgment','2020-03-28 13:15:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(294,NULL,10,'Subject for Pledge Acknowledgment','2020-07-01 01:51:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(295,NULL,10,'Subject for Pledge Acknowledgment','2020-01-17 14:41:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(296,NULL,9,'Subject for Tell a Friend','2019-09-26 17:24:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(297,NULL,9,'Subject for Tell a Friend','2019-12-21 16:03:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(298,NULL,9,'Subject for Tell a Friend','2020-04-21 21:33:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(299,NULL,9,'Subject for Tell a Friend','2020-02-14 20:10:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(300,NULL,10,'Subject for Pledge Acknowledgment','2020-01-24 14:23:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(301,NULL,9,'Subject for Tell a Friend','2019-12-01 21:35:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(302,NULL,10,'Subject for Pledge Acknowledgment','2020-02-14 21:34:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(303,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 14:59:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(304,NULL,9,'Subject for Tell a Friend','2020-02-29 19:42:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(305,NULL,10,'Subject for Pledge Acknowledgment','2020-03-05 05:50:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(306,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 00:49:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(307,NULL,9,'Subject for Tell a Friend','2020-01-07 20:38:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(308,NULL,10,'Subject for Pledge Acknowledgment','2020-01-24 22:18:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(309,NULL,9,'Subject for Tell a Friend','2020-07-16 16:49:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(310,NULL,10,'Subject for Pledge Acknowledgment','2020-02-05 12:19:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(311,NULL,10,'Subject for Pledge Acknowledgment','2019-08-30 17:55:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(312,NULL,9,'Subject for Tell a Friend','2020-02-26 10:22:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(313,NULL,10,'Subject for Pledge Acknowledgment','2020-05-23 08:57:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(314,NULL,9,'Subject for Tell a Friend','2020-03-05 17:20:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(315,NULL,10,'Subject for Pledge Acknowledgment','2020-05-17 01:32:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(316,NULL,10,'Subject for Pledge Acknowledgment','2020-01-14 23:30:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(317,NULL,9,'Subject for Tell a Friend','2020-02-18 06:24:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(318,NULL,9,'Subject for Tell a Friend','2020-06-19 11:37:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(319,NULL,9,'Subject for Tell a Friend','2019-09-29 08:14:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(320,NULL,9,'Subject for Tell a Friend','2020-02-22 00:37:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(321,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 18:25:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(322,NULL,10,'Subject for Pledge Acknowledgment','2019-10-17 10:56:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(323,NULL,10,'Subject for Pledge Acknowledgment','2020-04-23 01:57:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(324,NULL,10,'Subject for Pledge Acknowledgment','2020-06-27 17:47:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(325,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 18:32:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(326,NULL,10,'Subject for Pledge Acknowledgment','2019-09-17 22:07:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(327,NULL,10,'Subject for Pledge Acknowledgment','2019-11-13 18:58:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(328,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 04:02:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(329,NULL,10,'Subject for Pledge Acknowledgment','2020-04-01 09:38:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(330,NULL,9,'Subject for Tell a Friend','2020-07-22 05:32:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(331,NULL,9,'Subject for Tell a Friend','2019-10-16 20:27:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(332,NULL,10,'Subject for Pledge Acknowledgment','2020-05-11 22:33:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(333,NULL,10,'Subject for Pledge Acknowledgment','2020-01-30 06:55:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(334,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 18:48:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(335,NULL,10,'Subject for Pledge Acknowledgment','2019-09-28 14:50:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(336,NULL,9,'Subject for Tell a Friend','2019-08-12 20:49:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(337,NULL,9,'Subject for Tell a Friend','2019-11-13 10:04:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(338,NULL,10,'Subject for Pledge Acknowledgment','2020-02-08 16:21:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(339,NULL,10,'Subject for Pledge Acknowledgment','2020-06-29 19:20:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(340,NULL,10,'Subject for Pledge Acknowledgment','2019-08-22 01:48:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(341,NULL,9,'Subject for Tell a Friend','2019-10-25 08:48:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(342,NULL,10,'Subject for Pledge Acknowledgment','2020-05-31 11:03:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(343,NULL,9,'Subject for Tell a Friend','2019-08-18 03:55:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(344,NULL,9,'Subject for Tell a Friend','2019-07-30 00:06:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(345,NULL,9,'Subject for Tell a Friend','2019-10-12 17:31:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(346,NULL,9,'Subject for Tell a Friend','2019-10-27 18:37:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(347,NULL,10,'Subject for Pledge Acknowledgment','2020-06-09 01:47:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(348,NULL,9,'Subject for Tell a Friend','2020-06-02 23:04:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(349,NULL,9,'Subject for Tell a Friend','2020-01-20 04:15:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(350,NULL,10,'Subject for Pledge Acknowledgment','2020-06-27 05:57:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(351,NULL,10,'Subject for Pledge Acknowledgment','2020-01-25 12:44:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(352,NULL,10,'Subject for Pledge Acknowledgment','2020-01-28 17:13:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(353,NULL,10,'Subject for Pledge Acknowledgment','2020-01-14 21:30:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(354,NULL,10,'Subject for Pledge Acknowledgment','2020-03-10 11:48:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(355,NULL,10,'Subject for Pledge Acknowledgment','2020-06-22 18:03:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(356,NULL,9,'Subject for Tell a Friend','2020-04-09 08:16:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(357,NULL,9,'Subject for Tell a Friend','2019-11-28 20:50:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(358,NULL,10,'Subject for Pledge Acknowledgment','2020-05-31 07:03:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(359,NULL,10,'Subject for Pledge Acknowledgment','2019-10-23 11:48:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(360,NULL,9,'Subject for Tell a Friend','2019-11-18 11:48:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(361,NULL,10,'Subject for Pledge Acknowledgment','2019-08-22 01:51:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(362,NULL,10,'Subject for Pledge Acknowledgment','2020-02-18 17:40:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(363,NULL,10,'Subject for Pledge Acknowledgment','2019-10-23 04:11:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(364,NULL,10,'Subject for Pledge Acknowledgment','2020-02-07 14:10:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(365,NULL,10,'Subject for Pledge Acknowledgment','2020-05-14 20:15:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(366,NULL,9,'Subject for Tell a Friend','2020-05-05 23:45:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(367,NULL,10,'Subject for Pledge Acknowledgment','2019-09-24 07:43:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(368,NULL,10,'Subject for Pledge Acknowledgment','2020-06-10 04:34:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(369,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 11:17:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(370,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 08:41:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(371,NULL,10,'Subject for Pledge Acknowledgment','2020-06-13 22:12:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(372,NULL,9,'Subject for Tell a Friend','2020-05-30 07:26:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(373,NULL,9,'Subject for Tell a Friend','2020-04-09 09:28:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(374,NULL,10,'Subject for Pledge Acknowledgment','2020-03-15 22:12:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(375,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 18:06:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(376,NULL,9,'Subject for Tell a Friend','2020-06-12 22:31:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(377,NULL,10,'Subject for Pledge Acknowledgment','2019-11-29 07:58:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(378,NULL,9,'Subject for Tell a Friend','2020-05-28 04:19:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(379,NULL,9,'Subject for Tell a Friend','2019-09-02 12:53:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(380,NULL,9,'Subject for Tell a Friend','2019-10-05 03:57:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(381,NULL,9,'Subject for Tell a Friend','2019-12-15 02:41:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(382,NULL,9,'Subject for Tell a Friend','2020-06-18 14:58:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(383,NULL,10,'Subject for Pledge Acknowledgment','2019-12-25 10:03:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(384,NULL,10,'Subject for Pledge Acknowledgment','2020-07-22 08:38:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(385,NULL,10,'Subject for Pledge Acknowledgment','2020-03-22 19:02:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(386,NULL,9,'Subject for Tell a Friend','2020-04-02 17:16:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(387,NULL,10,'Subject for Pledge Acknowledgment','2019-11-16 08:11:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(388,NULL,10,'Subject for Pledge Acknowledgment','2020-05-18 08:39:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(389,NULL,10,'Subject for Pledge Acknowledgment','2019-09-24 02:32:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(390,NULL,9,'Subject for Tell a Friend','2020-07-03 14:14:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(391,NULL,10,'Subject for Pledge Acknowledgment','2019-08-20 12:40:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(392,NULL,10,'Subject for Pledge Acknowledgment','2019-08-02 01:56:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(393,NULL,9,'Subject for Tell a Friend','2020-06-09 22:00:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(394,NULL,10,'Subject for Pledge Acknowledgment','2020-05-05 23:00:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(395,NULL,9,'Subject for Tell a Friend','2019-07-31 09:57:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(396,NULL,9,'Subject for Tell a Friend','2020-03-05 04:12:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(397,NULL,9,'Subject for Tell a Friend','2020-04-02 17:34:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(398,NULL,10,'Subject for Pledge Acknowledgment','2020-05-04 10:26:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(399,NULL,10,'Subject for Pledge Acknowledgment','2019-11-16 18:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(400,NULL,9,'Subject for Tell a Friend','2020-05-23 19:16:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(401,NULL,9,'Subject for Tell a Friend','2019-08-30 22:46:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(402,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 15:29:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(403,NULL,9,'Subject for Tell a Friend','2020-02-16 04:02:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(404,NULL,10,'Subject for Pledge Acknowledgment','2019-12-26 07:54:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(405,NULL,10,'Subject for Pledge Acknowledgment','2019-12-18 16:37:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(406,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 16:44:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(407,NULL,9,'Subject for Tell a Friend','2020-04-19 04:26:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(408,NULL,9,'Subject for Tell a Friend','2020-03-25 23:46:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(409,NULL,10,'Subject for Pledge Acknowledgment','2020-02-26 12:32:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(410,NULL,9,'Subject for Tell a Friend','2019-10-06 18:55:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(411,NULL,10,'Subject for Pledge Acknowledgment','2020-01-13 02:54:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(412,NULL,9,'Subject for Tell a Friend','2019-07-30 11:10:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(413,NULL,10,'Subject for Pledge Acknowledgment','2020-07-02 20:51:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(414,NULL,10,'Subject for Pledge Acknowledgment','2020-03-28 14:14:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(415,NULL,10,'Subject for Pledge Acknowledgment','2019-10-29 11:43:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(416,NULL,9,'Subject for Tell a Friend','2020-07-03 09:41:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(417,NULL,9,'Subject for Tell a Friend','2020-01-25 20:49:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(418,NULL,10,'Subject for Pledge Acknowledgment','2020-02-04 07:28:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(419,NULL,9,'Subject for Tell a Friend','2019-09-17 21:01:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(420,NULL,9,'Subject for Tell a Friend','2019-12-10 11:40:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(421,NULL,10,'Subject for Pledge Acknowledgment','2020-05-15 20:52:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(422,NULL,10,'Subject for Pledge Acknowledgment','2020-04-13 21:09:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(423,NULL,9,'Subject for Tell a Friend','2020-06-03 21:24:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(424,NULL,10,'Subject for Pledge Acknowledgment','2019-08-23 01:19:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(425,NULL,10,'Subject for Pledge Acknowledgment','2019-10-13 18:46:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(426,NULL,9,'Subject for Tell a Friend','2020-03-26 09:54:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(427,NULL,10,'Subject for Pledge Acknowledgment','2019-10-12 08:31:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(428,NULL,10,'Subject for Pledge Acknowledgment','2019-10-29 00:26:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(429,NULL,9,'Subject for Tell a Friend','2020-07-02 11:54:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(430,NULL,10,'Subject for Pledge Acknowledgment','2019-12-20 06:30:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(431,NULL,10,'Subject for Pledge Acknowledgment','2020-04-21 02:15:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(432,NULL,10,'Subject for Pledge Acknowledgment','2020-01-19 14:07:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(433,NULL,9,'Subject for Tell a Friend','2020-07-17 01:52:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(434,NULL,9,'Subject for Tell a Friend','2019-11-09 15:37:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(435,NULL,10,'Subject for Pledge Acknowledgment','2019-08-29 11:56:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(436,NULL,9,'Subject for Tell a Friend','2019-10-06 13:22:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(437,NULL,9,'Subject for Tell a Friend','2020-07-14 03:54:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(438,NULL,10,'Subject for Pledge Acknowledgment','2019-10-18 16:58:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(439,NULL,9,'Subject for Tell a Friend','2020-02-12 15:48:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(440,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 09:50:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(441,NULL,10,'Subject for Pledge Acknowledgment','2019-10-15 01:03:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(442,NULL,9,'Subject for Tell a Friend','2020-01-30 01:44:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(443,NULL,9,'Subject for Tell a Friend','2020-06-10 21:00:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(444,NULL,10,'Subject for Pledge Acknowledgment','2019-12-09 16:05:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(445,NULL,9,'Subject for Tell a Friend','2020-02-10 03:53:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(446,NULL,10,'Subject for Pledge Acknowledgment','2019-08-12 20:53:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(447,NULL,9,'Subject for Tell a Friend','2020-03-19 16:30:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(448,NULL,9,'Subject for Tell a Friend','2019-12-23 14:30:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(449,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 21:53:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(450,NULL,9,'Subject for Tell a Friend','2020-06-28 01:45:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(464,1,7,'General','2020-07-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(465,2,7,'Student','2020-07-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(466,3,7,'General','2020-07-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(467,4,7,'Student','2020-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(468,5,7,'General','2018-06-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(469,6,7,'Student','2020-07-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(470,7,7,'General','2020-07-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(471,8,7,'Student','2020-07-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(472,9,7,'General','2020-07-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(473,10,7,'General','2018-05-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(474,11,7,'Lifetime','2020-07-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(475,12,7,'Student','2020-07-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(476,13,7,'General','2020-07-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(477,14,7,'Student','2020-07-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(478,15,7,'General','2018-04-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(479,16,7,'Student','2020-07-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(480,17,7,'General','2020-07-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(481,18,7,'Student','2020-07-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(482,19,7,'General','2020-07-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(483,20,7,'Student','2019-07-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(484,21,7,'General','2020-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(485,22,7,'Lifetime','2020-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(486,23,7,'General','2020-07-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(487,24,7,'Student','2020-07-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(488,25,7,'General','2018-01-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(489,26,7,'Student','2020-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(490,27,7,'General','2020-06-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(491,28,7,'Student','2020-06-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(492,29,7,'General','2020-06-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(493,30,7,'Student','2019-06-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(508,28,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(525,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(526,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(527,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(528,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(529,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(530,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(531,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(532,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(533,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(534,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(535,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(536,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(537,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(538,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(539,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(540,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(541,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(542,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(543,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(544,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(545,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(546,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(547,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(548,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(549,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(550,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(551,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(552,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(553,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(554,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(555,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(556,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(557,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(558,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(559,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(560,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(561,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(562,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(563,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(564,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(565,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(566,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(567,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(568,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(569,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(570,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(571,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(572,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(573,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(574,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(575,45,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(577,47,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(578,48,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(579,49,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(580,50,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(581,51,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(582,52,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(583,53,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(584,54,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(585,55,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(586,56,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(587,57,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(588,58,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(589,59,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(590,60,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(592,62,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(597,67,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(598,68,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(605,75,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(607,77,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(611,81,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(612,82,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(615,85,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(619,89,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -97,7 +97,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity_contact` WRITE; /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */; -INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (22,17,1,3),(578,376,1,3),(773,535,1,2),(246,167,2,3),(349,229,2,3),(540,352,2,3),(556,362,2,3),(689,451,2,2),(287,193,3,3),(794,556,3,2),(446,293,4,3),(499,325,4,3),(631,410,4,3),(690,452,4,2),(724,486,4,2),(743,505,4,2),(790,552,4,2),(52,37,5,3),(293,196,5,3),(144,100,6,3),(691,453,6,2),(559,364,7,3),(805,567,7,2),(103,73,8,3),(151,104,8,3),(372,245,8,3),(692,454,8,2),(222,152,9,3),(502,327,9,3),(537,350,9,3),(704,466,9,2),(733,495,9,2),(426,280,10,3),(457,299,10,3),(713,475,10,2),(751,513,10,2),(189,129,11,3),(351,230,11,3),(508,331,11,3),(807,569,11,2),(261,176,12,3),(403,266,12,3),(430,283,12,3),(716,478,12,2),(739,501,12,2),(806,568,12,2),(165,113,13,3),(136,95,14,3),(269,181,14,3),(291,195,14,3),(465,304,14,3),(688,450,14,3),(146,101,15,3),(324,215,15,3),(725,487,15,2),(756,518,15,2),(693,455,16,2),(633,411,17,3),(232,159,18,3),(444,292,18,3),(720,482,18,2),(741,503,18,2),(802,564,18,2),(220,151,19,2),(221,152,19,2),(223,153,19,2),(224,154,19,2),(226,155,19,2),(227,156,19,2),(229,157,19,2),(230,158,19,2),(231,159,19,2),(233,160,19,2),(234,161,19,2),(236,162,19,2),(238,163,19,2),(239,164,19,2),(241,165,19,2),(243,166,19,2),(245,167,19,2),(247,168,19,2),(249,169,19,2),(250,170,19,2),(251,171,19,2),(252,172,19,2),(254,173,19,2),(256,174,19,2),(258,175,19,2),(260,176,19,2),(262,177,19,2),(263,178,19,2),(265,179,19,2),(266,180,19,2),(268,181,19,2),(270,182,19,2),(272,183,19,2),(273,184,19,2),(274,185,19,2),(276,186,19,2),(277,187,19,2),(278,188,19,2),(280,189,19,2),(282,190,19,2),(284,191,19,2),(285,192,19,2),(286,193,19,2),(288,194,19,2),(290,195,19,2),(292,196,19,2),(294,197,19,2),(296,198,19,2),(298,199,19,2),(300,200,19,2),(302,201,19,2),(304,202,19,2),(306,203,19,2),(307,204,19,2),(309,205,19,2),(311,206,19,2),(312,207,19,2),(314,208,19,2),(315,209,19,2),(317,210,19,2),(318,211,19,2),(319,212,19,2),(320,213,19,2),(321,214,19,2),(323,215,19,2),(325,216,19,2),(327,217,19,2),(329,218,19,2),(331,219,19,2),(333,220,19,2),(335,221,19,2),(336,221,19,3),(337,222,19,2),(339,223,19,2),(340,224,19,2),(341,225,19,2),(343,226,19,2),(345,227,19,2),(346,228,19,2),(348,229,19,2),(350,230,19,2),(352,231,19,2),(354,232,19,2),(355,233,19,2),(356,234,19,2),(357,235,19,2),(358,236,19,2),(360,237,19,2),(361,238,19,2),(363,239,19,2),(364,240,19,2),(366,241,19,2),(367,242,19,2),(369,243,19,2),(370,244,19,2),(371,245,19,2),(373,246,19,2),(374,247,19,2),(376,248,19,2),(378,249,19,2),(379,250,19,2),(380,251,19,2),(382,252,19,2),(383,253,19,2),(384,254,19,2),(386,255,19,2),(388,256,19,2),(389,257,19,2),(390,258,19,2),(392,259,19,2),(394,260,19,2),(395,261,19,2),(396,262,19,2),(397,263,19,2),(399,264,19,2),(401,265,19,2),(402,266,19,2),(404,267,19,2),(405,268,19,2),(406,269,19,2),(407,270,19,2),(409,271,19,2),(411,272,19,2),(413,273,19,2),(414,274,19,2),(415,275,19,2),(416,275,19,3),(417,276,19,2),(419,277,19,2),(421,278,19,2),(423,279,19,2),(425,280,19,2),(427,281,19,2),(428,282,19,2),(429,283,19,2),(431,284,19,2),(433,285,19,2),(434,286,19,2),(436,287,19,2),(438,288,19,2),(439,289,19,2),(440,290,19,2),(442,291,19,2),(443,292,19,2),(445,293,19,2),(447,294,19,2),(449,295,19,2),(451,296,19,2),(453,297,19,2),(455,298,19,2),(456,299,19,2),(458,300,19,2),(694,456,19,2),(161,110,20,3),(480,312,20,3),(554,361,20,3),(777,539,20,2),(344,226,21,3),(484,315,21,3),(117,83,23,3),(228,156,23,3),(381,251,23,3),(774,536,23,2),(368,242,25,3),(271,182,26,3),(301,200,26,3),(342,225,26,3),(637,413,26,3),(177,122,27,3),(398,263,27,3),(475,309,27,3),(533,348,27,3),(792,554,27,2),(202,139,28,3),(504,328,28,3),(624,405,28,3),(121,86,30,3),(514,335,30,3),(522,339,30,3),(788,550,30,2),(66,45,32,3),(592,384,32,3),(700,462,32,2),(701,463,32,2),(729,491,32,2),(758,520,32,2),(216,148,33,3),(812,574,33,2),(36,26,34,3),(78,54,34,3),(207,142,34,3),(561,365,34,3),(697,459,34,2),(316,209,35,3),(671,439,35,3),(235,161,36,3),(242,165,36,3),(516,336,36,3),(210,144,37,3),(259,175,38,3),(614,399,38,3),(115,82,39,3),(518,337,39,3),(585,380,39,3),(609,396,39,3),(385,254,40,3),(54,38,41,3),(462,302,41,3),(718,480,41,2),(740,502,41,2),(156,107,42,3),(240,164,42,3),(126,89,43,3),(184,126,43,3),(375,247,43,3),(535,349,43,3),(699,461,43,2),(48,34,44,3),(74,52,44,3),(212,145,44,3),(572,371,44,3),(598,388,44,3),(170,117,45,3),(424,279,45,3),(492,321,45,3),(678,443,45,3),(84,58,46,3),(279,188,46,3),(281,189,46,3),(448,294,46,3),(248,168,47,3),(612,398,47,3),(92,65,48,3),(547,356,48,3),(420,277,49,3),(544,354,49,3),(14,12,50,3),(124,88,51,3),(347,228,51,3),(353,231,51,3),(785,547,51,2),(435,286,52,3),(710,472,52,2),(736,498,52,2),(789,551,52,2),(16,13,54,3),(646,421,54,3),(56,39,55,3),(587,381,55,3),(264,178,56,3),(338,222,57,3),(650,423,57,3),(660,431,57,3),(764,526,57,2),(134,94,58,3),(181,124,58,3),(305,202,58,3),(494,322,58,3),(653,425,59,3),(708,470,59,2),(735,497,59,2),(765,527,59,2),(195,134,60,3),(244,166,60,3),(275,185,60,3),(310,205,60,3),(565,367,60,3),(450,295,61,3),(496,323,61,3),(595,386,61,3),(799,561,61,2),(27,20,62,3),(154,106,62,3),(186,127,62,3),(486,316,62,3),(728,490,62,2),(745,507,62,2),(38,27,63,3),(174,120,63,3),(267,180,63,3),(602,391,63,3),(25,19,64,3),(32,23,64,3),(289,194,64,3),(569,369,64,3),(622,404,64,3),(106,75,67,3),(542,353,67,3),(132,93,68,3),(619,402,68,3),(804,566,68,2),(511,333,69,3),(628,408,69,3),(330,218,70,3),(589,382,70,3),(769,531,70,2),(255,173,71,3),(322,214,71,3),(567,368,71,3),(675,441,71,3),(698,460,71,2),(359,236,72,3),(684,447,72,3),(61,42,73,3),(400,264,73,3),(459,300,73,3),(667,437,73,3),(714,476,73,2),(738,500,73,2),(787,549,74,2),(583,379,75,3),(798,560,75,2),(179,123,76,3),(297,198,76,3),(362,238,76,3),(412,272,76,3),(418,276,76,3),(766,528,76,2),(58,40,77,3),(303,201,77,3),(681,445,77,3),(257,174,78,3),(391,258,78,3),(142,99,79,3),(253,172,79,3),(387,255,79,3),(581,378,79,3),(225,154,80,3),(635,412,80,3),(20,16,81,3),(149,103,81,3),(719,481,81,2),(754,516,81,2),(63,43,82,3),(95,67,82,3),(695,457,82,2),(795,557,83,2),(299,199,84,3),(616,400,84,3),(334,220,85,3),(365,240,85,3),(454,297,85,3),(460,301,85,2),(461,302,85,2),(463,303,85,2),(464,304,85,2),(466,305,85,2),(468,306,85,2),(470,307,85,2),(472,308,85,2),(474,309,85,2),(476,310,85,2),(477,311,85,2),(479,312,85,2),(481,313,85,2),(482,314,85,2),(483,315,85,2),(485,316,85,2),(487,317,85,2),(488,318,85,2),(489,319,85,2),(490,320,85,2),(491,321,85,2),(493,322,85,2),(495,323,85,2),(497,324,85,2),(498,325,85,2),(500,326,85,2),(501,327,85,2),(503,328,85,2),(505,329,85,2),(506,330,85,2),(507,331,85,2),(509,332,85,2),(510,333,85,2),(512,334,85,2),(513,335,85,2),(515,336,85,2),(517,337,85,2),(519,338,85,2),(521,339,85,2),(523,340,85,2),(524,341,85,2),(525,342,85,2),(526,343,85,2),(528,344,85,2),(529,345,85,2),(530,346,85,2),(531,347,85,2),(532,348,85,2),(534,349,85,2),(536,350,85,2),(538,351,85,2),(539,352,85,2),(541,353,85,2),(543,354,85,2),(545,355,85,2),(546,356,85,2),(548,357,85,2),(550,358,85,2),(551,359,85,2),(552,360,85,2),(553,361,85,2),(555,362,85,2),(557,363,85,2),(558,364,85,2),(560,365,85,2),(562,366,85,2),(564,367,85,2),(566,368,85,2),(568,369,85,2),(570,370,85,2),(571,371,85,2),(573,372,85,2),(574,373,85,2),(575,374,85,2),(576,375,85,2),(577,376,85,2),(579,377,85,2),(580,378,85,2),(582,379,85,2),(584,380,85,2),(586,381,85,2),(588,382,85,2),(590,383,85,2),(591,384,85,2),(593,385,85,2),(594,386,85,2),(596,387,85,2),(597,388,85,2),(599,389,85,2),(600,390,85,2),(601,391,85,2),(603,392,85,2),(604,393,85,2),(605,394,85,2),(607,395,85,2),(608,396,85,2),(610,397,85,2),(611,398,85,2),(613,399,85,2),(615,400,85,2),(617,401,85,2),(618,402,85,2),(620,403,85,2),(621,404,85,2),(623,405,85,2),(625,406,85,2),(626,407,85,2),(627,408,85,2),(629,409,85,2),(630,410,85,2),(632,411,85,2),(634,412,85,2),(636,413,85,2),(638,414,85,2),(639,415,85,2),(640,416,85,2),(641,417,85,2),(642,418,85,2),(643,419,85,2),(644,420,85,2),(645,421,85,2),(647,422,85,2),(648,422,85,3),(649,423,85,2),(651,424,85,2),(652,425,85,2),(654,426,85,2),(655,427,85,2),(656,428,85,2),(657,429,85,2),(658,430,85,2),(659,431,85,2),(661,432,85,2),(662,433,85,2),(663,434,85,2),(664,435,85,2),(665,436,85,2),(666,437,85,2),(668,438,85,2),(670,439,85,2),(672,440,85,2),(674,441,85,2),(676,442,85,2),(677,443,85,2),(679,444,85,2),(680,445,85,2),(682,446,85,2),(683,447,85,2),(685,448,85,2),(686,449,85,2),(687,450,85,2),(128,90,86,3),(81,56,87,3),(432,284,87,3),(205,141,88,3),(377,248,88,3),(198,136,89,3),(283,190,89,3),(471,307,89,3),(469,306,90,3),(237,162,91,3),(437,287,91,3),(473,308,91,3),(218,149,92,3),(696,458,92,2),(726,488,92,2),(744,506,92,2),(30,22,93,3),(295,197,93,3),(452,296,93,3),(43,30,94,3),(40,28,95,3),(308,204,95,3),(328,217,95,3),(441,290,95,3),(527,343,95,3),(606,394,95,3),(467,305,96,3),(520,338,96,3),(76,53,97,3),(140,98,97,3),(159,109,97,3),(478,311,97,3),(410,271,98,3),(669,438,98,3),(723,485,98,2),(761,523,98,2),(109,77,99,3),(393,259,99,3),(549,357,99,3),(563,366,99,3),(97,68,100,3),(326,216,100,3),(408,270,100,3),(422,278,100,3),(673,440,100,3),(5,4,101,3),(313,207,101,3),(332,219,101,3),(731,493,107,2),(759,521,107,2),(709,471,109,2),(750,512,109,2),(717,479,110,2),(753,515,110,2),(780,542,110,2),(721,483,112,2),(755,517,112,2),(767,529,113,2),(730,492,117,2),(746,508,117,2),(793,555,118,2),(778,540,119,2),(801,563,121,2),(772,534,124,2),(722,484,126,2),(742,504,126,2),(727,489,134,2),(757,519,134,2),(763,525,134,2),(775,537,139,2),(809,571,141,2),(811,573,142,2),(786,548,146,2),(712,474,147,2),(760,522,147,2),(796,558,151,2),(771,533,152,2),(706,468,154,2),(734,496,154,2),(781,543,154,2),(702,464,158,2),(732,494,158,2),(779,541,159,2),(783,545,161,2),(803,565,162,2),(703,465,164,2),(747,509,164,2),(810,572,164,2),(1,1,166,2),(2,2,166,2),(3,3,166,2),(4,4,166,2),(6,5,166,2),(7,6,166,2),(8,7,166,2),(9,8,166,2),(10,9,166,2),(11,10,166,2),(12,11,166,2),(13,12,166,2),(15,13,166,2),(17,14,166,2),(18,15,166,2),(19,16,166,2),(21,17,166,2),(23,18,166,2),(24,19,166,2),(26,20,166,2),(28,21,166,2),(29,22,166,2),(31,23,166,2),(33,24,166,2),(34,25,166,2),(35,26,166,2),(37,27,166,2),(39,28,166,2),(41,29,166,2),(42,30,166,2),(44,31,166,2),(45,32,166,2),(46,33,166,2),(47,34,166,2),(49,35,166,2),(50,36,166,2),(51,37,166,2),(53,38,166,2),(55,39,166,2),(57,40,166,2),(59,41,166,2),(60,42,166,2),(62,43,166,2),(64,44,166,2),(65,45,166,2),(67,46,166,2),(68,47,166,2),(69,48,166,2),(70,49,166,2),(71,50,166,2),(72,51,166,2),(73,52,166,2),(75,53,166,2),(77,54,166,2),(79,55,166,2),(80,56,166,2),(82,57,166,2),(83,58,166,2),(85,59,166,2),(86,60,166,2),(87,61,166,2),(88,62,166,2),(89,63,166,2),(90,64,166,2),(91,65,166,2),(93,66,166,2),(94,67,166,2),(96,68,166,2),(98,69,166,2),(99,70,166,2),(100,71,166,2),(101,72,166,2),(102,73,166,2),(104,74,166,2),(105,75,166,2),(107,76,166,2),(108,77,166,2),(110,78,166,2),(111,79,166,2),(112,80,166,2),(113,81,166,2),(114,82,166,2),(116,83,166,2),(118,84,166,2),(119,85,166,2),(120,86,166,2),(122,87,166,2),(123,88,166,2),(125,89,166,2),(127,90,166,2),(129,91,166,2),(130,92,166,2),(131,93,166,2),(133,94,166,2),(135,95,166,2),(137,96,166,2),(138,97,166,2),(139,98,166,2),(141,99,166,2),(143,100,166,2),(145,101,166,2),(147,102,166,2),(148,103,166,2),(150,104,166,2),(152,105,166,2),(153,106,166,2),(155,107,166,2),(157,108,166,2),(158,109,166,2),(160,110,166,2),(162,111,166,2),(163,112,166,2),(164,113,166,2),(166,114,166,2),(167,115,166,2),(168,116,166,2),(169,117,166,2),(171,118,166,2),(172,119,166,2),(173,120,166,2),(175,121,166,2),(176,122,166,2),(178,123,166,2),(180,124,166,2),(182,125,166,2),(183,126,166,2),(185,127,166,2),(187,128,166,2),(188,129,166,2),(190,130,166,2),(191,131,166,2),(192,132,166,2),(193,133,166,2),(194,134,166,2),(196,135,166,2),(197,136,166,2),(199,137,166,2),(200,138,166,2),(201,139,166,2),(203,140,166,2),(204,141,166,2),(206,142,166,2),(208,143,166,2),(209,144,166,2),(211,145,166,2),(213,146,166,2),(214,147,166,2),(215,148,166,2),(217,149,166,2),(219,150,166,2),(770,532,171,2),(707,469,173,2),(749,511,173,2),(791,553,173,2),(705,467,174,2),(748,510,174,2),(768,530,177,2),(782,544,180,2),(784,546,183,2),(711,473,185,2),(737,499,185,2),(797,559,188,2),(715,477,190,2),(752,514,190,2),(800,562,197,2),(776,538,198,2),(808,570,199,2); +INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (323,214,1,3),(235,153,2,3),(562,379,2,3),(585,395,2,3),(668,451,2,2),(78,49,3,3),(86,54,3,3),(159,104,3,3),(452,299,3,3),(189,123,4,3),(263,174,4,3),(650,439,4,3),(669,452,4,2),(364,241,5,3),(684,467,5,2),(727,510,5,2),(760,543,5,2),(312,206,6,3),(670,453,6,2),(772,555,6,2),(62,39,7,3),(115,73,7,3),(698,481,7,2),(733,516,7,2),(84,53,8,3),(448,297,8,3),(640,433,8,3),(664,448,8,3),(671,454,8,2),(756,539,8,2),(303,201,9,3),(403,265,9,3),(414,272,9,3),(129,84,10,3),(33,20,11,3),(259,171,11,3),(21,13,12,3),(326,216,12,3),(514,344,12,3),(611,412,12,3),(685,468,12,2),(713,496,12,2),(667,450,13,3),(708,491,13,2),(737,520,13,2),(656,443,14,3),(196,127,15,3),(230,151,15,2),(232,152,15,2),(234,153,15,2),(236,154,15,2),(237,155,15,2),(238,156,15,2),(239,157,15,2),(240,158,15,2),(241,159,15,2),(242,160,15,2),(243,161,15,2),(244,162,15,2),(246,163,15,2),(247,164,15,2),(249,165,15,2),(251,166,15,2),(252,167,15,2),(254,168,15,2),(256,169,15,2),(257,170,15,2),(258,171,15,2),(260,172,15,2),(261,173,15,2),(262,174,15,2),(264,175,15,2),(265,176,15,2),(267,177,15,2),(268,178,15,2),(270,179,15,2),(271,180,15,2),(272,181,15,2),(273,181,15,3),(274,182,15,2),(275,183,15,2),(277,184,15,2),(278,185,15,2),(279,186,15,2),(281,187,15,2),(283,188,15,2),(284,189,15,2),(286,190,15,2),(288,191,15,2),(289,192,15,2),(290,193,15,2),(292,194,15,2),(293,195,15,2),(294,196,15,2),(296,197,15,2),(297,198,15,2),(299,199,15,2),(300,200,15,2),(302,201,15,2),(304,202,15,2),(306,203,15,2),(307,204,15,2),(309,205,15,2),(311,206,15,2),(313,207,15,2),(314,208,15,2),(315,209,15,2),(317,210,15,2),(318,211,15,2),(319,212,15,2),(320,213,15,2),(322,214,15,2),(324,215,15,2),(325,216,15,2),(327,217,15,2),(328,218,15,2),(330,219,15,2),(331,220,15,2),(333,221,15,2),(334,222,15,2),(335,223,15,2),(337,224,15,2),(338,225,15,2),(340,226,15,2),(341,227,15,2),(342,228,15,2),(343,229,15,2),(345,230,15,2),(347,231,15,2),(348,232,15,2),(350,233,15,2),(352,234,15,2),(354,235,15,2),(356,236,15,2),(357,237,15,2),(358,238,15,2),(360,239,15,2),(361,240,15,2),(363,241,15,2),(365,242,15,2),(367,243,15,2),(369,244,15,2),(370,245,15,2),(372,246,15,2),(373,247,15,2),(375,248,15,2),(377,249,15,2),(379,250,15,2),(381,251,15,2),(383,252,15,2),(384,253,15,2),(386,254,15,2),(387,255,15,2),(388,256,15,2),(390,257,15,2),(391,258,15,2),(392,259,15,2),(394,260,15,2),(396,261,15,2),(398,262,15,2),(400,263,15,2),(401,264,15,2),(402,265,15,2),(404,266,15,2),(405,267,15,2),(407,268,15,2),(409,269,15,2),(410,270,15,2),(412,271,15,2),(413,272,15,2),(415,273,15,2),(416,274,15,2),(417,275,15,2),(418,276,15,2),(419,277,15,2),(420,278,15,2),(421,279,15,2),(423,280,15,2),(424,281,15,2),(425,282,15,2),(427,283,15,2),(429,284,15,2),(431,285,15,2),(432,286,15,2),(433,287,15,2),(434,288,15,2),(435,289,15,2),(437,290,15,2),(439,291,15,2),(440,292,15,2),(442,293,15,2),(443,294,15,2),(444,295,15,2),(445,296,15,2),(447,297,15,2),(449,298,15,2),(451,299,15,2),(453,300,15,2),(35,21,16,3),(408,268,16,3),(436,289,16,3),(470,312,16,3),(512,343,16,3),(621,419,16,3),(672,455,16,2),(385,253,17,3),(696,479,17,2),(732,515,17,2),(51,32,18,3),(175,114,18,3),(177,115,18,3),(225,146,18,3),(780,563,18,2),(673,456,19,2),(768,551,19,2),(155,101,20,3),(389,256,20,3),(703,486,20,2),(722,505,20,2),(127,83,21,3),(209,134,21,3),(463,307,21,3),(518,346,21,3),(767,550,21,2),(90,56,22,3),(496,331,22,3),(473,314,23,3),(544,366,23,3),(779,562,23,2),(336,223,24,3),(344,229,24,3),(765,548,24,2),(19,12,25,3),(521,348,25,3),(149,98,26,3),(316,209,26,3),(450,298,26,3),(509,341,26,3),(568,382,28,3),(54,34,29,3),(64,40,29,3),(104,66,29,3),(109,69,29,3),(382,251,29,3),(40,24,30,3),(770,553,30,2),(205,132,31,3),(753,536,31,2),(374,247,32,3),(399,262,32,3),(679,462,32,2),(680,463,32,2),(1,1,33,2),(2,2,33,2),(4,3,33,2),(6,4,33,2),(7,5,33,2),(9,6,33,2),(10,7,33,2),(11,8,33,2),(13,9,33,2),(15,10,33,2),(17,11,33,2),(18,12,33,2),(20,13,33,2),(22,14,33,2),(23,15,33,2),(25,16,33,2),(26,17,33,2),(28,18,33,2),(30,19,33,2),(32,20,33,2),(34,21,33,2),(36,22,33,2),(37,23,33,2),(39,24,33,2),(41,25,33,2),(43,26,33,2),(44,27,33,2),(46,28,33,2),(47,29,33,2),(48,30,33,2),(49,31,33,2),(50,32,33,2),(52,33,33,2),(53,34,33,2),(55,35,33,2),(56,36,33,2),(57,37,33,2),(59,38,33,2),(61,39,33,2),(63,40,33,2),(65,41,33,2),(67,42,33,2),(68,43,33,2),(69,44,33,2),(71,45,33,2),(72,46,33,2),(74,47,33,2),(76,48,33,2),(77,49,33,2),(79,50,33,2),(81,51,33,2),(82,52,33,2),(83,53,33,2),(85,54,33,2),(87,55,33,2),(89,56,33,2),(91,57,33,2),(93,58,33,2),(94,59,33,2),(95,60,33,2),(96,61,33,2),(97,62,33,2),(98,63,33,2),(100,64,33,2),(102,65,33,2),(103,66,33,2),(105,67,33,2),(106,68,33,2),(108,69,33,2),(110,70,33,2),(111,71,33,2),(112,72,33,2),(114,73,33,2),(116,74,33,2),(117,75,33,2),(118,76,33,2),(119,77,33,2),(120,78,33,2),(122,79,33,2),(123,80,33,2),(124,81,33,2),(125,82,33,2),(126,83,33,2),(128,84,33,2),(130,85,33,2),(131,86,33,2),(132,87,33,2),(133,88,33,2),(134,89,33,2),(135,90,33,2),(137,91,33,2),(138,92,33,2),(140,93,33,2),(142,94,33,2),(144,95,33,2),(146,96,33,2),(147,97,33,2),(148,98,33,2),(150,99,33,2),(152,100,33,2),(154,101,33,2),(156,102,33,2),(157,103,33,2),(158,104,33,2),(160,105,33,2),(161,106,33,2),(163,107,33,2),(164,108,33,2),(166,109,33,2),(168,110,33,2),(169,111,33,2),(171,112,33,2),(173,113,33,2),(174,114,33,2),(176,115,33,2),(178,116,33,2),(179,117,33,2),(180,118,33,2),(181,119,33,2),(183,120,33,2),(185,121,33,2),(186,122,33,2),(188,123,33,2),(190,124,33,2),(192,125,33,2),(193,126,33,2),(195,127,33,2),(197,128,33,2),(198,129,33,2),(200,130,33,2),(202,131,33,2),(204,132,33,2),(206,133,33,2),(208,134,33,2),(210,135,33,2),(212,136,33,2),(214,137,33,2),(215,138,33,2),(216,139,33,2),(218,140,33,2),(219,141,33,2),(220,142,33,2),(221,143,33,2),(222,144,33,2),(223,145,33,2),(224,146,33,2),(226,147,33,2),(227,148,33,2),(228,149,33,2),(229,150,33,2),(301,200,33,3),(380,250,33,3),(441,292,33,3),(676,459,34,2),(31,19,35,3),(248,164,35,3),(3,2,36,3),(121,78,36,3),(143,94,36,3),(12,8,37,3),(217,139,37,3),(245,162,37,3),(481,319,37,3),(566,381,37,3),(446,296,38,3),(329,218,39,3),(406,267,39,3),(531,356,39,3),(688,471,39,2),(729,512,39,2),(80,50,41,3),(701,484,41,2),(721,504,41,2),(762,545,41,2),(16,10,42,3),(24,15,43,3),(678,461,43,2),(368,243,44,3),(773,556,44,2),(38,23,45,3),(88,55,45,3),(305,202,45,3),(66,41,46,3),(151,99,46,3),(165,108,46,3),(167,109,46,3),(477,317,47,3),(635,429,47,3),(101,64,48,3),(359,238,48,3),(557,376,48,3),(5,3,49,3),(42,25,49,3),(213,136,49,3),(298,198,49,3),(553,373,49,3),(605,408,49,3),(778,561,49,2),(58,37,51,3),(428,283,51,3),(231,151,52,3),(459,304,52,3),(207,133,54,3),(282,187,54,3),(321,213,54,3),(589,397,54,3),(595,401,54,3),(627,423,54,3),(763,546,54,2),(266,176,55,3),(280,186,55,3),(92,57,56,3),(199,129,56,3),(422,279,56,3),(749,532,56,2),(136,90,57,3),(455,301,57,3),(551,372,57,3),(754,537,57,2),(60,38,58,3),(564,380,59,3),(250,165,60,3),(285,189,60,3),(332,220,60,3),(504,337,60,3),(775,558,60,2),(291,193,61,3),(466,309,61,3),(172,112,63,3),(351,233,63,3),(397,261,63,3),(690,473,63,2),(716,499,63,2),(355,235,64,3),(426,282,65,3),(659,445,65,3),(211,135,66,3),(378,249,66,3),(560,378,66,3),(203,131,67,3),(255,168,67,3),(346,230,67,3),(694,477,67,2),(731,514,67,2),(8,5,68,3),(750,533,68,2),(502,336,69,3),(603,407,69,3),(70,44,70,3),(201,130,70,3),(371,245,70,3),(662,447,70,3),(787,570,70,2),(533,357,71,3),(618,417,71,3),(677,460,71,2),(107,68,72,3),(746,529,73,2),(308,204,74,3),(430,284,74,3),(516,345,74,3),(706,489,74,2),(736,519,74,2),(233,152,75,3),(99,63,76,3),(113,72,76,3),(654,442,77,3),(45,27,78,3),(139,92,78,3),(153,100,78,3),(616,416,78,3),(623,420,78,3),(709,492,78,2),(725,508,78,2),(253,167,79,3),(523,349,80,3),(645,436,80,3),(695,478,80,2),(718,501,80,2),(395,260,81,3),(587,396,81,3),(182,119,82,3),(631,426,82,3),(674,457,82,2),(27,17,83,3),(187,122,83,3),(362,240,83,3),(593,400,84,3),(598,403,84,3),(494,330,85,3),(647,437,85,3),(184,120,86,3),(194,126,86,3),(339,225,86,3),(353,234,86,3),(537,360,86,3),(582,393,86,3),(29,18,87,3),(608,410,87,3),(438,290,88,3),(578,390,88,3),(310,205,89,3),(411,270,89,3),(191,124,90,3),(785,568,90,2),(376,248,91,3),(393,259,91,3),(162,106,92,3),(287,190,92,3),(349,232,92,3),(675,458,92,2),(141,93,93,3),(479,318,93,3),(573,386,93,3),(761,544,94,2),(700,483,95,2),(734,517,95,2),(744,527,95,2),(145,95,96,3),(276,183,96,3),(73,46,97,3),(170,111,98,3),(483,320,98,3),(642,434,98,3),(786,569,98,2),(269,178,99,3),(295,196,99,3),(366,242,99,3),(702,485,99,2),(740,523,99,2),(782,565,99,2),(14,9,100,3),(75,47,100,3),(764,547,102,2),(681,464,103,2),(711,494,103,2),(745,528,103,2),(789,572,105,2),(791,574,106,2),(686,469,108,2),(728,511,108,2),(757,540,109,2),(790,573,110,2),(755,538,111,2),(771,554,114,2),(777,560,120,2),(689,472,127,2),(715,498,127,2),(774,557,129,2),(784,567,130,2),(697,480,131,2),(719,502,131,2),(682,465,132,2),(726,509,132,2),(752,535,133,2),(704,487,134,2),(735,518,134,2),(742,525,140,2),(691,474,145,2),(739,522,145,2),(747,530,155,2),(710,493,156,2),(738,521,156,2),(692,475,159,2),(730,513,159,2),(699,482,161,2),(720,503,161,2),(759,542,162,2),(707,490,164,2),(724,507,164,2),(776,559,165,2),(743,526,167,2),(748,531,170,2),(751,534,172,2),(687,470,173,2),(714,497,173,2),(769,552,175,2),(683,466,179,2),(712,495,179,2),(766,549,180,2),(693,476,188,2),(717,500,188,2),(454,301,193,2),(456,302,193,2),(457,303,193,2),(458,304,193,2),(460,305,193,2),(461,306,193,2),(462,307,193,2),(464,308,193,2),(465,309,193,2),(467,310,193,2),(468,311,193,2),(469,312,193,2),(471,313,193,2),(472,314,193,2),(474,315,193,2),(475,316,193,2),(476,317,193,2),(478,318,193,2),(480,319,193,2),(482,320,193,2),(484,321,193,2),(485,322,193,2),(486,323,193,2),(487,324,193,2),(488,325,193,2),(489,326,193,2),(490,327,193,2),(491,328,193,2),(492,329,193,2),(493,330,193,2),(495,331,193,2),(497,332,193,2),(498,333,193,2),(499,334,193,2),(500,335,193,2),(501,336,193,2),(503,337,193,2),(505,338,193,2),(506,339,193,2),(507,340,193,2),(508,341,193,2),(510,342,193,2),(511,343,193,2),(513,344,193,2),(515,345,193,2),(517,346,193,2),(519,347,193,2),(520,348,193,2),(522,349,193,2),(524,350,193,2),(525,351,193,2),(526,352,193,2),(527,353,193,2),(528,354,193,2),(529,355,193,2),(530,356,193,2),(532,357,193,2),(534,358,193,2),(535,359,193,2),(536,360,193,2),(538,361,193,2),(539,362,193,2),(540,363,193,2),(541,364,193,2),(542,365,193,2),(543,366,193,2),(545,367,193,2),(546,368,193,2),(547,369,193,2),(548,370,193,2),(549,371,193,2),(550,372,193,2),(552,373,193,2),(554,374,193,2),(555,375,193,2),(556,376,193,2),(558,377,193,2),(559,378,193,2),(561,379,193,2),(563,380,193,2),(565,381,193,2),(567,382,193,2),(569,383,193,2),(570,384,193,2),(571,385,193,2),(572,386,193,2),(574,387,193,2),(575,388,193,2),(576,389,193,2),(577,390,193,2),(579,391,193,2),(580,392,193,2),(581,393,193,2),(583,394,193,2),(584,395,193,2),(586,396,193,2),(588,397,193,2),(590,398,193,2),(591,399,193,2),(592,400,193,2),(594,401,193,2),(596,402,193,2),(597,403,193,2),(599,404,193,2),(600,405,193,2),(601,406,193,2),(602,407,193,2),(604,408,193,2),(606,409,193,2),(607,410,193,2),(609,411,193,2),(610,412,193,2),(612,413,193,2),(613,414,193,2),(614,415,193,2),(615,416,193,2),(617,417,193,2),(619,418,193,2),(620,419,193,2),(622,420,193,2),(624,421,193,2),(625,422,193,2),(626,423,193,2),(628,424,193,2),(629,425,193,2),(630,426,193,2),(632,427,193,2),(633,428,193,2),(634,429,193,2),(636,430,193,2),(637,431,193,2),(638,432,193,2),(639,433,193,2),(641,434,193,2),(643,435,193,2),(644,436,193,2),(646,437,193,2),(648,438,193,2),(649,439,193,2),(651,440,193,2),(652,441,193,2),(653,442,193,2),(655,443,193,2),(657,444,193,2),(658,445,193,2),(660,446,193,2),(661,447,193,2),(663,448,193,2),(665,449,193,2),(666,450,193,2),(788,571,194,2),(705,488,195,2),(723,506,195,2),(758,541,195,2),(783,566,196,2),(781,564,200,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -107,7 +107,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_address` WRITE; /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */; -INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES (1,43,1,1,0,'265Q Northpoint Pl SW',265,'Q',NULL,'Northpoint','Pl','SW',NULL,NULL,NULL,NULL,'Saint Petersburg',1,1008,NULL,'33728',NULL,1228,27.891809,-82.724763,0,NULL,NULL,NULL),(2,71,1,1,0,'751E El Camino Rd SW',751,'E',NULL,'El Camino','Rd','SW',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30331',NULL,1228,33.715558,-84.52728,0,NULL,NULL,NULL),(3,177,1,1,0,'116E Pine Ln SW',116,'E',NULL,'Pine','Ln','SW',NULL,NULL,NULL,NULL,'Denver',1,1005,NULL,'80264',NULL,1228,39.742486,-104.98563,0,NULL,NULL,NULL),(4,110,1,1,0,'840L Jackson Path SE',840,'L',NULL,'Jackson','Path','SE',NULL,NULL,NULL,NULL,'Cumberland Foreside',1,1018,NULL,'04110',NULL,1228,43.760369,-70.19681,0,NULL,NULL,NULL),(5,91,1,1,0,'19P Dowlen Pl SE',19,'P',NULL,'Dowlen','Pl','SE',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19713',NULL,1228,39.669211,-75.71796,0,NULL,NULL,NULL),(6,37,1,1,0,'433B Lincoln Way E',433,'B',NULL,'Lincoln','Way','E',NULL,NULL,NULL,NULL,'Palmdale',1,1004,NULL,'93590',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(7,175,1,1,0,'509R Van Ness Way SE',509,'R',NULL,'Van Ness','Way','SE',NULL,NULL,NULL,NULL,'Pasadena',1,1004,NULL,'91050',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(8,15,1,1,0,'315A Green Pl W',315,'A',NULL,'Green','Pl','W',NULL,NULL,NULL,NULL,'East Troy',1,1048,NULL,'53120',NULL,1228,42.797775,-88.40435,0,NULL,NULL,NULL),(9,106,1,1,0,'69H Jackson Rd N',69,'H',NULL,'Jackson','Rd','N',NULL,NULL,NULL,NULL,'Climbing Hill',1,1014,NULL,'51015',NULL,1228,42.345024,-96.087523,0,NULL,NULL,NULL),(10,147,1,1,0,'1000F Martin Luther King Dr N',1000,'F',NULL,'Martin Luther King','Dr','N',NULL,NULL,NULL,NULL,'Oakland',1,1004,NULL,'94624',NULL,1228,37.680181,-121.921498,0,NULL,NULL,NULL),(11,198,1,1,0,'644Z States Ave N',644,'Z',NULL,'States','Ave','N',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68179',NULL,1228,41.291736,-96.171104,0,NULL,NULL,NULL),(12,18,1,1,0,'664C Martin Luther King Pl NE',664,'C',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Rudyard',1,1021,NULL,'49780',NULL,1228,46.204512,-84.73671,0,NULL,NULL,NULL),(13,108,1,1,0,'763W Cadell St W',763,'W',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Marietta',1,1037,NULL,'17547',NULL,1228,40.064862,-76.57145,0,NULL,NULL,NULL),(14,26,1,1,0,'877E Main St SE',877,'E',NULL,'Main','St','SE',NULL,NULL,NULL,NULL,'Flint',1,1021,NULL,'48556',NULL,1228,43.032677,-83.646255,0,NULL,NULL,NULL),(15,44,1,1,0,'780S Beech Way NE',780,'S',NULL,'Beech','Way','NE',NULL,NULL,NULL,NULL,'Ottawa Lake',1,1021,NULL,'49267',NULL,1228,41.757599,-83.70951,0,NULL,NULL,NULL),(16,121,1,1,0,'126R College Pl N',126,'R',NULL,'College','Pl','N',NULL,NULL,NULL,NULL,'Deweyville',1,1043,NULL,'84309',NULL,1228,41.714101,-112.08846,0,NULL,NULL,NULL),(17,47,1,1,0,'663C College St SE',663,'C',NULL,'College','St','SE',NULL,NULL,NULL,NULL,'Rockville',1,1019,NULL,'20850',NULL,1228,39.093408,-77.1718,0,NULL,NULL,NULL),(18,85,1,1,0,'763P Maple Path NE',763,'P',NULL,'Maple','Path','NE',NULL,NULL,NULL,NULL,'Richland',1,1039,NULL,'29675',NULL,1228,34.764076,-83.088332,0,NULL,NULL,NULL),(19,119,1,1,0,'608W Main Rd N',608,'W',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55359',NULL,1228,45.002212,-93.69319,0,NULL,NULL,NULL),(20,10,1,1,0,'556F Beech Way N',556,'F',NULL,'Beech','Way','N',NULL,NULL,NULL,NULL,'Carrollton',1,1009,NULL,'30116',NULL,1228,33.560454,-85.02254,0,NULL,NULL,NULL),(21,159,1,1,0,'719I Main Pl S',719,'I',NULL,'Main','Pl','S',NULL,NULL,NULL,NULL,'Shallowater',1,1042,NULL,'79363',NULL,1228,33.701024,-102.01948,0,NULL,NULL,NULL),(22,61,1,1,0,'613D Woodbridge Dr N',613,'D',NULL,'Woodbridge','Dr','N',NULL,NULL,NULL,NULL,'Springfield',1,1034,NULL,'45504',NULL,1228,39.941827,-83.83702,0,NULL,NULL,NULL),(23,164,1,1,0,'382O Martin Luther King Path NE',382,'O',NULL,'Martin Luther King','Path','NE',NULL,NULL,NULL,NULL,'Martinsburg',1,1037,NULL,'16662',NULL,1228,40.306709,-78.31987,0,NULL,NULL,NULL),(24,41,1,1,0,'785M Pine Dr SE',785,'M',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Independence',1,1036,NULL,'97351',NULL,1228,44.849012,-123.18673,0,NULL,NULL,NULL),(25,16,1,1,0,'378K Woodbridge Blvd E',378,'K',NULL,'Woodbridge','Blvd','E',NULL,NULL,NULL,NULL,'Allen',1,1026,NULL,'68710',NULL,1228,42.450185,-96.85153,0,NULL,NULL,NULL),(26,143,1,1,0,'434E El Camino Dr SW',434,'E',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Rockport',1,1018,NULL,'04856',NULL,1228,44.180867,-69.09812,0,NULL,NULL,NULL),(27,136,1,1,0,'5U Second Pl SW',5,'U',NULL,'Second','Pl','SW',NULL,NULL,NULL,NULL,'Felda',1,1008,NULL,'33930',NULL,1228,26.581172,-81.46202,0,NULL,NULL,NULL),(28,36,1,1,0,'873B El Camino Ave SE',873,'B',NULL,'El Camino','Ave','SE',NULL,NULL,NULL,NULL,'Columbus',1,1034,NULL,'43236',NULL,1228,40.135711,-83.007626,0,NULL,NULL,NULL),(29,7,1,1,0,'647X Lincoln Ave W',647,'X',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Jackson',1,1023,NULL,'39283',NULL,1228,32.311287,-90.397157,0,NULL,NULL,NULL),(30,145,1,1,0,'38Q Pine Way S',38,'Q',NULL,'Pine','Way','S',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20426',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),(31,158,1,1,0,'812E Cadell Ln N',812,'E',NULL,'Cadell','Ln','N',NULL,NULL,NULL,NULL,'Belk',1,1000,NULL,'35545',NULL,1228,33.641227,-87.92911,0,NULL,NULL,NULL),(32,199,1,1,0,'74P College Pl E',74,'P',NULL,'College','Pl','E',NULL,NULL,NULL,NULL,'Monett',1,1024,NULL,'65708',NULL,1228,36.91816,-93.91488,0,NULL,NULL,NULL),(33,21,1,1,0,'352D Van Ness Path SW',352,'D',NULL,'Van Ness','Path','SW',NULL,NULL,NULL,NULL,'Viola',1,1012,NULL,'61486',NULL,1228,41.195087,-90.57923,0,NULL,NULL,NULL),(34,12,1,1,0,'1000Q Pine Blvd SE',1000,'Q',NULL,'Pine','Blvd','SE',NULL,NULL,NULL,NULL,'Saint Joseph',1,1021,NULL,'49085',NULL,1228,42.074435,-86.47935,0,NULL,NULL,NULL),(35,81,1,1,0,'409T College Path SW',409,'T',NULL,'College','Path','SW',NULL,NULL,NULL,NULL,'Bay Saint Louis',1,1023,NULL,'39520',NULL,1228,30.304327,-89.40705,0,NULL,NULL,NULL),(36,185,1,1,0,'340G States Dr E',340,'G',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Boyd',1,1048,NULL,'54726',NULL,1228,44.946486,-91.02282,0,NULL,NULL,NULL),(37,62,1,1,0,'565W Lincoln Rd E',565,'W',NULL,'Lincoln','Rd','E',NULL,NULL,NULL,NULL,'Queens Village',1,1031,NULL,'11428',NULL,1228,40.719981,-73.74127,0,NULL,NULL,NULL),(38,78,1,1,0,'928V Main Pl W',928,'V',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Hewitt',1,1022,NULL,'56453',NULL,1228,46.32091,-95.14567,0,NULL,NULL,NULL),(39,117,1,1,0,'299C El Camino Path NW',299,'C',NULL,'El Camino','Path','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61105',NULL,1228,42.325364,-89.170527,0,NULL,NULL,NULL),(40,196,1,1,0,'568Z Martin Luther King Pl N',568,'Z',NULL,'Martin Luther King','Pl','N',NULL,NULL,NULL,NULL,'San Bruno',1,1004,NULL,'94098',NULL,1228,37.381144,-122.334825,0,NULL,NULL,NULL),(41,162,1,1,0,'965R Main Path S',965,'R',NULL,'Main','Path','S',NULL,NULL,NULL,NULL,'East Durham',1,1031,NULL,'12423',NULL,1228,42.378679,-74.10443,0,NULL,NULL,NULL),(42,90,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,NULL),(43,42,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,NULL),(44,40,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,NULL),(45,2,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,NULL),(46,68,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,NULL),(47,76,1,1,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,NULL),(48,122,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,NULL),(49,102,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,NULL),(50,49,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,NULL),(51,38,1,1,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,NULL),(52,46,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,NULL),(53,181,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,NULL),(54,57,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,NULL),(55,161,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,NULL),(56,17,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,NULL),(57,187,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,NULL),(58,80,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,NULL),(59,51,1,1,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(60,131,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,NULL),(61,79,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,NULL),(62,192,3,1,0,'336Y Bay St N',336,'Y',NULL,'Bay','St','N',NULL,'Donor Relations',NULL,NULL,'Burlingame',1,1004,NULL,'94012',NULL,1228,37.381144,-122.334825,0,NULL,NULL,NULL),(63,172,2,1,0,'336Y Bay St N',336,'Y',NULL,'Bay','St','N',NULL,'Donor Relations',NULL,NULL,'Burlingame',1,1004,NULL,'94012',NULL,1228,37.381144,-122.334825,0,NULL,NULL,62),(64,74,3,1,0,'37T Bay Rd SW',37,'T',NULL,'Bay','Rd','SW',NULL,'Disbursements',NULL,NULL,'West Palm Beach',1,1008,NULL,'33407',NULL,1228,26.750991,-80.07296,0,NULL,NULL,NULL),(65,160,2,1,0,'37T Bay Rd SW',37,'T',NULL,'Bay','Rd','SW',NULL,'Disbursements',NULL,NULL,'West Palm Beach',1,1008,NULL,'33407',NULL,1228,26.750991,-80.07296,0,NULL,NULL,64),(66,127,3,1,0,'151V Martin Luther King Way W',151,'V',NULL,'Martin Luther King','Way','W',NULL,'Disbursements',NULL,NULL,'Springfield',1,1034,NULL,'45505',NULL,1228,39.91086,-83.78579,0,NULL,NULL,NULL),(67,194,2,1,0,'151V Martin Luther King Way W',151,'V',NULL,'Martin Luther King','Way','W',NULL,'Disbursements',NULL,NULL,'Springfield',1,1034,NULL,'45505',NULL,1228,39.91086,-83.78579,0,NULL,NULL,66),(68,111,3,1,0,'7C Caulder Ave NE',7,'C',NULL,'Caulder','Ave','NE',NULL,'Mailstop 101',NULL,NULL,'Bird City',1,1015,NULL,'67731',NULL,1228,39.758864,-101.54448,0,NULL,NULL,NULL),(69,23,3,1,0,'423T Caulder Rd SE',423,'T',NULL,'Caulder','Rd','SE',NULL,'Cuffe Parade',NULL,NULL,'Carthage',1,1024,NULL,'64836',NULL,1228,37.168985,-94.31164,0,NULL,NULL,NULL),(70,65,3,1,0,'335K Woodbridge Pl E',335,'K',NULL,'Woodbridge','Pl','E',NULL,'Cuffe Parade',NULL,NULL,'Indiahoma',1,1035,NULL,'73552',NULL,1228,34.62256,-98.75386,0,NULL,NULL,NULL),(71,82,3,1,0,'66D Pine Pl NW',66,'D',NULL,'Pine','Pl','NW',NULL,'Cuffe Parade',NULL,NULL,'Harmony',1,1032,NULL,'28634',NULL,1228,35.97991,-80.77085,0,NULL,NULL,NULL),(72,123,3,1,0,'230P Martin Luther King Path SW',230,'P',NULL,'Martin Luther King','Path','SW',NULL,'Cuffe Parade',NULL,NULL,'South Amboy',1,1029,NULL,'08879',NULL,1228,40.469606,-74.27669,0,NULL,NULL,NULL),(73,55,3,1,0,'734R Main Path NW',734,'R',NULL,'Main','Path','NW',NULL,'Subscriptions Dept',NULL,NULL,'Hamilton',1,1021,NULL,'49419',NULL,1228,42.679762,-85.98996,0,NULL,NULL,NULL),(74,144,3,1,0,'127R Jackson Ave N',127,'R',NULL,'Jackson','Ave','N',NULL,'Receiving',NULL,NULL,'Pittsburgh',1,1037,NULL,'15226',NULL,1228,40.394002,-80.01655,0,NULL,NULL,NULL),(75,142,2,1,0,'127R Jackson Ave N',127,'R',NULL,'Jackson','Ave','N',NULL,'Receiving',NULL,NULL,'Pittsburgh',1,1037,NULL,'15226',NULL,1228,40.394002,-80.01655,0,NULL,NULL,74),(76,63,3,1,0,'152Y States Rd NE',152,'Y',NULL,'States','Rd','NE',NULL,'Cuffe Parade',NULL,NULL,'Angola',1,1031,NULL,'14006',NULL,1228,42.633375,-79.04567,0,NULL,NULL,NULL),(77,193,2,1,0,'152Y States Rd NE',152,'Y',NULL,'States','Rd','NE',NULL,'Cuffe Parade',NULL,NULL,'Angola',1,1031,NULL,'14006',NULL,1228,42.633375,-79.04567,0,NULL,NULL,76),(78,178,3,1,0,'470C Maple St SE',470,'C',NULL,'Maple','St','SE',NULL,'Urgent',NULL,NULL,'Loyal',1,1048,NULL,'54446',NULL,1228,44.758265,-90.48248,0,NULL,NULL,NULL),(79,18,2,0,0,'470C Maple St SE',470,'C',NULL,'Maple','St','SE',NULL,'Urgent',NULL,NULL,'Loyal',1,1048,NULL,'54446',NULL,1228,44.758265,-90.48248,0,NULL,NULL,78),(80,31,3,1,0,'999O Second Dr E',999,'O',NULL,'Second','Dr','E',NULL,'Urgent',NULL,NULL,'Arma',1,1015,NULL,'66712',NULL,1228,37.547763,-94.70622,0,NULL,NULL,NULL),(81,101,3,1,0,'279P Maple Ln NW',279,'P',NULL,'Maple','Ln','NW',NULL,'Urgent',NULL,NULL,'San Pablo',1,1005,NULL,'81153',NULL,1228,37.127132,-105.3675,0,NULL,NULL,NULL),(82,119,2,0,0,'279P Maple Ln NW',279,'P',NULL,'Maple','Ln','NW',NULL,'Urgent',NULL,NULL,'San Pablo',1,1005,NULL,'81153',NULL,1228,37.127132,-105.3675,0,NULL,NULL,81),(83,95,3,1,0,'813T Lincoln Rd E',813,'T',NULL,'Lincoln','Rd','E',NULL,'Disbursements',NULL,NULL,'Dauberville',1,1037,NULL,'19517',NULL,1228,40.407173,-75.984901,0,NULL,NULL,NULL),(84,70,2,1,0,'813T Lincoln Rd E',813,'T',NULL,'Lincoln','Rd','E',NULL,'Disbursements',NULL,NULL,'Dauberville',1,1037,NULL,'19517',NULL,1228,40.407173,-75.984901,0,NULL,NULL,83),(85,135,3,1,0,'788V Green Blvd S',788,'V',NULL,'Green','Blvd','S',NULL,'Attn: Accounting',NULL,NULL,'Austin',1,1042,NULL,'78778',NULL,1228,30.326374,-97.771258,0,NULL,NULL,NULL),(86,39,3,1,0,'522T Beech Way NE',522,'T',NULL,'Beech','Way','NE',NULL,'Subscriptions Dept',NULL,NULL,'Farmington',1,1003,NULL,'72730',NULL,1228,36.03667,-94.25261,0,NULL,NULL,NULL),(87,19,2,1,0,'522T Beech Way NE',522,'T',NULL,'Beech','Way','NE',NULL,'Subscriptions Dept',NULL,NULL,'Farmington',1,1003,NULL,'72730',NULL,1228,36.03667,-94.25261,0,NULL,NULL,86),(88,60,3,1,0,'411G Maple Blvd SE',411,'G',NULL,'Maple','Blvd','SE',NULL,'Urgent',NULL,NULL,'Paluxy',1,1042,NULL,'76467',NULL,1228,32.341365,-97.932083,0,NULL,NULL,NULL),(89,26,2,0,0,'411G Maple Blvd SE',411,'G',NULL,'Maple','Blvd','SE',NULL,'Urgent',NULL,NULL,'Paluxy',1,1042,NULL,'76467',NULL,1228,32.341365,-97.932083,0,NULL,NULL,88),(90,182,3,1,0,'741N States Rd W',741,'N',NULL,'States','Rd','W',NULL,'Editorial Dept',NULL,NULL,'Cleveland',1,1034,NULL,'44106',NULL,1228,41.507751,-81.60883,0,NULL,NULL,NULL),(91,106,2,0,0,'741N States Rd W',741,'N',NULL,'States','Rd','W',NULL,'Editorial Dept',NULL,NULL,'Cleveland',1,1034,NULL,'44106',NULL,1228,41.507751,-81.60883,0,NULL,NULL,90),(92,105,3,1,0,'453W Pine Rd N',453,'W',NULL,'Pine','Rd','N',NULL,'Donor Relations',NULL,NULL,'Acton',1,1025,NULL,'59002',NULL,1228,45.932174,-108.68933,0,NULL,NULL,NULL),(93,29,2,1,0,'453W Pine Rd N',453,'W',NULL,'Pine','Rd','N',NULL,'Donor Relations',NULL,NULL,'Acton',1,1025,NULL,'59002',NULL,1228,45.932174,-108.68933,0,NULL,NULL,92),(94,3,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(95,84,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(96,13,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(97,162,1,0,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(98,155,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(99,165,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(100,52,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(101,180,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(102,48,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(103,109,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(104,25,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(105,132,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(106,45,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(107,67,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(108,6,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(109,11,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(110,168,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(111,200,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(112,124,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(113,88,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(114,98,1,1,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,47),(115,166,1,1,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,47),(116,19,1,0,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,47),(117,125,1,1,0,'50I Pine Way SE',50,'I',NULL,'Pine','Way','SE',NULL,NULL,NULL,NULL,'Scappoose',1,1036,NULL,'97056',NULL,1228,45.778892,-122.92065,0,NULL,NULL,NULL),(118,54,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,48),(119,163,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,48),(120,83,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,48),(121,14,1,1,0,'879B Beech Ln SW',879,'B',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Springfield',1,1012,NULL,'62708',NULL,1228,39.806089,-89.586356,0,NULL,NULL,NULL),(122,104,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(123,151,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(124,190,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(125,189,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(126,176,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(127,139,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(128,140,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(129,77,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(130,193,1,0,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,51),(131,174,1,1,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,51),(132,73,1,1,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,51),(133,150,1,1,0,'253K Bay St SE',253,'K',NULL,'Bay','St','SE',NULL,NULL,NULL,NULL,'Brooklyn',1,1031,NULL,'11248',NULL,1228,40.645099,-73.945032,0,NULL,NULL,NULL),(134,8,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,52),(135,107,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,52),(136,35,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,52),(137,58,1,1,0,'480C Main Ave W',480,'C',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73140',NULL,1228,35.518509,-97.427464,0,NULL,NULL,NULL),(138,33,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,53),(139,59,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,53),(140,5,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,53),(141,173,1,1,0,'511F Second Path W',511,'F',NULL,'Second','Path','W',NULL,NULL,NULL,NULL,'Anamoose',1,1033,NULL,'58710',NULL,1228,47.87756,-100.23677,0,NULL,NULL,NULL),(142,87,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(143,201,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(144,126,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(145,64,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(146,141,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(147,94,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(148,183,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(149,96,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(150,89,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(151,191,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(152,32,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(153,153,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(154,186,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(155,133,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(156,4,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(157,169,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(158,171,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(159,184,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(160,130,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(161,197,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(162,114,1,1,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59),(163,154,1,1,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59),(164,160,1,0,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59),(165,170,1,1,0,'889L Northpoint Ln W',889,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Lakewood',1,1046,NULL,'98497',NULL,1228,47.066193,-122.113223,0,NULL,NULL,NULL),(166,100,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(167,148,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(168,179,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(169,113,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(170,70,1,0,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(171,195,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(172,156,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(173,72,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(174,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),(175,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),(176,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); +INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES (1,24,1,1,0,'684Y Woodbridge Blvd NE',684,'Y',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Lawrence',1,1020,NULL,'01840',NULL,1228,42.706941,-71.16181,0,NULL,NULL,NULL),(2,124,1,1,0,'842S Main Ave N',842,'S',NULL,'Main','Ave','N',NULL,NULL,NULL,NULL,'Swengel',1,1037,NULL,'17880',NULL,1228,40.978059,-77.08184,0,NULL,NULL,NULL),(3,57,1,1,0,'438V Main Path W',438,'V',NULL,'Main','Path','W',NULL,NULL,NULL,NULL,'Sun Valley',1,1011,NULL,'83353',NULL,1228,43.661373,-114.18191,0,NULL,NULL,NULL),(4,17,1,1,0,'49W Jackson Blvd SE',49,'W',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Parkman',1,1034,NULL,'44080',NULL,1228,41.372452,-81.06617,0,NULL,NULL,NULL),(5,182,1,1,0,'392O Green Path W',392,'O',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Stapleton',1,1000,NULL,'36578',NULL,1228,30.744745,-87.81486,0,NULL,NULL,NULL),(6,99,1,1,0,'665Z Maple Dr E',665,'Z',NULL,'Maple','Dr','E',NULL,NULL,NULL,NULL,'Greenmountain',1,1032,NULL,'28740',NULL,1228,36.023817,-82.29237,0,NULL,NULL,NULL),(7,33,1,1,0,'866D Main Pl N',866,'D',NULL,'Main','Pl','N',NULL,NULL,NULL,NULL,'Ladson',1,1039,NULL,'29456',NULL,1228,32.993571,-80.12165,0,NULL,NULL,NULL),(8,179,1,1,0,'501L Martin Luther King Path SW',501,'L',NULL,'Martin Luther King','Path','SW',NULL,NULL,NULL,NULL,'Kiamesha Lake',1,1031,NULL,'12751',NULL,1228,41.679152,-74.657,0,NULL,NULL,NULL),(9,164,1,1,0,'220E Beech Dr N',220,'E',NULL,'Beech','Dr','N',NULL,NULL,NULL,NULL,'North Sandwich',1,1028,NULL,'03259',NULL,1228,43.880005,-71.39475,0,NULL,NULL,NULL),(10,193,1,1,0,'441B Martin Luther King Blvd N',441,'B',NULL,'Martin Luther King','Blvd','N',NULL,NULL,NULL,NULL,'Louisburg',1,1032,NULL,'27549',NULL,1228,36.062239,-78.24953,0,NULL,NULL,NULL),(11,76,1,1,0,'407F Van Ness St W',407,'F',NULL,'Van Ness','St','W',NULL,NULL,NULL,NULL,'Swan Lake',1,1031,NULL,'12783',NULL,1228,41.736523,-74.82634,0,NULL,NULL,NULL),(12,162,1,1,0,'99A Main Pl SE',99,'A',NULL,'Main','Pl','SE',NULL,NULL,NULL,NULL,'Pago Pago',1,1052,NULL,'96799',NULL,1228,-7.209975,-170.7716,0,NULL,NULL,NULL),(13,66,1,1,0,'215Q Beech Ave SE',215,'Q',NULL,'Beech','Ave','SE',NULL,NULL,NULL,NULL,'Gun Barrel City',1,1042,NULL,'75156',NULL,1228,32.290819,-96.114108,0,NULL,NULL,NULL),(14,92,1,1,0,'969U El Camino Blvd E',969,'U',NULL,'El Camino','Blvd','E',NULL,NULL,NULL,NULL,'Decatur',1,1014,NULL,'50067',NULL,1228,40.734072,-93.85169,0,NULL,NULL,NULL),(15,167,1,1,0,'385V College Rd NW',385,'V',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88558',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL),(16,183,1,1,0,'76C Dowlen Path E',76,'C',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'Monson',1,1018,NULL,'04464',NULL,1228,45.303916,-69.51368,0,NULL,NULL,NULL),(17,175,1,1,0,'963L Second Pl SE',963,'L',NULL,'Second','Pl','SE',NULL,NULL,NULL,NULL,'Lake Havasu City',1,1002,NULL,'86403',NULL,1228,34.483582,-114.33694,0,NULL,NULL,NULL),(18,129,1,1,0,'429H Martin Luther King Dr SW',429,'H',NULL,'Martin Luther King','Dr','SW',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34234',NULL,1228,27.365622,-82.53556,0,NULL,NULL,NULL),(19,197,1,1,0,'41J Dowlen Dr NW',41,'J',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Findlay',1,1034,NULL,'45840',NULL,1228,41.037325,-83.64576,0,NULL,NULL,NULL),(20,7,1,1,0,'439C Green St SW',439,'C',NULL,'Green','St','SW',NULL,NULL,NULL,NULL,'Buffalo',1,1014,NULL,'52728',NULL,1228,41.456515,-90.73252,0,NULL,NULL,NULL),(21,154,1,1,0,'475T El Camino Ln W',475,'T',NULL,'El Camino','Ln','W',NULL,NULL,NULL,NULL,'Huxley',1,1014,NULL,'50124',NULL,1228,41.893335,-93.59844,0,NULL,NULL,NULL),(22,51,1,1,0,'877S Cadell Way SW',877,'S',NULL,'Cadell','Way','SW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1008,NULL,'32352',NULL,1228,30.665715,-84.75363,0,NULL,NULL,NULL),(23,143,1,1,0,'544N Jackson Dr SW',544,'N',NULL,'Jackson','Dr','SW',NULL,NULL,NULL,NULL,'Dahlen',1,1033,NULL,'58224',NULL,1228,48.173113,-97.95766,0,NULL,NULL,NULL),(24,77,1,1,0,'577N Maple Blvd SW',577,'N',NULL,'Maple','Blvd','SW',NULL,NULL,NULL,NULL,'Spokane',1,1046,NULL,'99210',NULL,1228,47.653568,-117.431742,0,NULL,NULL,NULL),(25,84,1,1,0,'428M Green Ln S',428,'M',NULL,'Green','Ln','S',NULL,NULL,NULL,NULL,'Ponca City',1,1035,NULL,'74603',NULL,1228,36.796349,-97.106166,0,NULL,NULL,NULL),(26,88,1,1,0,'723Z Beech Path W',723,'Z',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Anaheim',1,1004,NULL,'92899',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL),(27,30,1,1,0,'703U Bay Pl W',703,'U',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Mollusk',1,1045,NULL,'22517',NULL,1228,37.75028,-76.578109,0,NULL,NULL,NULL),(28,2,1,1,0,'543B Maple Rd SE',543,'B',NULL,'Maple','Rd','SE',NULL,NULL,NULL,NULL,'Sunspot',1,1030,NULL,'88349',NULL,1228,32.8672,-105.781129,0,NULL,NULL,NULL),(29,156,1,1,0,'269A Lincoln Pl SW',269,'A',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Urbana',1,1013,NULL,'46990',NULL,1228,40.898561,-85.7457,0,NULL,NULL,NULL),(30,118,1,1,0,'663O Second Rd W',663,'O',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Foxhome',1,1022,NULL,'56543',NULL,1228,46.290371,-96.33238,0,NULL,NULL,NULL),(31,87,1,1,0,'426A Caulder St E',426,'A',NULL,'Caulder','St','E',NULL,NULL,NULL,NULL,'Turner',1,1036,NULL,'97392',NULL,1228,44.807739,-122.9485,0,NULL,NULL,NULL),(32,23,1,1,0,'171T Lincoln St NE',171,'T',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'West Lebanon',1,1037,NULL,'15783',NULL,1228,40.601789,-79.35524,0,NULL,NULL,NULL),(33,5,1,1,0,'127G Pine Way S',127,'G',NULL,'Pine','Way','S',NULL,NULL,NULL,NULL,'Collierville',1,1041,NULL,'38027',NULL,1228,35.201738,-89.971538,0,NULL,NULL,NULL),(34,199,1,1,0,'284M Dowlen St N',284,'M',NULL,'Dowlen','St','N',NULL,NULL,NULL,NULL,'Saint Jo',1,1042,NULL,'76265',NULL,1228,33.701692,-97.53029,0,NULL,NULL,NULL),(35,176,1,1,0,'86O States Path SE',86,'O',NULL,'States','Path','SE',NULL,NULL,NULL,NULL,'Cape Coral',1,1008,NULL,'33914',NULL,1228,26.579862,-82.00227,0,NULL,NULL,NULL),(36,132,1,1,0,'561V Dowlen Blvd SE',561,'V',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Colts Neck',1,1029,NULL,'07722',NULL,1228,40.300226,-74.18306,0,NULL,NULL,NULL),(37,80,1,1,0,'307B Maple Way S',307,'B',NULL,'Maple','Way','S',NULL,NULL,NULL,NULL,'Savannah',1,1009,NULL,'31411',NULL,1228,31.927434,-81.0425,0,NULL,NULL,NULL),(38,44,1,1,0,'3C Dowlen Pl SW',3,'C',NULL,'Dowlen','Pl','SW',NULL,NULL,NULL,NULL,'Sea Island',1,1009,NULL,'31561',NULL,1228,31.198914,-81.332211,0,NULL,NULL,NULL),(39,96,1,1,0,'329R Northpoint Ave N',329,'R',NULL,'Northpoint','Ave','N',NULL,NULL,NULL,NULL,'Jacksonville',1,1008,NULL,'32206',NULL,1228,30.351006,-81.64664,0,NULL,NULL,NULL),(40,166,1,1,0,'583Q Dowlen Pl W',583,'Q',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Cascade',1,1005,NULL,'80809',NULL,1228,38.911701,-104.98731,0,NULL,NULL,NULL),(41,52,1,1,0,'780Z Northpoint Blvd SE',780,'Z',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Morehead City',1,1032,NULL,'28557',NULL,1228,34.729839,-76.75219,0,NULL,NULL,NULL),(42,16,1,1,0,'706L Main Path E',706,'L',NULL,'Main','Path','E',NULL,NULL,NULL,NULL,'Usk',1,1046,NULL,'99180',NULL,1228,48.295497,-117.29236,0,NULL,NULL,NULL),(43,139,1,1,0,'779I Woodbridge Path SW',779,'I',NULL,'Woodbridge','Path','SW',NULL,NULL,NULL,NULL,'Columbus',1,1034,NULL,'43219',NULL,1228,40.002514,-82.92589,0,NULL,NULL,NULL),(44,127,1,1,0,'11Q Dowlen Blvd SE',11,'Q',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Santa Clara',1,1004,NULL,'95051',NULL,1228,37.346241,-121.9846,0,NULL,NULL,NULL),(45,172,1,1,0,'375K Van Ness Ave NE',375,'K',NULL,'Van Ness','Ave','NE',NULL,NULL,NULL,NULL,'Ferguson',1,1032,NULL,'28624',NULL,1228,36.110425,-81.42262,0,NULL,NULL,NULL),(46,11,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,NULL),(47,128,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,NULL),(48,38,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,NULL),(49,136,1,1,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,NULL),(50,32,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,NULL),(51,27,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,NULL),(52,116,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,NULL),(53,106,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,NULL),(54,22,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,NULL),(55,115,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,NULL),(56,35,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,NULL),(57,177,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,NULL),(58,150,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,NULL),(59,72,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,NULL),(60,21,1,1,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,NULL),(61,19,1,1,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,NULL),(62,168,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,NULL),(63,101,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,NULL),(64,98,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,NULL),(65,163,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,NULL),(66,142,3,1,0,'787I Bay Pl W',787,'I',NULL,'Bay','Pl','W',NULL,'Subscriptions Dept',NULL,NULL,'Mccleary',1,1046,NULL,'98557',NULL,1228,47.054419,-123.2739,0,NULL,NULL,NULL),(67,170,2,1,0,'787I Bay Pl W',787,'I',NULL,'Bay','Pl','W',NULL,'Subscriptions Dept',NULL,NULL,'Mccleary',1,1046,NULL,'98557',NULL,1228,47.054419,-123.2739,0,NULL,NULL,66),(68,174,3,1,0,'698Y Northpoint Blvd NW',698,'Y',NULL,'Northpoint','Blvd','NW',NULL,'Donor Relations',NULL,NULL,'West Greene',1,1000,NULL,'35491',NULL,1228,32.835692,-87.956884,0,NULL,NULL,NULL),(69,185,2,1,0,'698Y Northpoint Blvd NW',698,'Y',NULL,'Northpoint','Blvd','NW',NULL,'Donor Relations',NULL,NULL,'West Greene',1,1000,NULL,'35491',NULL,1228,32.835692,-87.956884,0,NULL,NULL,68),(70,105,3,1,0,'35Y Maple Ln N',35,'Y',NULL,'Maple','Ln','N',NULL,'Disbursements',NULL,NULL,'Gateway',1,1003,NULL,'72733',NULL,1228,36.486424,-93.927748,0,NULL,NULL,NULL),(71,151,2,1,0,'35Y Maple Ln N',35,'Y',NULL,'Maple','Ln','N',NULL,'Disbursements',NULL,NULL,'Gateway',1,1003,NULL,'72733',NULL,1228,36.486424,-93.927748,0,NULL,NULL,70),(72,144,3,1,0,'900W Van Ness Dr SE',900,'W',NULL,'Van Ness','Dr','SE',NULL,'c/o OPDC',NULL,NULL,'Perris',1,1004,NULL,'92572',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL),(73,18,2,1,0,'900W Van Ness Dr SE',900,'W',NULL,'Van Ness','Dr','SE',NULL,'c/o OPDC',NULL,NULL,'Perris',1,1004,NULL,'92572',NULL,1228,33.752886,-116.055617,0,NULL,NULL,72),(74,148,3,1,0,'241O Van Ness Way NE',241,'O',NULL,'Van Ness','Way','NE',NULL,'c/o PO Plus',NULL,NULL,'Dallas',1,1042,NULL,'75243',NULL,1228,32.912225,-96.73688,0,NULL,NULL,NULL),(75,104,2,1,0,'241O Van Ness Way NE',241,'O',NULL,'Van Ness','Way','NE',NULL,'c/o PO Plus',NULL,NULL,'Dallas',1,1042,NULL,'75243',NULL,1228,32.912225,-96.73688,0,NULL,NULL,74),(76,90,3,1,0,'99D Beech Ave SW',99,'D',NULL,'Beech','Ave','SW',NULL,'Mailstop 101',NULL,NULL,'Rebecca',1,1009,NULL,'31783',NULL,1228,31.767986,-83.47325,0,NULL,NULL,NULL),(77,86,3,1,0,'188H Beech Way W',188,'H',NULL,'Beech','Way','W',NULL,'Cuffe Parade',NULL,NULL,'Silver Spring',1,1019,NULL,'20997',NULL,1228,39.143979,-77.207617,0,NULL,NULL,NULL),(78,197,2,0,0,'188H Beech Way W',188,'H',NULL,'Beech','Way','W',NULL,'Cuffe Parade',NULL,NULL,'Silver Spring',1,1019,NULL,'20997',NULL,1228,39.143979,-77.207617,0,NULL,NULL,77),(79,56,3,1,0,'427Z Beech Ln N',427,'Z',NULL,'Beech','Ln','N',NULL,'Attn: Accounting',NULL,NULL,'Kings Mountain',1,1016,NULL,'40442',NULL,1228,37.351449,-84.7219,0,NULL,NULL,NULL),(80,62,3,1,0,'132F Jackson St NE',132,'F',NULL,'Jackson','St','NE',NULL,'Subscriptions Dept',NULL,NULL,'Collins',1,1014,NULL,'50055',NULL,1228,41.880967,-93.29691,0,NULL,NULL,NULL),(81,137,3,1,0,'924Z States Rd E',924,'Z',NULL,'States','Rd','E',NULL,'Attn: Development',NULL,NULL,'Aptos',1,1004,NULL,'95001',NULL,1228,37.05297,-121.949418,0,NULL,NULL,NULL),(82,34,2,1,0,'924Z States Rd E',924,'Z',NULL,'States','Rd','E',NULL,'Attn: Development',NULL,NULL,'Aptos',1,1004,NULL,'95001',NULL,1228,37.05297,-121.949418,0,NULL,NULL,81),(83,14,3,1,0,'385N States Way SW',385,'N',NULL,'States','Way','SW',NULL,'Disbursements',NULL,NULL,'Ballston Lake',1,1031,NULL,'12019',NULL,1228,42.916343,-73.86657,0,NULL,NULL,NULL),(84,178,3,1,0,'657X Dowlen Ave NW',657,'X',NULL,'Dowlen','Ave','NW',NULL,'c/o PO Plus',NULL,NULL,'Lake Como',1,1008,NULL,'32157',NULL,1228,29.467357,-81.57164,0,NULL,NULL,NULL),(85,117,3,1,0,'801K Main St W',801,'K',NULL,'Main','St','W',NULL,'Community Relations',NULL,NULL,'Willow City',1,1033,NULL,'58384',NULL,1228,48.609924,-100.26587,0,NULL,NULL,NULL),(86,85,2,1,0,'801K Main St W',801,'K',NULL,'Main','St','W',NULL,'Community Relations',NULL,NULL,'Willow City',1,1033,NULL,'58384',NULL,1228,48.609924,-100.26587,0,NULL,NULL,85),(87,157,3,1,0,'787X Lincoln Dr E',787,'X',NULL,'Lincoln','Dr','E',NULL,'Urgent',NULL,NULL,'Moxahala',1,1034,NULL,'43761',NULL,1228,39.740299,-82.248369,0,NULL,NULL,NULL),(88,57,2,0,0,'787X Lincoln Dr E',787,'X',NULL,'Lincoln','Dr','E',NULL,'Urgent',NULL,NULL,'Moxahala',1,1034,NULL,'43761',NULL,1228,39.740299,-82.248369,0,NULL,NULL,87),(89,91,3,1,0,'854O Green Rd NE',854,'O',NULL,'Green','Rd','NE',NULL,'Subscriptions Dept',NULL,NULL,'Allakaket',1,1001,NULL,'99720',NULL,1228,66.557586,-152.6559,0,NULL,NULL,NULL),(90,120,2,1,0,'854O Green Rd NE',854,'O',NULL,'Green','Rd','NE',NULL,'Subscriptions Dept',NULL,NULL,'Allakaket',1,1001,NULL,'99720',NULL,1228,66.557586,-152.6559,0,NULL,NULL,89),(91,73,3,1,0,'251Y Van Ness St NW',251,'Y',NULL,'Van Ness','St','NW',NULL,'c/o OPDC',NULL,NULL,'Yakima',1,1046,NULL,'98907',NULL,1228,46.628757,-120.573967,0,NULL,NULL,NULL),(92,75,2,1,0,'251Y Van Ness St NW',251,'Y',NULL,'Van Ness','St','NW',NULL,'c/o OPDC',NULL,NULL,'Yakima',1,1046,NULL,'98907',NULL,1228,46.628757,-120.573967,0,NULL,NULL,91),(93,79,3,1,0,'753P Main Pl NW',753,'P',NULL,'Main','Pl','NW',NULL,'Payables Dept.',NULL,NULL,'Ogdensburg',1,1048,NULL,'54962',NULL,1228,44.481372,-89.03101,0,NULL,NULL,NULL),(94,37,3,1,0,'879J Jackson Ave S',879,'J',NULL,'Jackson','Ave','S',NULL,'Receiving',NULL,NULL,'Copeland',1,1015,NULL,'67837',NULL,1228,37.554849,-100.67514,0,NULL,NULL,NULL),(95,36,2,1,0,'879J Jackson Ave S',879,'J',NULL,'Jackson','Ave','S',NULL,'Receiving',NULL,NULL,'Copeland',1,1015,NULL,'67837',NULL,1228,37.554849,-100.67514,0,NULL,NULL,94),(96,46,3,1,0,'374P Green Ave S',374,'P',NULL,'Green','Ave','S',NULL,'Subscriptions Dept',NULL,NULL,'Tampa',1,1008,NULL,'33697',NULL,1228,27.871964,-82.438841,0,NULL,NULL,NULL),(97,20,2,1,0,'374P Green Ave S',374,'P',NULL,'Green','Ave','S',NULL,'Subscriptions Dept',NULL,NULL,'Tampa',1,1008,NULL,'33697',NULL,1228,27.871964,-82.438841,0,NULL,NULL,96),(98,50,3,1,0,'632O College Ave NW',632,'O',NULL,'College','Ave','NW',NULL,'Editorial Dept',NULL,NULL,'Lakewood',1,1029,NULL,'08701',NULL,1228,40.082782,-74.2094,0,NULL,NULL,NULL),(99,89,2,1,0,'632O College Ave NW',632,'O',NULL,'College','Ave','NW',NULL,'Editorial Dept',NULL,NULL,'Lakewood',1,1029,NULL,'08701',NULL,1228,40.082782,-74.2094,0,NULL,NULL,98),(100,125,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,46),(101,74,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,46),(102,47,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,46),(103,172,1,0,0,'967Z College Path E',967,'Z',NULL,'College','Path','E',NULL,NULL,NULL,NULL,'Michigan City',1,1023,NULL,'38647',NULL,1228,34.975571,-89.25982,0,NULL,NULL,NULL),(104,102,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,47),(105,126,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,47),(106,9,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,47),(107,159,1,1,0,'434Z Beech Blvd NW',434,'Z',NULL,'Beech','Blvd','NW',NULL,NULL,NULL,NULL,'Carteret',1,1029,NULL,'07008',NULL,1228,40.582504,-74.22997,0,NULL,NULL,NULL),(108,149,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(109,40,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(110,85,1,0,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(111,198,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(112,170,1,0,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,49),(113,134,1,1,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,49),(114,100,1,1,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,49),(115,192,1,1,0,'506M States St E',506,'M',NULL,'States','St','E',NULL,NULL,NULL,NULL,'East Windsor',1,1006,NULL,'06088',NULL,1228,41.908464,-72.60547,0,NULL,NULL,NULL),(116,113,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(117,59,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(118,110,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(119,34,1,0,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(120,160,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(121,147,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(122,151,1,0,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(123,191,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(124,196,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,52),(125,94,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,52),(126,188,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,52),(127,82,1,1,0,'312Q Second Blvd NE',312,'Q',NULL,'Second','Blvd','NE',NULL,NULL,NULL,NULL,'Round Rock',1,1042,NULL,'78681',NULL,1228,30.518975,-97.71439,0,NULL,NULL,NULL),(128,173,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,53),(129,28,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,53),(130,133,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,53),(131,195,1,1,0,'216S Northpoint Ave NW',216,'S',NULL,'Northpoint','Ave','NW',NULL,NULL,NULL,NULL,'Kearneysville',1,1047,NULL,'25429',NULL,1228,39.349586,-77.878957,0,NULL,NULL,NULL),(132,112,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(133,152,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(134,61,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(135,141,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(136,54,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(137,155,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(138,29,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(139,108,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(140,201,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(141,63,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(142,95,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(143,103,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(144,68,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(145,114,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(146,70,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(147,107,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(148,130,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(149,140,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(150,58,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(151,10,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(152,48,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,59),(153,78,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,59),(154,181,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,59),(155,187,1,1,0,'765E States Rd NE',765,'E',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Sebring',1,1008,NULL,'33870',NULL,1228,27.483817,-81.42131,0,NULL,NULL,NULL),(156,43,1,1,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,60),(157,20,1,0,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,60),(158,13,1,1,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,60),(159,135,1,1,0,'759K Lincoln St SW',759,'K',NULL,'Lincoln','St','SW',NULL,NULL,NULL,NULL,'Dutchtown',1,1024,NULL,'63745',NULL,1228,37.24237,-89.69768,0,NULL,NULL,NULL),(160,131,1,1,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,61),(161,89,1,0,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,61),(162,75,1,0,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,61),(163,194,1,1,0,'78O Maple Rd E',78,'O',NULL,'Maple','Rd','E',NULL,NULL,NULL,NULL,'Meservey',1,1014,NULL,'50457',NULL,1228,42.916174,-93.48318,0,NULL,NULL,NULL),(164,153,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(165,121,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(166,39,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(167,104,1,0,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(168,189,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(169,36,1,0,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(170,26,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(171,42,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(172,200,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(173,69,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(174,109,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(175,171,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(176,180,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,65),(177,158,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,65),(178,4,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,65),(179,25,1,1,0,'912H El Camino Way SE',912,'H',NULL,'El Camino','Way','SE',NULL,NULL,NULL,NULL,'Conetoe',1,1032,NULL,'27819',NULL,1228,35.818414,-77.45335,0,NULL,NULL,NULL),(180,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),(181,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),(182,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */; UNLOCK TABLES; @@ -208,7 +208,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; -INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,'Default Organization',NULL,NULL,NULL,0,NULL,'2020-06-10 02:45:21'),(2,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Smith family','Smith family',NULL,NULL,NULL,NULL,NULL,'Both','4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(3,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Kandace','Dr. Kandace Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3097920317',NULL,'Sample Data','Kandace','Q','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Dr. Kandace Cooper',NULL,1,'1978-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(4,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'reynolds.errol@testmail.net','reynolds.errol@testmail.net',NULL,NULL,NULL,NULL,NULL,'Both','485029899',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear reynolds.errol@testmail.net',1,NULL,'Dear reynolds.errol@testmail.net',1,NULL,'reynolds.errol@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(5,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner-Jacobs, Russell','Russell Wagner-Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','4167485278',NULL,'Sample Data','Russell','','Wagner-Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Wagner-Jacobs',NULL,2,'1983-11-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(6,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Lincoln','Lincoln Smith',NULL,NULL,NULL,NULL,NULL,'Both','3833936283',NULL,'Sample Data','Lincoln','J','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Jackson','Dr. Jackson Lee III',NULL,NULL,NULL,'1',NULL,'Both','3405561048',NULL,'Sample Data','Jackson','R','Lee',4,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Lee III',NULL,2,'1979-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(8,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner, Megan','Mrs. Megan Wagner',NULL,NULL,NULL,'2',NULL,'Both','3194270905',NULL,'Sample Data','Megan','','Wagner',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(9,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jacobjensen58@infomail.biz','jacobjensen58@infomail.biz',NULL,NULL,NULL,'4',NULL,'Both','1537976553',NULL,'Sample Data',NULL,NULL,NULL,4,1,NULL,NULL,1,NULL,'Dear jacobjensen58@infomail.biz',1,NULL,'Dear jacobjensen58@infomail.biz',1,NULL,'jacobjensen58@infomail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(10,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Jerome','Jerome Terry',NULL,NULL,NULL,NULL,NULL,'Both','2399613153',NULL,'Sample Data','Jerome','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Terry',NULL,2,'1942-05-01',1,'2019-06-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ru.smith69@spamalot.co.in','ru.smith69@spamalot.co.in',NULL,NULL,NULL,NULL,NULL,'Both','1615929152',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear ru.smith69@spamalot.co.in',1,NULL,'Dear ru.smith69@spamalot.co.in',1,NULL,'ru.smith69@spamalot.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(12,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Shad','Shad Terry',NULL,NULL,NULL,NULL,NULL,'Both','3306428162',NULL,'Sample Data','Shad','D','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Terry',NULL,2,'1997-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(13,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cooper, Landon','Landon Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3917161471',NULL,'Sample Data','Landon','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cooper',NULL,2,'2010-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(14,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ivanov.shad38@lol.org','ivanov.shad38@lol.org',NULL,NULL,NULL,NULL,NULL,'Both','1194442870',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear ivanov.shad38@lol.org',1,NULL,'Dear ivanov.shad38@lol.org',1,NULL,'ivanov.shad38@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(15,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Jina','Jina Parker',NULL,NULL,NULL,'3',NULL,'Both','3662235074',NULL,'Sample Data','Jina','N','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Parker',NULL,1,'1963-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Rosario','Rosario Barkley III',NULL,NULL,NULL,NULL,NULL,'Both','2313743843',NULL,'Sample Data','Rosario','V','Barkley',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Barkley III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(17,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski family','ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'Both','2407077255',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear ÅÄ…chowski family',5,NULL,'Dear ÅÄ…chowski family',2,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(18,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Wattson III',NULL,NULL,NULL,NULL,NULL,'Both','1189364369',NULL,'Sample Data','BrzÄ™czysÅ‚aw','','Wattson',NULL,4,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Wattson III',NULL,2,NULL,0,NULL,NULL,NULL,'Wisconsin Wellness Alliance',NULL,NULL,178,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(19,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Adams-Wilson, Ray','Ray Adams-Wilson II',NULL,NULL,NULL,NULL,NULL,'Both','2328256588',NULL,'Sample Data','Ray','Z','Adams-Wilson',NULL,3,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Adams-Wilson II',NULL,2,'1986-08-30',0,NULL,NULL,NULL,'Farmington Poetry Services',NULL,NULL,39,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(20,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Roberts, Allen','Mr. Allen Roberts',NULL,NULL,NULL,'4',NULL,'Both','1308913179',NULL,'Sample Data','Allen','','Roberts',3,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Mr. Allen Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(21,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Brigette','Ms. Brigette Wilson',NULL,NULL,NULL,'1',NULL,'Both','4271380473',NULL,'Sample Data','Brigette','','Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Wilson',NULL,NULL,'1987-05-19',0,NULL,NULL,NULL,'Martin Luther King Education Center',NULL,NULL,123,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(22,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wilson, Felisha','Mrs. Felisha Wilson',NULL,NULL,NULL,'2',NULL,'Both','314865628',NULL,'Sample Data','Felisha','','Wilson',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Wilson',NULL,1,'1944-04-14',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(23,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Creative Education Academy','Creative Education Academy',NULL,NULL,NULL,'2',NULL,'Both','61414175',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Education Academy',NULL,NULL,NULL,0,NULL,NULL,121,'Creative Education Academy',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(24,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Smith, Brittney','Brittney Smith',NULL,NULL,NULL,NULL,NULL,'Both','1142724087',NULL,'Sample Data','Brittney','D','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Wilson, Erik','Erik Jensen-Wilson',NULL,NULL,NULL,NULL,NULL,'Both','2019829380',NULL,'Sample Data','Erik','L','Jensen-Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Jensen-Wilson',NULL,2,'1984-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Justina','Mrs. Justina Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','2840548306',NULL,'Sample Data','Justina','','Ivanov',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Ivanov',NULL,1,'1951-01-23',0,NULL,NULL,NULL,'Paluxy Environmental Systems',NULL,NULL,60,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(27,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Brittney','Brittney González',NULL,NULL,NULL,'2',NULL,'Both','3632495561',NULL,'Sample Data','Brittney','X','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney González',NULL,1,'2004-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Erik','Erik Adams',NULL,NULL,NULL,NULL,NULL,'Both','1567928244',NULL,'Sample Data','Erik','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Adams',NULL,2,'1941-02-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(29,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bachman.esta@infomail.co.pl','bachman.esta@infomail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3758157657',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bachman.esta@infomail.co.pl',1,NULL,'Dear bachman.esta@infomail.co.pl',1,NULL,'bachman.esta@infomail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,'United Technology Alliance',NULL,NULL,105,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(30,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Brittney','Brittney Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1729401768',NULL,'Sample Data','Brittney','F','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Wilson',NULL,1,'1947-12-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(31,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Arma Food Academy','Arma Food Academy',NULL,NULL,NULL,NULL,NULL,'Both','1487843057',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Arma Food Academy',NULL,NULL,NULL,0,NULL,NULL,NULL,'Arma Food Academy',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(32,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Justina','Ms. Justina ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','288351947',NULL,'Sample Data','Justina','','ÅÄ…chowski',2,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Ms. Justina ÅÄ…chowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(33,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Ivey','Dr. Ivey Jacobs',NULL,NULL,NULL,'1',NULL,'Both','4026790678',NULL,'Sample Data','Ivey','','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Jacobs',NULL,NULL,'1958-02-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(34,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Justina','Justina ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','288351947',NULL,'Sample Data','Justina','D','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina ÅÄ…chowski',NULL,1,'1964-03-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(35,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Daren','Daren Wagner',NULL,NULL,NULL,'3',NULL,'Both','1117250816',NULL,'Sample Data','Daren','F','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Wagner',NULL,2,'2004-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(36,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Parker',NULL,NULL,NULL,'1',NULL,'Both','4128531876',NULL,'Sample Data','BrzÄ™czysÅ‚aw','J','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Parker',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(37,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Roland','Dr. Roland Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3609011575',NULL,'Sample Data','Roland','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Roberts',NULL,2,NULL,1,'2019-07-03',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(38,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,'5',NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(39,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Farmington Poetry Services','Farmington Poetry Services',NULL,NULL,NULL,NULL,NULL,'Both','2394335707',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Farmington Poetry Services',NULL,NULL,NULL,0,NULL,NULL,19,'Farmington Poetry Services',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(40,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Wilson family','Jensen-Wilson family',NULL,NULL,NULL,NULL,NULL,'Both','2091769541',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen-Wilson family',5,NULL,'Dear Jensen-Wilson family',2,NULL,'Jensen-Wilson family',NULL,NULL,NULL,0,NULL,'Jensen-Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuels.russell@testmail.co.uk','samuels.russell@testmail.co.uk',NULL,NULL,NULL,'3',NULL,'Both','454314156',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear samuels.russell@testmail.co.uk',1,NULL,'Dear samuels.russell@testmail.co.uk',1,NULL,'samuels.russell@testmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(42,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz family','DÃaz family',NULL,NULL,NULL,NULL,NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(43,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samuels, Toby','Mr. Toby Samuels',NULL,NULL,NULL,NULL,NULL,'Both','126496012',NULL,'Sample Data','Toby','Q','Samuels',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Samuels',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(44,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Barry','Dr. Barry Parker Sr.',NULL,NULL,NULL,'5',NULL,'Both','259830884',NULL,'Sample Data','Barry','','Parker',4,2,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Parker Sr.',NULL,2,'1986-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Kandace','Kandace Smith',NULL,NULL,NULL,NULL,NULL,'Both','1249006988',NULL,'Sample Data','Kandace','D','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(46,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner family','Wagner family',NULL,NULL,NULL,'5',NULL,'Both','1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(47,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Carylon','Carylon ÅÄ…chowski',NULL,NULL,NULL,'3',NULL,'Both','1553333443',NULL,'Sample Data','Carylon','Z','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon ÅÄ…chowski',NULL,1,'2001-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Craig','Dr. Craig Wilson Sr.',NULL,NULL,NULL,'5',NULL,'Both','810909432',NULL,'Sample Data','Craig','','Wilson',4,2,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Dr. Craig Wilson Sr.',NULL,2,'1990-07-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(49,'Household',NULL,1,1,0,0,0,0,NULL,NULL,'DÃaz family','DÃaz family',NULL,NULL,NULL,NULL,NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(50,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Bachman, Jerome','Dr. Jerome Bachman III',NULL,NULL,NULL,'2',NULL,'Both','4187758320',NULL,'Sample Data','Jerome','V','Bachman',4,4,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Bachman III',NULL,2,'1994-01-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(51,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-González family','ÅÄ…chowski-González family',NULL,NULL,NULL,NULL,NULL,'Both','2074862954',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear ÅÄ…chowski-González family',5,NULL,'Dear ÅÄ…chowski-González family',2,NULL,'ÅÄ…chowski-González family',NULL,NULL,NULL,0,NULL,'ÅÄ…chowski-González family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bp.daz@mymail.co.in','bp.daz@mymail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','2198426523',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bp.daz@mymail.co.in',1,NULL,'Dear bp.daz@mymail.co.in',1,NULL,'bp.daz@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(53,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'dazm@lol.co.pl','dazm@lol.co.pl',NULL,NULL,NULL,'4',NULL,'Both','2050726131',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear dazm@lol.co.pl',1,NULL,'Dear dazm@lol.co.pl',1,NULL,'dazm@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(54,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Dimitrov, Justina','Justina Dimitrov',NULL,NULL,NULL,'4',NULL,'Both','4020373049',NULL,'Sample Data','Justina','Q','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Dimitrov',NULL,1,'1993-10-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(55,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Main Arts Academy','Main Arts Academy',NULL,NULL,NULL,'3',NULL,'Both','3634669757',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Arts Academy',NULL,NULL,NULL,0,NULL,NULL,NULL,'Main Arts Academy',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(56,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Margaret','Margaret Jones',NULL,NULL,NULL,'5',NULL,'Both','1031157711',NULL,'Sample Data','Margaret','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(57,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest family','Deforest family',NULL,NULL,NULL,NULL,NULL,'Both','3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(58,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Wagner, Erik','Erik Wagner III',NULL,NULL,NULL,NULL,NULL,'Both','3259334832',NULL,'Sample Data','Erik','','Wagner',NULL,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Wagner III',NULL,NULL,'1980-03-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(59,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Jacobs, Scarlet','Scarlet Wagner-Jacobs',NULL,NULL,NULL,'3',NULL,'Both','3833435771',NULL,'Sample Data','Scarlet','','Wagner-Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Wagner-Jacobs',NULL,1,'1997-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(60,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Paluxy Environmental Systems','Paluxy Environmental Systems',NULL,NULL,NULL,NULL,NULL,'Both','737347417',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Paluxy Environmental Systems',NULL,NULL,NULL,0,NULL,NULL,26,'Paluxy Environmental Systems',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(61,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Kathleen','Kathleen Wagner',NULL,NULL,NULL,'1',NULL,'Both','325058531',NULL,'Sample Data','Kathleen','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Wagner',NULL,1,'1999-10-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(62,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Elbert','Mr. Elbert Müller Sr.',NULL,NULL,NULL,'5',NULL,'Both','189304968',NULL,'Sample Data','Elbert','Y','Müller',3,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Müller Sr.',NULL,2,'1957-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(63,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'New York Health Systems','New York Health Systems',NULL,NULL,NULL,'3',NULL,'Both','1491859687',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Health Systems',NULL,NULL,NULL,0,NULL,NULL,193,'New York Health Systems',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(64,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'deforest.kenny95@example.co.pl','deforest.kenny95@example.co.pl',NULL,NULL,NULL,'5',NULL,'Both','2335925279',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear deforest.kenny95@example.co.pl',1,NULL,'Dear deforest.kenny95@example.co.pl',1,NULL,'deforest.kenny95@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(65,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Indiahoma Health Collective','Indiahoma Health Collective',NULL,NULL,NULL,NULL,NULL,'Both','1431833890',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Indiahoma Health Collective',NULL,NULL,NULL,0,NULL,NULL,84,'Indiahoma Health Collective',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(66,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Daren','Dr. Daren Reynolds',NULL,NULL,NULL,'2',NULL,'Both','3938117907',NULL,'Sample Data','Daren','','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Reynolds',NULL,NULL,'1976-06-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Brittney','Brittney Smith',NULL,NULL,NULL,'5',NULL,'Both','1142724087',NULL,'Sample Data','Brittney','I','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Smith',NULL,1,'1993-01-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(68,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,'3',NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(69,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ashlie82@airmail.co.pl','ashlie82@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','1567878755',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear ashlie82@airmail.co.pl',1,NULL,'Dear ashlie82@airmail.co.pl',1,NULL,'ashlie82@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell, Brigette','Mrs. Brigette Bachman-Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','2481596724',NULL,'Sample Data','Brigette','Y','Bachman-Blackwell',1,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Mrs. Brigette Bachman-Blackwell',NULL,1,'1967-11-30',0,NULL,NULL,NULL,'Dauberville Arts Center',NULL,NULL,95,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(71,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'DÃaz, Lashawnda','Ms. Lashawnda DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','2462862160',NULL,'Sample Data','Lashawnda','','DÃaz',2,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Ms. Lashawnda DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(72,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Omar','Omar Blackwell Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3587375768',NULL,'Sample Data','Omar','U','Blackwell',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Blackwell Jr.',NULL,2,'1968-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:51'),(73,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'samsonb@example.co.pl','samsonb@example.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3547419990',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samsonb@example.co.pl',1,NULL,'Dear samsonb@example.co.pl',1,NULL,'samsonb@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(74,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Peace Fund','Urban Peace Fund',NULL,NULL,NULL,'2',NULL,'Both','3299542693',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Peace Fund',NULL,NULL,NULL,0,NULL,NULL,160,'Urban Peace Fund',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(75,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Rolando','Rolando Jameson III',NULL,NULL,NULL,'2',NULL,'Both','726163988',NULL,'Sample Data','Rolando','B','Jameson',NULL,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Jameson III',NULL,2,'2002-03-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(76,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Adams-Wilson family','Adams-Wilson family',NULL,NULL,NULL,'1',NULL,'Both','518408640',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams-Wilson family',5,NULL,'Dear Adams-Wilson family',2,NULL,'Adams-Wilson family',NULL,NULL,NULL,0,NULL,'Adams-Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(77,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'edaz@mymail.net','edaz@mymail.net',NULL,NULL,NULL,NULL,NULL,'Both','3624031063',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear edaz@mymail.net',1,NULL,'Dear edaz@mymail.net',1,NULL,'edaz@mymail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(78,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Prentice, Rolando','Dr. Rolando Prentice II',NULL,NULL,NULL,'4',NULL,'Both','1297722771',NULL,'Sample Data','Rolando','T','Prentice',4,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Prentice II',NULL,2,'1974-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(79,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell family','Bachman-Blackwell family',NULL,NULL,NULL,NULL,NULL,'Both','1235943467',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman-Blackwell family',5,NULL,'Dear Bachman-Blackwell family',2,NULL,'Bachman-Blackwell family',NULL,NULL,NULL,0,NULL,'Bachman-Blackwell family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(80,'Household',NULL,0,1,0,0,1,0,NULL,NULL,'Robertson family','Robertson family',NULL,NULL,NULL,NULL,NULL,'Both','3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Rolando','Rolando Terry Jr.',NULL,NULL,NULL,NULL,NULL,'Both','158688925',NULL,'Sample Data','Rolando','Q','Terry',NULL,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Terry Jr.',NULL,2,'1931-07-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(82,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Pine Action Association','Pine Action Association',NULL,NULL,NULL,NULL,NULL,'Both','1678128212',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Action Association',NULL,NULL,NULL,0,NULL,NULL,NULL,'Pine Action Association',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(83,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov-Dimitrov, Juliann','Juliann Ivanov-Dimitrov',NULL,NULL,NULL,'3',NULL,'Both','955994289',NULL,'Sample Data','Juliann','A','Ivanov-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Ivanov-Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Sherman','Sherman Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1707375456',NULL,'Sample Data','Sherman','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Cooper',NULL,2,'2004-08-09',0,NULL,NULL,NULL,'Indiahoma Health Collective',NULL,NULL,65,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Daren','Dr. Daren Adams II',NULL,NULL,NULL,NULL,NULL,'Both','1164251190',NULL,'Sample Data','Daren','S','Adams',4,3,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Adams II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(86,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terrell, Shauna','Ms. Shauna Terrell',NULL,NULL,NULL,NULL,NULL,'Both','3418962952',NULL,'Sample Data','Shauna','','Terrell',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna Terrell',NULL,NULL,'1952-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(87,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts-Deforest, Herminia','Herminia Roberts-Deforest',NULL,NULL,NULL,NULL,NULL,'Both','955797514',NULL,'Sample Data','Herminia','H','Roberts-Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Roberts-Deforest',NULL,1,'1990-03-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(88,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'jameson.q.teddy@notmail.org','jameson.q.teddy@notmail.org',NULL,NULL,NULL,'4',NULL,'Both','465702669',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.teddy@notmail.org',1,NULL,'Dear jameson.q.teddy@notmail.org',1,NULL,'jameson.q.teddy@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(89,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Megan','Megan ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','1824434920',NULL,'Sample Data','Megan','','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan ÅÄ…chowski',NULL,1,'1982-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(90,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,NULL,NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(91,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Claudio','Claudio Patel',NULL,NULL,NULL,'2',NULL,'Both','2717427490',NULL,'Sample Data','Claudio','A','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Patel',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(92,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'roberts.r.nicole50@testing.biz','roberts.r.nicole50@testing.biz',NULL,NULL,NULL,'1',NULL,'Both','3589237036',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear roberts.r.nicole50@testing.biz',1,NULL,'Dear roberts.r.nicole50@testing.biz',1,NULL,'roberts.r.nicole50@testing.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(93,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'McReynolds, Shad','Mr. Shad McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','4249147082',NULL,'Sample Data','Shad','N','McReynolds',3,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Mr. Shad McReynolds',NULL,2,'1944-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(94,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Laree','Ms. Laree DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','970611892',NULL,'Sample Data','Laree','R','DÃaz',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree DÃaz',NULL,1,'1985-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(95,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Dauberville Arts Center','Dauberville Arts Center',NULL,NULL,NULL,'5',NULL,'Both','623673734',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dauberville Arts Center',NULL,NULL,NULL,0,NULL,NULL,70,'Dauberville Arts Center',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(96,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Jacob','Jacob DÃaz',NULL,NULL,NULL,'3',NULL,'Both','3488947578',NULL,'Sample Data','Jacob','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob DÃaz',NULL,2,'1949-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(97,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Maxwell','Maxwell Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','269604807',NULL,'Sample Data','Maxwell','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Jacobs',NULL,2,'2000-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(98,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wilson, Alexia','Ms. Alexia Wilson',NULL,NULL,NULL,'2',NULL,'Both','3321653861',NULL,'Sample Data','Alexia','N','Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Ms. Alexia Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(99,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Esta','Esta Smith',NULL,NULL,NULL,NULL,NULL,'Both','4101330541',NULL,'Sample Data','Esta','O','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Smith',NULL,NULL,'2001-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(100,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Teresa','Teresa Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','2760564229',NULL,'Sample Data','Teresa','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(101,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'San Pablo Action Services','San Pablo Action Services',NULL,NULL,NULL,'1',NULL,'Both','2589964231',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'San Pablo Action Services',NULL,NULL,NULL,0,NULL,NULL,119,'San Pablo Action Services',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(102,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Adams family','Adams family',NULL,NULL,NULL,'4',NULL,'Both','1515323104',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams family',5,NULL,'Dear Adams family',2,NULL,'Adams family',NULL,NULL,NULL,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Jacob','Jacob Müller',NULL,NULL,NULL,NULL,NULL,'Both','176489544',NULL,'Sample Data','Jacob','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Müller',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(104,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Roland','Roland Adams',NULL,NULL,NULL,NULL,NULL,'Both','2320657874',NULL,'Sample Data','Roland','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Adams',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(105,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'United Technology Alliance','United Technology Alliance',NULL,NULL,NULL,NULL,NULL,'Both','3413138562',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Technology Alliance',NULL,NULL,NULL,0,NULL,NULL,29,'United Technology Alliance',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(106,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Valene','Mrs. Valene McReynolds',NULL,NULL,NULL,'2',NULL,'Both','2007971144',NULL,'Sample Data','Valene','O','McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Mrs. Valene McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,'States Music Partnership',NULL,NULL,182,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(107,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wagner, Damaris','Damaris Wagner',NULL,NULL,NULL,'4',NULL,'Both','2489613287',NULL,'Sample Data','Damaris','T','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(108,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz, Maria','Maria Cruz',NULL,NULL,NULL,NULL,NULL,'Both','2760046395',NULL,'Sample Data','Maria','W','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Cruz',NULL,2,'1959-10-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(109,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jensen-Wilson, Ashley','Ms. Ashley Jensen-Wilson',NULL,NULL,NULL,NULL,NULL,'Both','3865771541',NULL,'Sample Data','Ashley','Y','Jensen-Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ms. Ashley Jensen-Wilson',NULL,NULL,'1981-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Errol','Dr. Errol Jameson II',NULL,NULL,NULL,NULL,NULL,'Both','4067151192',NULL,'Sample Data','Errol','G','Jameson',4,3,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Jameson II',NULL,2,'1966-05-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(111,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Sierra Peace Initiative','Sierra Peace Initiative',NULL,NULL,NULL,NULL,NULL,'Both','1302696609',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Peace Initiative',NULL,NULL,NULL,0,NULL,NULL,154,'Sierra Peace Initiative',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(112,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Laree','Laree Dimitrov',NULL,NULL,NULL,'1',NULL,'Both','2136401508',NULL,'Sample Data','Laree','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'dimitrov.b.brzczysaw@sample.co.nz','dimitrov.b.brzczysaw@sample.co.nz',NULL,NULL,NULL,'4',NULL,'Both','2839697415',NULL,'Sample Data',NULL,NULL,NULL,4,2,NULL,NULL,1,NULL,'Dear dimitrov.b.brzczysaw@sample.co.nz',1,NULL,'Dear dimitrov.b.brzczysaw@sample.co.nz',1,NULL,'dimitrov.b.brzczysaw@sample.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(114,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'gonzlez.bernadette25@example.net','gonzlez.bernadette25@example.net',NULL,NULL,NULL,'5',NULL,'Both','3441780988',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear gonzlez.bernadette25@example.net',1,NULL,'Dear gonzlez.bernadette25@example.net',1,NULL,'gonzlez.bernadette25@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(115,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'krobertson12@lol.biz','krobertson12@lol.biz',NULL,NULL,NULL,'5',NULL,'Both','2711873603',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear krobertson12@lol.biz',1,NULL,'Dear krobertson12@lol.biz',1,NULL,'krobertson12@lol.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(116,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner, Maxwell','Mr. Maxwell Wagner',NULL,NULL,NULL,NULL,NULL,'Both','899179200',NULL,'Sample Data','Maxwell','M','Wagner',3,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Wagner',NULL,NULL,'1946-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(117,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Zope, Bob','Bob Zope II',NULL,NULL,NULL,'1',NULL,'Both','707485722',NULL,'Sample Data','Bob','','Zope',NULL,3,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Zope II',NULL,2,'2002-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(118,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Kandace','Dr. Kandace Terrell',NULL,NULL,NULL,'4',NULL,'Both','3245030049',NULL,'Sample Data','Kandace','','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Dr. Kandace Terrell',NULL,1,'1947-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(119,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Jina','Ms. Jina Grant',NULL,NULL,NULL,'3',NULL,'Both','870157867',NULL,'Sample Data','Jina','J','Grant',2,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Ms. Jina Grant',NULL,1,'1994-03-21',0,NULL,NULL,NULL,'San Pablo Action Services',NULL,NULL,101,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(120,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Lou','Lou Roberts II',NULL,NULL,NULL,NULL,NULL,'Both','3476194906',NULL,'Sample Data','Lou','','Roberts',NULL,3,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Roberts II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(121,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'nlee@testmail.biz','nlee@testmail.biz',NULL,NULL,NULL,NULL,NULL,'Both','230563380',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear nlee@testmail.biz',1,NULL,'Dear nlee@testmail.biz',1,NULL,'nlee@testmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,'Creative Education Academy',NULL,NULL,23,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(122,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Dimitrov family','Ivanov-Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','2067553646',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Dimitrov family',5,NULL,'Dear Ivanov-Dimitrov family',2,NULL,'Ivanov-Dimitrov family',NULL,NULL,NULL,0,NULL,'Ivanov-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(123,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Martin Luther King Education Center','Martin Luther King Education Center',NULL,NULL,NULL,'1',NULL,'Both','2317988135',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Education Center',NULL,NULL,NULL,0,NULL,NULL,21,'Martin Luther King Education Center',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(124,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'irisjameson76@lol.co.nz','irisjameson76@lol.co.nz',NULL,NULL,NULL,'2',NULL,'Both','2939542613',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear irisjameson76@lol.co.nz',1,NULL,'Dear irisjameson76@lol.co.nz',1,NULL,'irisjameson76@lol.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(125,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Rosario','Rosario Adams III',NULL,NULL,NULL,NULL,NULL,'Both','628774619',NULL,'Sample Data','Rosario','','Adams',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Adams III',NULL,2,'1974-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(126,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'kandaced42@sample.co.uk','kandaced42@sample.co.uk',NULL,NULL,NULL,'2',NULL,'Both','2678526306',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear kandaced42@sample.co.uk',1,NULL,'Dear kandaced42@sample.co.uk',1,NULL,'kandaced42@sample.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(127,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Martin Luther King Peace Initiative','Martin Luther King Peace Initiative',NULL,NULL,NULL,'1',NULL,'Both','75218906',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Peace Initiative',NULL,NULL,NULL,0,NULL,NULL,194,'Martin Luther King Peace Initiative',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(128,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Winford','Mr. Winford Grant',NULL,NULL,NULL,NULL,NULL,'Both','431528979',NULL,'Sample Data','Winford','D','Grant',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Grant',NULL,NULL,'1984-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(129,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Betty','Mrs. Betty Olsen',NULL,NULL,NULL,'5',NULL,'Both','3171896776',NULL,'Sample Data','Betty','','Olsen',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Olsen',NULL,1,'1950-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(130,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Robertson, Carlos','Carlos Robertson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3416802562',NULL,'Sample Data','Carlos','','Robertson',NULL,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Robertson Jr.',NULL,NULL,'1997-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(131,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(132,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Allen','Allen Jensen Sr.',NULL,NULL,NULL,NULL,NULL,'Both','478269877',NULL,'Sample Data','Allen','','Jensen',NULL,2,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Jensen Sr.',NULL,2,'1969-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'reynolds.elizabeth50@notmail.org','reynolds.elizabeth50@notmail.org',NULL,NULL,NULL,'1',NULL,'Both','1110955934',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.elizabeth50@notmail.org',1,NULL,'Dear reynolds.elizabeth50@notmail.org',1,NULL,'reynolds.elizabeth50@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(134,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Landon','Landon Cruz',NULL,NULL,NULL,NULL,NULL,'Both','2389658974',NULL,'Sample Data','Landon','D','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cruz',NULL,NULL,'2004-07-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(135,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Austin Health Trust','Austin Health Trust',NULL,NULL,NULL,NULL,NULL,'Both','2565452778',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Austin Health Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,'Austin Health Trust',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(136,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'robertson.ivey@example.co.in','robertson.ivey@example.co.in',NULL,NULL,NULL,NULL,NULL,'Both','4013252257',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear robertson.ivey@example.co.in',1,NULL,'Dear robertson.ivey@example.co.in',1,NULL,'robertson.ivey@example.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(137,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'cruz.sanford48@mymail.co.pl','cruz.sanford48@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3397158868',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear cruz.sanford48@mymail.co.pl',1,NULL,'Dear cruz.sanford48@mymail.co.pl',1,NULL,'cruz.sanford48@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(138,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Heidi','Heidi Jameson',NULL,NULL,NULL,'1',NULL,'Both','1155008282',NULL,'Sample Data','Heidi','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Jameson',NULL,NULL,'1993-03-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Scarlet','Scarlet DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','3578692438',NULL,'Sample Data','Scarlet','C','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet DÃaz',NULL,1,'1979-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Ashley','Ashley DÃaz Sr.',NULL,NULL,NULL,'4',NULL,'Both','2703610004',NULL,'Sample Data','Ashley','H','DÃaz',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley DÃaz Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith-DÃaz, Eleonor','Eleonor Smith-DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','2841567695',NULL,'Sample Data','Eleonor','L','Smith-DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Smith-DÃaz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(142,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Scarlet','Ms. Scarlet Jones',NULL,NULL,NULL,'2',NULL,'Both','4237120359',NULL,'Sample Data','Scarlet','','Jones',2,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Ms. Scarlet Jones',NULL,1,'1984-09-05',0,NULL,NULL,NULL,'Urban Culture Initiative',NULL,NULL,144,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Mei','Mei Adams',NULL,NULL,NULL,'2',NULL,'Both','407770009',NULL,'Sample Data','Mei','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Adams',NULL,1,'1946-07-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(144,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Culture Initiative','Urban Culture Initiative',NULL,NULL,NULL,'1',NULL,'Both','1678635405',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,142,'Urban Culture Initiative',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Jackson','Jackson Müller III',NULL,NULL,NULL,NULL,NULL,'Both','2768075849',NULL,'Sample Data','Jackson','G','Müller',NULL,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Müller III',NULL,2,'1978-10-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(146,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Tanya','Ms. Tanya ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','2472113675',NULL,'Sample Data','Tanya','Q','ÅÄ…chowski',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya ÅÄ…chowski',NULL,NULL,'1948-08-27',1,'2020-03-17',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuels.u.erik@airmail.com','samuels.u.erik@airmail.com',NULL,NULL,NULL,NULL,NULL,'Both','438570743',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samuels.u.erik@airmail.com',1,NULL,'Dear samuels.u.erik@airmail.com',1,NULL,'samuels.u.erik@airmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(148,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Lawerence','Lawerence Dimitrov III',NULL,NULL,NULL,'3',NULL,'Both','2843061688',NULL,'Sample Data','Lawerence','D','Dimitrov',NULL,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Dimitrov III',NULL,NULL,'2003-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(149,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts, Russell','Russell Roberts III',NULL,NULL,NULL,NULL,NULL,'Both','651288599',NULL,'Sample Data','Russell','H','Roberts',NULL,4,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Roberts III',NULL,2,'1936-01-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(150,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Kathleen','Mrs. Kathleen Samson',NULL,NULL,NULL,NULL,NULL,'Both','2829652278',NULL,'Sample Data','Kathleen','H','Samson',1,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Mrs. Kathleen Samson',NULL,1,'1985-06-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'adams.e.allan86@notmail.co.uk','adams.e.allan86@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','3110867001',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear adams.e.allan86@notmail.co.uk',1,NULL,'Dear adams.e.allan86@notmail.co.uk',1,NULL,'adams.e.allan86@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(152,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Shad','Dr. Shad Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3023273825',NULL,'Sample Data','Shad','C','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Reynolds',NULL,2,'1968-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(153,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Kathlyn','Mrs. Kathlyn ÅÄ…chowski',NULL,NULL,NULL,'1',NULL,'Both','336052777',NULL,'Sample Data','Kathlyn','B','ÅÄ…chowski',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn ÅÄ…chowski',NULL,NULL,'1983-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(154,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-González, Omar','Omar ÅÄ…chowski-González Jr.',NULL,NULL,NULL,'1',NULL,'Both','3354310241',NULL,'Sample Data','Omar','','ÅÄ…chowski-González',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar ÅÄ…chowski-González Jr.',NULL,2,'2014-10-01',0,NULL,NULL,NULL,'Sierra Peace Initiative',NULL,NULL,111,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(155,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Nielsen-DÃaz, Kathleen','Kathleen Nielsen-DÃaz',NULL,NULL,NULL,'2',NULL,'Both','2949897049',NULL,'Sample Data','Kathleen','','Nielsen-DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Nielsen-DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(156,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell, Teddy','Mr. Teddy Bachman-Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','998147436',NULL,'Sample Data','Teddy','S','Bachman-Blackwell',3,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Bachman-Blackwell',NULL,2,'1993-05-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:51'),(157,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Zope, Allan','Dr. Allan Zope II',NULL,NULL,NULL,NULL,NULL,'Both','891375066',NULL,'Sample Data','Allan','','Zope',4,3,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Dr. Allan Zope II',NULL,2,'1946-10-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(158,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Arlyne','Mrs. Arlyne Terry',NULL,NULL,NULL,NULL,NULL,'Both','3024103197',NULL,'Sample Data','Arlyne','R','Terry',1,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Mrs. Arlyne Terry',NULL,1,'1951-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(159,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman, Erik','Dr. Erik Bachman',NULL,NULL,NULL,'1',NULL,'Both','620728720',NULL,'Sample Data','Erik','K','Bachman',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Bachman',NULL,NULL,'1957-06-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(160,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-González, Brittney','Brittney ÅÄ…chowski-González',NULL,NULL,NULL,'2',NULL,'Both','1480019209',NULL,'Sample Data','Brittney','S','ÅÄ…chowski-González',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney ÅÄ…chowski-González',NULL,NULL,'2011-03-26',0,NULL,NULL,NULL,'Urban Peace Fund',NULL,NULL,74,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(161,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz family','DÃaz family',NULL,NULL,NULL,NULL,NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Arlyne','Arlyne Jones',NULL,NULL,NULL,NULL,NULL,'Both','3827704597',NULL,'Sample Data','Arlyne','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Jones',NULL,1,'2005-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(163,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Dimitrov, Miguel','Miguel Ivanov-Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3702666988',NULL,'Sample Data','Miguel','D','Ivanov-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Ivanov-Dimitrov',NULL,2,'2008-06-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(164,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen, Scott','Scott Jensen',NULL,NULL,NULL,'5',NULL,'Both','4064239922',NULL,'Sample Data','Scott','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Jensen',NULL,2,'1936-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'tobydaz31@fakemail.net','tobydaz31@fakemail.net',NULL,NULL,NULL,'2',NULL,'Both','658008142',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear tobydaz31@fakemail.net',1,NULL,'Dear tobydaz31@fakemail.net',1,NULL,'tobydaz31@fakemail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(166,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams-Wilson, Miguel','Mr. Miguel Adams-Wilson',NULL,NULL,NULL,'5',NULL,'Both','3988349463',NULL,'Sample Data','Miguel','N','Adams-Wilson',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Adams-Wilson',NULL,2,'1987-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Irvin','Irvin Robertson III',NULL,NULL,NULL,NULL,NULL,'Both','3287904826',NULL,'Sample Data','Irvin','O','Robertson',NULL,4,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(168,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Brigette','Brigette Jameson',NULL,NULL,NULL,'5',NULL,'Both','839229848',NULL,'Sample Data','Brigette','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Jameson',NULL,1,'1962-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(169,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Craig','Craig Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3510577139',NULL,'Sample Data','Craig','F','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Reynolds',NULL,2,'1968-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(170,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Shad','Dr. Shad ÅÄ…chowski II',NULL,NULL,NULL,NULL,NULL,'Both','695965162',NULL,'Sample Data','Shad','C','ÅÄ…chowski',4,3,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad ÅÄ…chowski II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(171,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell-Robertson, Rosario','Mr. Rosario Terrell-Robertson',NULL,NULL,NULL,NULL,NULL,'Both','2367208597',NULL,'Sample Data','Rosario','','Terrell-Robertson',3,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Terrell-Robertson',NULL,NULL,'1989-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(172,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Merrie','Merrie Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','2696737168',NULL,'Sample Data','Merrie','X','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,'Burlingame Software Solutions',NULL,NULL,192,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Lou','Lou Wagner',NULL,NULL,NULL,'4',NULL,'Both','2041146413',NULL,'Sample Data','Lou','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Wagner',NULL,2,'1989-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(174,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Winford','Winford Samson',NULL,NULL,NULL,'3',NULL,'Both','935630203',NULL,'Sample Data','Winford','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(175,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'felishar2@infomail.co.nz','felishar2@infomail.co.nz',NULL,NULL,NULL,'1',NULL,'Both','3903995902',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear felishar2@infomail.co.nz',1,NULL,'Dear felishar2@infomail.co.nz',1,NULL,'felishar2@infomail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(176,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'DÃaz, Kathlyn','Dr. Kathlyn DÃaz',NULL,NULL,NULL,'2',NULL,'Both','1074199514',NULL,'Sample Data','Kathlyn','O','DÃaz',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn DÃaz',NULL,1,'1970-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(177,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Kiara','Kiara Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2419573895',NULL,'Sample Data','Kiara','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Terrell',NULL,1,'2001-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(178,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Wisconsin Wellness Alliance','Wisconsin Wellness Alliance',NULL,NULL,NULL,NULL,NULL,'Both','822473134',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wisconsin Wellness Alliance',NULL,NULL,NULL,0,NULL,NULL,18,'Wisconsin Wellness Alliance',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(179,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'scarletdimitrov53@sample.co.pl','scarletdimitrov53@sample.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','935628927',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear scarletdimitrov53@sample.co.pl',1,NULL,'Dear scarletdimitrov53@sample.co.pl',1,NULL,'scarletdimitrov53@sample.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(180,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'daza@lol.biz','daza@lol.biz',NULL,NULL,NULL,'4',NULL,'Both','2752648294',NULL,'Sample Data',NULL,NULL,NULL,4,1,NULL,NULL,1,NULL,'Dear daza@lol.biz',1,NULL,'Dear daza@lol.biz',1,NULL,'daza@lol.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(181,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Jacobs family','Wagner-Jacobs family',NULL,NULL,NULL,'5',NULL,'Both','1922403537',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner-Jacobs family',5,NULL,'Dear Wagner-Jacobs family',2,NULL,'Wagner-Jacobs family',NULL,NULL,NULL,0,NULL,'Wagner-Jacobs family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(182,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'States Music Partnership','States Music Partnership',NULL,NULL,NULL,'5',NULL,'Both','1452485960',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Music Partnership',NULL,NULL,NULL,0,NULL,NULL,106,'States Music Partnership',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(183,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'DÃaz, Arlyne','Arlyne DÃaz',NULL,NULL,NULL,'2',NULL,'Both','4265577068',NULL,'Sample Data','Arlyne','F','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne DÃaz',NULL,1,'1972-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(184,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Lawerence','Lawerence Robertson',NULL,NULL,NULL,'3',NULL,'Both','3742055546',NULL,'Sample Data','Lawerence','D','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Robertson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'daz.sonny@lol.net','daz.sonny@lol.net',NULL,NULL,NULL,NULL,NULL,'Both','2019483543',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear daz.sonny@lol.net',1,NULL,'Dear daz.sonny@lol.net',1,NULL,'daz.sonny@lol.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(186,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Tanya','Mrs. Tanya Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3920520265',NULL,'Sample Data','Tanya','','Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(187,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds family','Reynolds family',NULL,NULL,NULL,NULL,NULL,'Both','4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Teddy','Dr. Teddy Adams Sr.',NULL,NULL,NULL,'2',NULL,'Both','679771047',NULL,'Sample Data','Teddy','B','Adams',4,2,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Adams Sr.',NULL,NULL,'1977-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(189,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Adams, Troy','Dr. Troy Adams III',NULL,NULL,NULL,'1',NULL,'Both','271731072',NULL,'Sample Data','Troy','X','Adams',4,4,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Dr. Troy Adams III',NULL,NULL,'1977-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Josefa','Josefa Adams',NULL,NULL,NULL,'4',NULL,'Both','3524754614',NULL,'Sample Data','Josefa','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Adams',NULL,1,'2010-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(191,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Billy','Billy ÅÄ…chowski',NULL,NULL,NULL,'5',NULL,'Both','2651887338',NULL,'Sample Data','Billy','','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy ÅÄ…chowski',NULL,2,'2018-08-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(192,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Burlingame Software Solutions','Burlingame Software Solutions',NULL,NULL,NULL,NULL,NULL,'Both','429440746',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Burlingame Software Solutions',NULL,NULL,NULL,0,NULL,NULL,172,'Burlingame Software Solutions',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Carlos','Carlos Samson II',NULL,NULL,NULL,NULL,NULL,'Both','3685526914',NULL,'Sample Data','Carlos','O','Samson',NULL,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Samson II',NULL,NULL,'1989-04-15',0,NULL,NULL,NULL,'New York Health Systems',NULL,NULL,63,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(194,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Kandace','Kandace Roberts',NULL,NULL,NULL,'5',NULL,'Both','3760408869',NULL,'Sample Data','Kandace','Y','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,'Martin Luther King Peace Initiative',NULL,NULL,127,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(195,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell, Landon','Dr. Landon Bachman-Blackwell',NULL,NULL,NULL,'5',NULL,'Both','1427604385',NULL,'Sample Data','Landon','G','Bachman-Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Bachman-Blackwell',NULL,2,'1984-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'dimitrove7@testmail.co.pl','dimitrove7@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3139713335',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear dimitrove7@testmail.co.pl',1,NULL,'Dear dimitrove7@testmail.co.pl',1,NULL,'dimitrove7@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(197,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Russell','Dr. Russell Robertson',NULL,NULL,NULL,'5',NULL,'Both','3573168465',NULL,'Sample Data','Russell','L','Robertson',4,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Robertson',NULL,2,'1961-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Errol','Mr. Errol Smith',NULL,NULL,NULL,NULL,NULL,'Both','2269355028',NULL,'Sample Data','Errol','','Smith',3,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol Smith',NULL,2,'1938-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(199,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Winford','Winford Cooper Sr.',NULL,NULL,NULL,'1',NULL,'Both','1891762669',NULL,'Sample Data','Winford','','Cooper',NULL,2,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Cooper Sr.',NULL,2,'2010-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(200,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jameson, Brent','Brent Jameson',NULL,NULL,NULL,'1',NULL,'Both','1398082986',NULL,'Sample Data','Brent','B','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Jameson',NULL,NULL,'1992-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(201,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Kathlyn','Kathlyn Deforest',NULL,NULL,NULL,'1',NULL,'Both','333595076',NULL,'Sample Data','Kathlyn','I','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Deforest',NULL,1,'1974-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'); +INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,'Default Organization',NULL,NULL,NULL,0,NULL,'2020-07-24 05:33:57'),(2,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen, Iris','Iris Olsen',NULL,NULL,NULL,'5',NULL,'Both','313880548',NULL,'Sample Data','Iris','L','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Olsen',NULL,1,'1959-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(3,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Roland','Dr. Roland Terrell Jr.',NULL,NULL,NULL,NULL,NULL,'Both','731518019',NULL,'Sample Data','Roland','I','Terrell',4,1,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Terrell Jr.',NULL,2,'1936-05-11',1,'2019-07-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(4,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest-Cooper, Teddy','Teddy Deforest-Cooper',NULL,NULL,NULL,'4',NULL,'Both','641137824',NULL,'Sample Data','Teddy','','Deforest-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Deforest-Cooper',NULL,NULL,'1984-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(5,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'wilson.troy87@example.net','wilson.troy87@example.net',NULL,NULL,NULL,'2',NULL,'Both','2903429136',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear wilson.troy87@example.net',1,NULL,'Dear wilson.troy87@example.net',1,NULL,'wilson.troy87@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(6,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Beula','Mrs. Beula Bachman',NULL,NULL,NULL,NULL,NULL,'Both','1024437619',NULL,'Sample Data','Beula','P','Bachman',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Bachman',NULL,1,'1996-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Erik','Erik Patel Jr.',NULL,NULL,NULL,'1',NULL,'Both','1879150423',NULL,'Sample Data','Erik','','Patel',NULL,1,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Patel Jr.',NULL,2,'1972-03-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(8,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Ashley','Ashley Reynolds II',NULL,NULL,NULL,'3',NULL,'Both','3873693132',NULL,'Sample Data','Ashley','','Reynolds',NULL,3,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Reynolds II',NULL,2,'1962-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(9,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Tanya','Tanya Müller',NULL,NULL,NULL,'2',NULL,'Both','1478253205',NULL,'Sample Data','Tanya','C','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(10,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Müller, Rolando','Rolando Müller II',NULL,NULL,NULL,NULL,NULL,'Both','2804310363',NULL,'Sample Data','Rolando','B','Müller',NULL,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Müller II',NULL,NULL,'1959-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(11,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Nielsen family','Nielsen family',NULL,NULL,NULL,NULL,NULL,'Both','766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(12,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'McReynolds, Damaris','Damaris McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2561970052',NULL,'Sample Data','Damaris','G','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris McReynolds',NULL,1,'1949-09-14',1,'2020-05-20',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'russellr2@airmail.co.nz','russellr2@airmail.co.nz',NULL,NULL,NULL,'1',NULL,'Both','3934547049',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear russellr2@airmail.co.nz',1,NULL,'Dear russellr2@airmail.co.nz',1,NULL,'russellr2@airmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(14,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Ballston Lake Technology Fund','Ballston Lake Technology Fund',NULL,NULL,NULL,'5',NULL,'Both','2168563222',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ballston Lake Technology Fund',NULL,NULL,NULL,0,NULL,NULL,26,'Ballston Lake Technology Fund',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(15,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Adams, Merrie','Mrs. Merrie Adams',NULL,NULL,NULL,'5',NULL,'Both','2760007401',NULL,'Sample Data','Merrie','','Adams',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Elbert','Elbert Yadav',NULL,NULL,NULL,'1',NULL,'Both','2557263059',NULL,'Sample Data','Elbert','S','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(17,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Bernadette','Bernadette Samson',NULL,NULL,NULL,'1',NULL,'Both','1089960007',NULL,'Sample Data','Bernadette','B','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Samson',NULL,1,'1978-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(18,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cruz, Russell','Russell Cruz Sr.',NULL,NULL,NULL,'3',NULL,'Both','3756174623',NULL,'Sample Data','Russell','','Cruz',NULL,2,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Cruz Sr.',NULL,NULL,'1989-05-15',0,NULL,NULL,NULL,'Global Empowerment Alliance',NULL,NULL,144,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(19,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell-Dimitrov family','Terrell-Dimitrov family',NULL,NULL,NULL,'2',NULL,'Both','4038472664',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell-Dimitrov family',5,NULL,'Dear Terrell-Dimitrov family',2,NULL,'Terrell-Dimitrov family',NULL,NULL,NULL,0,NULL,'Terrell-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'iveyr@infomail.co.uk','iveyr@infomail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','2912254191',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear iveyr@infomail.co.uk',1,NULL,'Dear iveyr@infomail.co.uk',1,NULL,'iveyr@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,'Green Peace Initiative',NULL,NULL,46,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(21,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds family','Reynolds family',NULL,NULL,NULL,'4',NULL,'Both','4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(22,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Samuels family','Samuels family',NULL,NULL,NULL,NULL,NULL,'Both','350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(23,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wattson, Rosario','Dr. Rosario Wattson',NULL,NULL,NULL,NULL,NULL,'Both','661817002',NULL,'Sample Data','Rosario','P','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Wattson',NULL,2,'1943-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(24,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terry, Jacob','Jacob Terry Jr.',NULL,NULL,NULL,'2',NULL,'Both','1878863134',NULL,'Sample Data','Jacob','I','Terry',NULL,1,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Terry Jr.',NULL,2,'1939-02-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Irvin','Irvin Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1295806812',NULL,'Sample Data','Irvin','J','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Cooper',NULL,2,'1989-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'et.jameson52@sample.co.in','et.jameson52@sample.co.in',NULL,NULL,NULL,NULL,NULL,'Both','459222156',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear et.jameson52@sample.co.in',1,NULL,'Dear et.jameson52@sample.co.in',1,NULL,'et.jameson52@sample.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,'Ballston Lake Technology Fund',NULL,NULL,14,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(27,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice family','Prentice family',NULL,NULL,NULL,'1',NULL,'Both','3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Angelika','Angelika Jameson',NULL,NULL,NULL,NULL,NULL,'Both','4294957055',NULL,'Sample Data','Angelika','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Jameson',NULL,1,'2002-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(29,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Miguel','Dr. Miguel Dimitrov',NULL,NULL,NULL,'4',NULL,'Both','1550560736',NULL,'Sample Data','Miguel','O','Dimitrov',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Dimitrov',NULL,2,NULL,0,NULL,NULL,NULL,'Collins Peace Fund',NULL,NULL,62,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(30,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'McReynolds, Claudio','Claudio McReynolds II',NULL,NULL,NULL,NULL,NULL,'Both','4155247760',NULL,'Sample Data','Claudio','','McReynolds',NULL,3,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio McReynolds II',NULL,2,'1983-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(31,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Andrew','Dr. Andrew Smith Sr.',NULL,NULL,NULL,'1',NULL,'Both','2297505615',NULL,'Sample Data','Andrew','Q','Smith',4,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Smith Sr.',NULL,2,'1961-01-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(32,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds-Parker family','McReynolds-Parker family',NULL,NULL,NULL,'2',NULL,'Both','3292490842',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds-Parker family',5,NULL,'Dear McReynolds-Parker family',2,NULL,'McReynolds-Parker family',NULL,NULL,NULL,0,NULL,'McReynolds-Parker family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(33,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Jina','Mrs. Jina Adams',NULL,NULL,NULL,NULL,NULL,'Both','3136326826',NULL,'Sample Data','Jina','','Adams',1,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Mrs. Jina Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(34,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'McReynolds, Carlos','Mr. Carlos McReynolds III',NULL,NULL,NULL,'1',NULL,'Both','1986804051',NULL,'Sample Data','Carlos','N','McReynolds',3,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos McReynolds III',NULL,NULL,'1956-07-21',0,NULL,NULL,NULL,'Aptos Sustainability Center',NULL,NULL,137,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(35,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Jones family','Jones family',NULL,NULL,NULL,NULL,NULL,'Both','1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(36,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'meijameson@infomail.org','meijameson@infomail.org',NULL,NULL,NULL,NULL,NULL,'Both','1125318142',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear meijameson@infomail.org',1,NULL,'Dear meijameson@infomail.org',1,NULL,'meijameson@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,'Urban Action School',NULL,NULL,37,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(37,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Action School','Urban Action School',NULL,NULL,NULL,'5',NULL,'Both','3196441086',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Action School',NULL,NULL,NULL,0,NULL,NULL,36,'Urban Action School',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(38,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Parker-Grant family','Parker-Grant family',NULL,NULL,NULL,NULL,NULL,'Both','1787926850',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Parker-Grant family',5,NULL,'Dear Parker-Grant family',2,NULL,'Parker-Grant family',NULL,NULL,NULL,0,NULL,'Parker-Grant family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Merrie','Mrs. Merrie Blackwell',NULL,NULL,NULL,'1',NULL,'Both','2696737168',NULL,'Sample Data','Merrie','','Blackwell',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Blackwell',NULL,1,'1993-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(40,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'parker-grant.barry@spamalot.biz','parker-grant.barry@spamalot.biz',NULL,NULL,NULL,NULL,NULL,'Both','2161362069',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear parker-grant.barry@spamalot.biz',1,NULL,'Dear parker-grant.barry@spamalot.biz',1,NULL,'parker-grant.barry@spamalot.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'barkley.brittney@testmail.info','barkley.brittney@testmail.info',NULL,NULL,NULL,NULL,NULL,'Both','1727360930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear barkley.brittney@testmail.info',1,NULL,'Dear barkley.brittney@testmail.info',1,NULL,'barkley.brittney@testmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(42,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Clint','Dr. Clint Jameson',NULL,NULL,NULL,NULL,NULL,'Both','3622436306',NULL,'Sample Data','Clint','F','Jameson',4,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Dr. Clint Jameson',NULL,2,'1964-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(43,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Beula','Mrs. Beula Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','2930391993',NULL,'Sample Data','Beula','','Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(44,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Errol','Dr. Errol Cooper',NULL,NULL,NULL,'1',NULL,'Both','932311595',NULL,'Sample Data','Errol','F','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Cooper',NULL,NULL,'1976-11-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Teresa','Teresa Wilson',NULL,NULL,NULL,'5',NULL,'Both','4075437794',NULL,'Sample Data','Teresa','B','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(46,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Green Peace Initiative','Green Peace Initiative',NULL,NULL,NULL,'2',NULL,'Both','719241772',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Green Peace Initiative',NULL,NULL,NULL,0,NULL,NULL,20,'Green Peace Initiative',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(47,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Irvin','Irvin Nielsen II',NULL,NULL,NULL,'4',NULL,'Both','587649212',NULL,'Sample Data','Irvin','','Nielsen',NULL,3,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Nielsen II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(48,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Betty','Ms. Betty Parker',NULL,NULL,NULL,NULL,NULL,'Both','3536451591',NULL,'Sample Data','Betty','','Parker',2,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Ms. Betty Parker',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(49,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Felisha','Mrs. Felisha Jones',NULL,NULL,NULL,NULL,NULL,'Both','2947770839',NULL,'Sample Data','Felisha','','Jones',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Jones',NULL,NULL,'1996-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(50,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'College Health Association','College Health Association',NULL,NULL,NULL,'2',NULL,'Both','545736158',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Health Association',NULL,NULL,NULL,0,NULL,NULL,89,'College Health Association',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(51,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Patel, Scarlet','Dr. Scarlet Patel',NULL,NULL,NULL,'3',NULL,'Both','2187618008',NULL,'Sample Data','Scarlet','','Patel',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Patel',NULL,NULL,'1994-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Brigette','Ms. Brigette Smith',NULL,NULL,NULL,NULL,NULL,'Both','3717206438',NULL,'Sample Data','Brigette','N','Smith',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Smith',NULL,1,'1971-01-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(53,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Tanya','Dr. Tanya Wattson',NULL,NULL,NULL,'1',NULL,'Both','3050543156',NULL,'Sample Data','Tanya','','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Wattson',NULL,NULL,'1998-02-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(54,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell-Dimitrov, Carylon','Dr. Carylon Blackwell-Dimitrov',NULL,NULL,NULL,'1',NULL,'Both','3691303768',NULL,'Sample Data','Carylon','O','Blackwell-Dimitrov',4,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Dr. Carylon Blackwell-Dimitrov',NULL,1,'1981-08-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(55,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Lee, Clint','Clint Lee III',NULL,NULL,NULL,NULL,NULL,'Both','1676794419',NULL,'Sample Data','Clint','','Lee',NULL,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Lee III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(56,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Kentucky Software Initiative','Kentucky Software Initiative',NULL,NULL,NULL,'3',NULL,'Both','276138517',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kentucky Software Initiative',NULL,NULL,NULL,0,NULL,NULL,189,'Kentucky Software Initiative',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Rolando','Rolando Nielsen II',NULL,NULL,NULL,'2',NULL,'Both','1720954446',NULL,'Sample Data','Rolando','O','Nielsen',NULL,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Nielsen II',NULL,NULL,'1954-02-20',0,NULL,NULL,NULL,'Moxahala Development Alliance',NULL,NULL,157,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(58,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Müller, Rebekah','Ms. Rebekah Müller',NULL,NULL,NULL,'2',NULL,'Both','3543648262',NULL,'Sample Data','Rebekah','L','Müller',2,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Ms. Rebekah Müller',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(59,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'McReynolds-Parker, Winford','Mr. Winford McReynolds-Parker Jr.',NULL,NULL,NULL,NULL,NULL,'Both','2391669230',NULL,'Sample Data','Winford','','McReynolds-Parker',3,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford McReynolds-Parker Jr.',NULL,2,'1985-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Maxwell','Maxwell Wilson III',NULL,NULL,NULL,'3',NULL,'Both','2894206629',NULL,'Sample Data','Maxwell','','Wilson',NULL,4,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Wilson III',NULL,2,'1997-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(61,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samuels, Mei','Mei Samuels',NULL,NULL,NULL,'5',NULL,'Both','2521418918',NULL,'Sample Data','Mei','X','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Samuels',NULL,NULL,'2010-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(62,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Collins Peace Fund','Collins Peace Fund',NULL,NULL,NULL,NULL,NULL,'Both','3588916649',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Collins Peace Fund',NULL,NULL,NULL,0,NULL,NULL,29,'Collins Peace Fund',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(63,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'estajones@spamalot.co.uk','estajones@spamalot.co.uk',NULL,NULL,NULL,'4',NULL,'Both','377997108',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear estajones@spamalot.co.uk',1,NULL,'Dear estajones@spamalot.co.uk',1,NULL,'estajones@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(64,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Patel, Kathleen','Kathleen Patel',NULL,NULL,NULL,NULL,NULL,'Both','3805387262',NULL,'Sample Data','Kathleen','Q','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Patel',NULL,NULL,'1990-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(65,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker, Jed','Jed Parker',NULL,NULL,NULL,'4',NULL,'Both','1794622526',NULL,'Sample Data','Jed','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Parker',NULL,2,'1964-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(66,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper, Magan','Dr. Magan Cooper',NULL,NULL,NULL,NULL,NULL,'Both','791506082',NULL,'Sample Data','Magan','','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Cooper',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(67,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ÅÄ…chowski, Juliann','Dr. Juliann ÅÄ…chowski',NULL,NULL,NULL,'1',NULL,'Both','3477087731',NULL,'Sample Data','Juliann','','ÅÄ…chowski',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann ÅÄ…chowski',NULL,1,'1979-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(68,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Delana','Delana Samson',NULL,NULL,NULL,'3',NULL,'Both','1637206028',NULL,'Sample Data','Delana','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Samson',NULL,NULL,'1971-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(69,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González, Allen','Allen González',NULL,NULL,NULL,'4',NULL,'Both','4052635631',NULL,'Sample Data','Allen','R','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen González',NULL,NULL,'2002-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'lsamson18@airmail.org','lsamson18@airmail.org',NULL,NULL,NULL,'2',NULL,'Both','320447877',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear lsamson18@airmail.org',1,NULL,'Dear lsamson18@airmail.org',1,NULL,'lsamson18@airmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(71,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Megan','Mrs. Megan Dimitrov',NULL,NULL,NULL,'3',NULL,'Both','604448148',NULL,'Sample Data','Megan','B','Dimitrov',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Dimitrov',NULL,NULL,'1985-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(72,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice-Parker family','Prentice-Parker family',NULL,NULL,NULL,'2',NULL,'Both','569884084',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice-Parker family',5,NULL,'Dear Prentice-Parker family',2,NULL,'Prentice-Parker family',NULL,NULL,NULL,0,NULL,'Prentice-Parker family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(73,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Van Ness Technology Services','Van Ness Technology Services',NULL,NULL,NULL,NULL,NULL,'Both','720387242',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Technology Services',NULL,NULL,NULL,0,NULL,NULL,75,'Van Ness Technology Services',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(74,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Heidi','Heidi Nielsen',NULL,NULL,NULL,'1',NULL,'Both','4011366793',NULL,'Sample Data','Heidi','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Nielsen',NULL,NULL,'1997-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(75,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terrell-Dimitrov, Lashawnda','Lashawnda Terrell-Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3509495725',NULL,'Sample Data','Lashawnda','E','Terrell-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Terrell-Dimitrov',NULL,1,'1988-05-30',0,NULL,NULL,NULL,'Van Ness Technology Services',NULL,NULL,73,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(76,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Shad','Shad Olsen',NULL,NULL,NULL,'1',NULL,'Both','2007691638',NULL,'Sample Data','Shad','H','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(77,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jameson, Elbert','Elbert Jameson III',NULL,NULL,NULL,NULL,NULL,'Both','3057069270',NULL,'Sample Data','Elbert','','Jameson',NULL,4,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jameson III',NULL,2,'1976-09-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'prentice-parker.j.ashley@mymail.co.in','prentice-parker.j.ashley@mymail.co.in',NULL,NULL,NULL,'4',NULL,'Both','730991373',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear prentice-parker.j.ashley@mymail.co.in',1,NULL,'Dear prentice-parker.j.ashley@mymail.co.in',1,NULL,'prentice-parker.j.ashley@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(79,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Ogdensburg Poetry Partners','Ogdensburg Poetry Partners',NULL,NULL,NULL,'4',NULL,'Both','3260380550',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ogdensburg Poetry Partners',NULL,NULL,NULL,0,NULL,NULL,NULL,'Ogdensburg Poetry Partners',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(80,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Betty','Mrs. Betty Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','1042239873',NULL,'Sample Data','Betty','Z','Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Maria','Maria Ivanov',NULL,NULL,NULL,'4',NULL,'Both','3158128082',NULL,'Sample Data','Maria','L','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Ivanov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(82,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Wagner, Truman','Truman Wagner',NULL,NULL,NULL,NULL,NULL,'Both','1216392752',NULL,'Sample Data','Truman','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Wagner',NULL,2,'1989-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(83,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Norris','Norris Cooper Jr.',NULL,NULL,NULL,'2',NULL,'Both','750501935',NULL,'Sample Data','Norris','U','Cooper',NULL,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Cooper Jr.',NULL,2,'2005-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bachmanl95@mymail.net','bachmanl95@mymail.net',NULL,NULL,NULL,NULL,NULL,'Both','2981810594',NULL,'Sample Data',NULL,NULL,NULL,3,1,NULL,NULL,1,NULL,'Dear bachmanl95@mymail.net',1,NULL,'Dear bachmanl95@mymail.net',1,NULL,'bachmanl95@mymail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker-Grant, Felisha','Felisha Parker-Grant',NULL,NULL,NULL,NULL,NULL,'Both','2163378685',NULL,'Sample Data','Felisha','U','Parker-Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Parker-Grant',NULL,1,'2007-01-09',0,NULL,NULL,NULL,'Main Health Collective',NULL,NULL,117,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(86,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Beech Development Trust','Beech Development Trust',NULL,NULL,NULL,'3',NULL,'Both','1453966991',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Beech Development Trust',NULL,NULL,NULL,0,NULL,NULL,197,'Beech Development Trust',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(87,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson, Elina','Dr. Elina Wattson',NULL,NULL,NULL,NULL,NULL,'Both','452291784',NULL,'Sample Data','Elina','','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(88,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Elizabeth','Elizabeth Samson',NULL,NULL,NULL,'5',NULL,'Both','2428742753',NULL,'Sample Data','Elizabeth','K','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Samson',NULL,NULL,'1981-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(89,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell-Dimitrov, Miguel','Miguel Terrell-Dimitrov II',NULL,NULL,NULL,'1',NULL,'Both','4265323067',NULL,'Sample Data','Miguel','','Terrell-Dimitrov',NULL,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Terrell-Dimitrov II',NULL,2,'2011-03-11',0,NULL,NULL,NULL,'College Health Association',NULL,NULL,50,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(90,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Rebecca Culture Fellowship','Rebecca Culture Fellowship',NULL,NULL,NULL,'5',NULL,'Both','1680760940',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rebecca Culture Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,'Rebecca Culture Fellowship',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(91,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Green Poetry Partnership','Green Poetry Partnership',NULL,NULL,NULL,NULL,NULL,'Both','63354461',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Green Poetry Partnership',NULL,NULL,NULL,0,NULL,NULL,120,'Green Poetry Partnership',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(92,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Allen','Dr. Allen Müller',NULL,NULL,NULL,NULL,NULL,'Both','2000293400',NULL,'Sample Data','Allen','T','Müller',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Müller',NULL,2,'1958-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Daren','Daren Cruz III',NULL,NULL,NULL,NULL,NULL,'Both','2509817815',NULL,'Sample Data','Daren','I','Cruz',NULL,4,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Cruz III',NULL,2,'2003-04-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(94,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'angelikaw@testmail.co.uk','angelikaw@testmail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','3179233862',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear angelikaw@testmail.co.uk',1,NULL,'Dear angelikaw@testmail.co.uk',1,NULL,'angelikaw@testmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(95,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'jones.kathlyn3@mymail.co.uk','jones.kathlyn3@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','1082573825',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jones.kathlyn3@mymail.co.uk',1,NULL,'Dear jones.kathlyn3@mymail.co.uk',1,NULL,'jones.kathlyn3@mymail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(96,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Elbert','Elbert Terry',NULL,NULL,NULL,NULL,NULL,'Both','2300910688',NULL,'Sample Data','Elbert','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Terry',NULL,2,'2007-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(97,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Patel, Allen','Allen Patel Sr.',NULL,NULL,NULL,'1',NULL,'Both','1350110979',NULL,'Sample Data','Allen','W','Patel',NULL,2,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Patel Sr.',NULL,NULL,'1988-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(98,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'González family','González family',NULL,NULL,NULL,'2',NULL,'Both','3263723758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear González family',5,NULL,'Dear González family',2,NULL,'González family',NULL,NULL,NULL,0,NULL,'González family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(99,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Terry, Esta','Esta Terry',NULL,NULL,NULL,'4',NULL,'Both','3888791883',NULL,'Sample Data','Esta','I','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(100,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Lawerence','Lawerence Barkley III',NULL,NULL,NULL,'2',NULL,'Both','3430625301',NULL,'Sample Data','Lawerence','','Barkley',NULL,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Barkley III',NULL,2,'2009-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(101,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,'1',NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(102,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'rbachman-mller15@airmail.co.in','rbachman-mller15@airmail.co.in',NULL,NULL,NULL,'2',NULL,'Both','2698008935',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear rbachman-mller15@airmail.co.in',1,NULL,'Dear rbachman-mller15@airmail.co.in',1,NULL,'rbachman-mller15@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Winford','Mr. Winford Jones',NULL,NULL,NULL,NULL,NULL,'Both','3992988064',NULL,'Sample Data','Winford','Y','Jones',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(104,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Scott','Dr. Scott Blackwell III',NULL,NULL,NULL,NULL,NULL,'Both','1650464224',NULL,'Sample Data','Scott','','Blackwell',4,4,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Blackwell III',NULL,NULL,'1973-04-27',0,NULL,NULL,NULL,'Dallas Peace Partnership',NULL,NULL,148,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(105,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Urban Culture Services','Urban Culture Services',NULL,NULL,NULL,NULL,NULL,'Both','1795621606',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Culture Services',NULL,NULL,NULL,0,NULL,NULL,151,'Urban Culture Services',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(106,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,NULL,NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(107,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Truman','Truman Samson II',NULL,NULL,NULL,'3',NULL,'Both','2209308970',NULL,'Sample Data','Truman','','Samson',NULL,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Samson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(108,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Dimitrov, Clint','Mr. Clint Dimitrov III',NULL,NULL,NULL,NULL,NULL,'Both','2522553536',NULL,'Sample Data','Clint','','Dimitrov',3,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Dimitrov III',NULL,NULL,'1965-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(109,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González, Carylon','Ms. Carylon González',NULL,NULL,NULL,'2',NULL,'Both','3685317689',NULL,'Sample Data','Carylon','Q','González',2,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Ms. Carylon González',NULL,1,'1988-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds-Parker, Norris','Norris McReynolds-Parker',NULL,NULL,NULL,'2',NULL,'Both','3076044215',NULL,'Sample Data','Norris','','McReynolds-Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris McReynolds-Parker',NULL,2,'2006-09-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Elizabeth','Elizabeth Robertson',NULL,NULL,NULL,NULL,NULL,'Both','3762031116',NULL,'Sample Data','Elizabeth','','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Robertson',NULL,NULL,'1988-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(112,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuels.i.nicole4@airmail.info','samuels.i.nicole4@airmail.info',NULL,NULL,NULL,'5',NULL,'Both','120602388',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samuels.i.nicole4@airmail.info',1,NULL,'Dear samuels.i.nicole4@airmail.info',1,NULL,'samuels.i.nicole4@airmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(113,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Teresa','Teresa Parker',NULL,NULL,NULL,'4',NULL,'Both','1643019663',NULL,'Sample Data','Teresa','W','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Parker',NULL,1,'1957-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(114,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Lincoln','Lincoln Samson',NULL,NULL,NULL,NULL,NULL,'Both','1364687804',NULL,'Sample Data','Lincoln','G','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Samson',NULL,2,'1985-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(115,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,'4',NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(116,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner family','Wagner family',NULL,NULL,NULL,NULL,NULL,'Both','1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(117,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Main Health Collective','Main Health Collective',NULL,NULL,NULL,'1',NULL,'Both','842368736',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Health Collective',NULL,NULL,NULL,0,NULL,NULL,85,'Main Health Collective',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(118,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Maria','Mr. Maria Prentice Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3954129997',NULL,'Sample Data','Maria','P','Prentice',3,2,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Prentice Sr.',NULL,NULL,'1935-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(119,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Santina','Santina Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2039698555',NULL,'Sample Data','Santina','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Terrell',NULL,1,'1967-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(120,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Megan','Megan Patel',NULL,NULL,NULL,NULL,NULL,'Both','2159576941',NULL,'Sample Data','Megan','L','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Patel',NULL,1,'2009-05-20',0,NULL,NULL,NULL,'Green Poetry Partnership',NULL,NULL,91,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(121,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell, Brent','Mr. Brent Blackwell',NULL,NULL,NULL,'2',NULL,'Both','1795154981',NULL,'Sample Data','Brent','V','Blackwell',3,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(122,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Rebekah','Rebekah Olsen',NULL,NULL,NULL,'3',NULL,'Both','174179615',NULL,'Sample Data','Rebekah','U','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Olsen',NULL,1,'1969-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(123,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Lee, Jed','Dr. Jed Lee',NULL,NULL,NULL,'2',NULL,'Both','301771502',NULL,'Sample Data','Jed','','Lee',4,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Lee',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(124,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'allenlee@airmail.biz','allenlee@airmail.biz',NULL,NULL,NULL,NULL,NULL,'Both','4294528252',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear allenlee@airmail.biz',1,NULL,'Dear allenlee@airmail.biz',1,NULL,'allenlee@airmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Ashlie','Ms. Ashlie Nielsen',NULL,NULL,NULL,'3',NULL,'Both','89218160',NULL,'Sample Data','Ashlie','','Nielsen',2,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ms. Ashlie Nielsen',NULL,1,'1975-06-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(126,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'shadmller@testing.co.nz','shadmller@testing.co.nz',NULL,NULL,NULL,'2',NULL,'Both','1507946841',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear shadmller@testing.co.nz',1,NULL,'Dear shadmller@testing.co.nz',1,NULL,'shadmller@testing.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(127,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jacobs, Scott','Dr. Scott Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','2229288735',NULL,'Sample Data','Scott','F','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Jacobs',NULL,2,'1972-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(128,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Müller family','Müller family',NULL,NULL,NULL,'2',NULL,'Both','1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(129,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Valene','Dr. Valene Prentice',NULL,NULL,NULL,NULL,NULL,'Both','2953436948',NULL,'Sample Data','Valene','','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene Prentice',NULL,1,'1977-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(130,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'justinamller@mymail.co.in','justinamller@mymail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','1563618154',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear justinamller@mymail.co.in',1,NULL,'Dear justinamller@mymail.co.in',1,NULL,'justinamller@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(131,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'dimitrov.bernadette@fakemail.org','dimitrov.bernadette@fakemail.org',NULL,NULL,NULL,'1',NULL,'Both','3271603303',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear dimitrov.bernadette@fakemail.org',1,NULL,'Dear dimitrov.bernadette@fakemail.org',1,NULL,'dimitrov.bernadette@fakemail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(132,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker, Shad','Shad Parker',NULL,NULL,NULL,'2',NULL,'Both','23650208',NULL,'Sample Data','Shad','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Parker',NULL,2,'2004-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Jackson','Jackson Jameson',NULL,NULL,NULL,'4',NULL,'Both','680754950',NULL,'Sample Data','Jackson','F','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Jameson',NULL,2,'2008-11-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(134,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Barkley, Kenny','Dr. Kenny Barkley',NULL,NULL,NULL,'4',NULL,'Both','3409558741',NULL,'Sample Data','Kenny','X','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Barkley',NULL,NULL,'1991-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(135,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Claudio','Mr. Claudio Reynolds Jr.',NULL,NULL,NULL,'5',NULL,'Both','2468699495',NULL,'Sample Data','Claudio','','Reynolds',3,1,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Mr. Claudio Reynolds Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(136,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Barkley family','Barkley family',NULL,NULL,NULL,'1',NULL,'Both','2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(137,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Aptos Sustainability Center','Aptos Sustainability Center',NULL,NULL,NULL,'4',NULL,'Both','1081050098',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Aptos Sustainability Center',NULL,NULL,NULL,0,NULL,NULL,34,'Aptos Sustainability Center',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(138,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Heidi','Mrs. Heidi Parker',NULL,NULL,NULL,'3',NULL,'Both','3690123952',NULL,'Sample Data','Heidi','','Parker',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Parker',NULL,1,'1978-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Kathleen','Kathleen Parker',NULL,NULL,NULL,NULL,NULL,'Both','295233156',NULL,'Sample Data','Kathleen','Q','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Parker',NULL,1,'1972-04-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Ashlie','Ashlie Müller',NULL,NULL,NULL,'2',NULL,'Both','3515081294',NULL,'Sample Data','Ashlie','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Brent','Brent Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3250906077',NULL,'Sample Data','Brent','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Samuels',NULL,2,'1959-05-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(142,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Global Technology Collective','Global Technology Collective',NULL,NULL,NULL,NULL,NULL,'Both','102297836',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Technology Collective',NULL,NULL,NULL,0,NULL,NULL,170,'Global Technology Collective',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Bernadette','Bernadette Wattson',NULL,NULL,NULL,'1',NULL,'Both','1191372822',NULL,'Sample Data','Bernadette','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Wattson',NULL,1,'1973-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(144,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Global Empowerment Alliance','Global Empowerment Alliance',NULL,NULL,NULL,'3',NULL,'Both','180120760',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Empowerment Alliance',NULL,NULL,NULL,0,NULL,NULL,18,'Global Empowerment Alliance',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Clint','Clint Nielsen',NULL,NULL,NULL,'2',NULL,'Both','2083087169',NULL,'Sample Data','Clint','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Nielsen',NULL,NULL,'1936-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(146,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs, Jay','Jay Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','281953359',NULL,'Sample Data','Jay','F','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Jacobs',NULL,2,'1937-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Herminia','Dr. Herminia Prentice',NULL,NULL,NULL,NULL,NULL,'Both','4072784830',NULL,'Sample Data','Herminia','','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Prentice',NULL,1,'1973-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(148,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Dallas Peace Partnership','Dallas Peace Partnership',NULL,NULL,NULL,'3',NULL,'Both','762488419',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dallas Peace Partnership',NULL,NULL,NULL,0,NULL,NULL,104,'Dallas Peace Partnership',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(149,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Delana','Delana Grant',NULL,NULL,NULL,'3',NULL,'Both','2844860785',NULL,'Sample Data','Delana','','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Grant',NULL,1,'1981-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(150,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Müller family','Müller family',NULL,NULL,NULL,'3',NULL,'Both','1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Billy','Dr. Billy Prentice',NULL,NULL,NULL,'3',NULL,'Both','3571999002',NULL,'Sample Data','Billy','F','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Prentice',NULL,2,'1977-04-09',0,NULL,NULL,NULL,'Urban Culture Services',NULL,NULL,105,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(152,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'samuels.ray@fakemail.co.pl','samuels.ray@fakemail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','4175065650',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samuels.ray@fakemail.co.pl',1,NULL,'Dear samuels.ray@fakemail.co.pl',1,NULL,'samuels.ray@fakemail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(153,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Kacey','Kacey Blackwell',NULL,NULL,NULL,'5',NULL,'Both','3163269089',NULL,'Sample Data','Kacey','F','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(154,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Irvin','Irvin Patel Jr.',NULL,NULL,NULL,'5',NULL,'Both','1842023876',NULL,'Sample Data','Irvin','K','Patel',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Patel Jr.',NULL,2,'1976-10-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(155,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'rodrigod11@sample.org','rodrigod11@sample.org',NULL,NULL,NULL,'4',NULL,'Both','1416913895',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear rodrigod11@sample.org',1,NULL,'Dear rodrigod11@sample.org',1,NULL,'rodrigod11@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Damaris','Mrs. Damaris Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3144894953',NULL,'Sample Data','Damaris','H','Samuels',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(157,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Moxahala Development Alliance','Moxahala Development Alliance',NULL,NULL,NULL,NULL,NULL,'Both','1518555478',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Moxahala Development Alliance',NULL,NULL,NULL,0,NULL,NULL,57,'Moxahala Development Alliance',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(158,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest-Cooper, Lashawnda','Lashawnda Deforest-Cooper',NULL,NULL,NULL,'3',NULL,'Both','303860140',NULL,'Sample Data','Lashawnda','N','Deforest-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Cooper',NULL,1,'1996-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(159,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'mller.billy29@testmail.info','mller.billy29@testmail.info',NULL,NULL,NULL,NULL,NULL,'Both','131366858',NULL,'Sample Data',NULL,NULL,NULL,3,4,NULL,NULL,1,NULL,'Dear mller.billy29@testmail.info',1,NULL,'Dear mller.billy29@testmail.info',1,NULL,'mller.billy29@testmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(160,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Prentice, Scarlet','Scarlet Prentice',NULL,NULL,NULL,NULL,NULL,'Both','3056236127',NULL,'Sample Data','Scarlet','A','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Prentice',NULL,NULL,'1977-08-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(161,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen, Shauna','Shauna Jensen',NULL,NULL,NULL,NULL,NULL,'Both','108136044',NULL,'Sample Data','Shauna','X','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Jensen',NULL,1,'1949-03-08',1,'2019-11-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Bernadette','Bernadette Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','527011185',NULL,'Sample Data','Bernadette','X','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(163,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest-Cooper family','Deforest-Cooper family',NULL,NULL,NULL,'1',NULL,'Both','1424194023',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest-Cooper family',5,NULL,'Dear Deforest-Cooper family',2,NULL,'Deforest-Cooper family',NULL,NULL,NULL,0,NULL,'Deforest-Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(164,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samuels, Brittney','Brittney Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3183617598',NULL,'Sample Data','Brittney','A','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(165,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Wagner, Brigette','Brigette Wagner',NULL,NULL,NULL,'2',NULL,'Both','3285817434',NULL,'Sample Data','Brigette','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Wagner',NULL,NULL,'1950-02-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(166,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Zope, Jina','Jina Zope',NULL,NULL,NULL,NULL,NULL,'Both','2020833032',NULL,'Sample Data','Jina','K','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Zope',NULL,1,'2009-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Jay','Mr. Jay Smith',NULL,NULL,NULL,'2',NULL,'Both','2744125186',NULL,'Sample Data','Jay','G','Smith',3,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Mr. Jay Smith',NULL,2,NULL,1,'2020-03-27',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(168,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell family','Blackwell family',NULL,NULL,NULL,NULL,NULL,'Both','3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(169,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest, Tanya','Tanya Deforest',NULL,NULL,NULL,'2',NULL,'Both','3707213011',NULL,'Sample Data','Tanya','','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Deforest',NULL,1,'1981-05-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(170,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Bernadette','Bernadette Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2929366721',NULL,'Sample Data','Bernadette','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Barkley',NULL,1,NULL,0,NULL,NULL,NULL,'Global Technology Collective',NULL,NULL,142,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(171,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Toby','Mr. Toby González III',NULL,NULL,NULL,'4',NULL,'Both','3133453740',NULL,'Sample Data','Toby','','González',3,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby González III',NULL,2,'1972-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(172,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Betty','Betty Cooper',NULL,NULL,NULL,NULL,NULL,'Both','2283344606',NULL,'Sample Data','Betty','I','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Cooper',NULL,NULL,'1976-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bjameson@spamalot.co.nz','bjameson@spamalot.co.nz',NULL,NULL,NULL,'5',NULL,'Both','1343613532',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear bjameson@spamalot.co.nz',1,NULL,'Dear bjameson@spamalot.co.nz',1,NULL,'bjameson@spamalot.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(174,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Northpoint Development School','Northpoint Development School',NULL,NULL,NULL,'3',NULL,'Both','3168400042',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Northpoint Development School',NULL,NULL,NULL,0,NULL,NULL,185,'Northpoint Development School',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(175,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Kenny','Kenny Dimitrov Sr.',NULL,NULL,NULL,'3',NULL,'Both','2698867379',NULL,'Sample Data','Kenny','X','Dimitrov',NULL,2,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Dimitrov Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(176,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Dimitrov, Sherman','Mr. Sherman Dimitrov Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2018073117',NULL,'Sample Data','Sherman','','Dimitrov',3,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Dimitrov Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(177,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,NULL,NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(178,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Sierra Software Solutions','Sierra Software Solutions',NULL,NULL,NULL,NULL,NULL,'Both','4103954497',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Software Solutions',NULL,NULL,NULL,0,NULL,NULL,186,'Sierra Software Solutions',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(179,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Carylon','Carylon Samuels',NULL,NULL,NULL,'2',NULL,'Both','707612001',NULL,'Sample Data','Carylon','C','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Samuels',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest-Cooper, Eleonor','Dr. Eleonor Deforest-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','303402137',NULL,'Sample Data','Eleonor','E','Deforest-Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Dr. Eleonor Deforest-Cooper',NULL,NULL,'1970-01-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(181,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice-Parker, Maria','Maria Prentice-Parker',NULL,NULL,NULL,NULL,NULL,'Both','265905038',NULL,'Sample Data','Maria','G','Prentice-Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Prentice-Parker',NULL,2,'2008-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(182,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Juliann','Juliann Müller',NULL,NULL,NULL,NULL,NULL,'Both','307897793',NULL,'Sample Data','Juliann','S','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Müller',NULL,NULL,'1954-04-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(183,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Sharyn','Mrs. Sharyn McReynolds',NULL,NULL,NULL,'1',NULL,'Both','1394669244',NULL,'Sample Data','Sharyn','','McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn McReynolds',NULL,1,'1983-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(184,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Kiara','Kiara Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','1100955182',NULL,'Sample Data','Kiara','M','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Ivanov',NULL,1,'1955-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'mller.scott40@airmail.info','mller.scott40@airmail.info',NULL,NULL,NULL,'4',NULL,'Both','91445264',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear mller.scott40@airmail.info',1,NULL,'Dear mller.scott40@airmail.info',1,NULL,'mller.scott40@airmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,'Northpoint Development School',NULL,NULL,174,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(186,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Jina','Jina Roberts',NULL,NULL,NULL,'5',NULL,'Both','3944144091',NULL,'Sample Data','Jina','P','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Roberts',NULL,1,'1986-12-20',0,NULL,NULL,NULL,'Sierra Software Solutions',NULL,NULL,178,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(187,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Troy','Troy Prentice',NULL,NULL,NULL,'1',NULL,'Both','2143976390',NULL,'Sample Data','Troy','W','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Felisha','Mrs. Felisha Wagner',NULL,NULL,NULL,NULL,NULL,'Both','2346582969',NULL,'Sample Data','Felisha','T','Wagner',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Wagner',NULL,1,'1986-11-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(189,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Margaret','Ms. Margaret Jameson',NULL,NULL,NULL,NULL,NULL,'Both','1719938872',NULL,'Sample Data','Margaret','S','Jameson',2,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Ms. Margaret Jameson',NULL,1,'1970-11-21',0,NULL,NULL,NULL,'Kentucky Software Initiative',NULL,NULL,56,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Carylon','Carylon Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3982709827',NULL,'Sample Data','Carylon','L','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(191,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Toby','Dr. Toby Prentice',NULL,NULL,NULL,'5',NULL,'Both','3734648232',NULL,'Sample Data','Toby','E','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(192,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'lbarkley69@sample.net','lbarkley69@sample.net',NULL,NULL,NULL,'3',NULL,'Both','2275713838',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear lbarkley69@sample.net',1,NULL,'Dear lbarkley69@sample.net',1,NULL,'lbarkley69@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'allanjameson35@infomail.net','allanjameson35@infomail.net',NULL,NULL,NULL,'1',NULL,'Both','2766671914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear allanjameson35@infomail.net',1,NULL,'Dear allanjameson35@infomail.net',1,NULL,'allanjameson35@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(194,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Landon','Landon Terrell',NULL,NULL,NULL,NULL,NULL,'Both','4168752118',NULL,'Sample Data','Landon','H','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Terrell',NULL,2,'1962-03-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(195,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Kenny','Kenny Jameson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3782185889',NULL,'Sample Data','Kenny','P','Jameson',NULL,1,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Jameson Jr.',NULL,NULL,'1990-03-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Kandace','Ms. Kandace Wagner',NULL,NULL,NULL,'2',NULL,'Both','34193694',NULL,'Sample Data','Kandace','Z','Wagner',2,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Ms. Kandace Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(197,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Elina','Ms. Elina Yadav',NULL,NULL,NULL,'2',NULL,'Both','3672729828',NULL,'Sample Data','Elina','','Yadav',2,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Ms. Elina Yadav',NULL,1,'1995-04-06',0,NULL,NULL,NULL,'Beech Development Trust',NULL,NULL,86,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'parker.rolando@lol.org','parker.rolando@lol.org',NULL,NULL,NULL,'1',NULL,'Both','4169452322',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear parker.rolando@lol.org',1,NULL,'Dear parker.rolando@lol.org',1,NULL,'parker.rolando@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(199,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Jed','Dr. Jed Wilson',NULL,NULL,NULL,'2',NULL,'Both','1260634010',NULL,'Sample Data','Jed','','Wilson',4,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Wilson',NULL,NULL,'1966-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(200,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell-González, Felisha','Felisha Blackwell-González',NULL,NULL,NULL,'1',NULL,'Both','1633535452',NULL,'Sample Data','Felisha','Y','Blackwell-González',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Blackwell-González',NULL,NULL,'1970-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(201,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker-Jones, Iris','Iris Parker-Jones',NULL,NULL,NULL,NULL,NULL,'Both','803629539',NULL,'Sample Data','Iris','','Parker-Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Parker-Jones',NULL,NULL,'1965-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -228,7 +228,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution` WRITE; /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */; -INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL,0),(2,4,1,NULL,1,'2010-03-21 00:00:00',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL,0),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL,0),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL,0),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL,0),(7,82,1,NULL,1,'2010-03-27 00:00:00',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(8,92,1,NULL,1,'2010-03-08 00:00:00',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(9,34,1,NULL,1,'2010-04-22 00:00:00',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(14,158,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(15,9,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(16,154,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(17,59,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(18,52,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(19,185,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(20,73,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(21,12,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(22,41,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(23,18,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(24,126,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(25,4,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(26,92,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(27,62,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(28,117,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(29,164,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(30,174,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(31,173,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(32,109,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(33,10,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(34,190,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(35,110,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(36,81,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(37,112,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(38,15,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(39,134,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(40,32,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(41,107,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(42,147,2,NULL,1,'2020-06-10 14:45:52',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(43,98,2,NULL,1,'2020-06-10 14:45:52',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(45,1,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(46,3,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(47,4,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(48,7,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(49,11,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(50,12,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(51,18,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(52,20,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(53,23,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(54,27,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(55,30,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(56,33,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(57,51,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(58,52,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(59,57,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(60,59,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(61,61,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(62,68,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(63,70,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(64,74,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(65,75,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(66,76,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(67,83,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(68,110,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(69,113,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(70,118,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(71,119,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(72,121,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(73,124,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(74,134,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(75,139,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(76,141,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(77,142,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(78,146,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(79,151,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(80,152,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(81,154,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(82,159,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(83,161,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(84,162,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(85,164,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(86,171,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(87,173,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(88,177,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(89,180,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(90,183,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(91,188,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(92,197,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(93,198,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(94,199,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL,0),(2,4,1,NULL,1,'2010-03-21 00:00:00',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL,0),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL,0),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL,0),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL,0),(7,82,1,NULL,1,'2010-03-27 00:00:00',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(8,92,1,NULL,1,'2010-03-08 00:00:00',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(9,34,1,NULL,1,'2010-04-22 00:00:00',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(14,103,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(15,179,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(16,12,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(17,173,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(18,127,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(19,63,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(20,188,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(21,80,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(22,131,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(23,161,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(24,41,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(25,20,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(26,195,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(27,164,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(28,78,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(29,132,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(30,5,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(31,108,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(32,39,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(33,159,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(34,67,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(35,17,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(36,7,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(37,95,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(38,134,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(39,74,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(40,13,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(41,156,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(42,145,2,NULL,1,'2020-07-24 15:34:04',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(43,99,2,NULL,1,'2020-07-24 15:34:04',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(45,5,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(46,6,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(47,8,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(48,18,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(49,19,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(50,21,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(51,23,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(52,24,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(53,30,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(54,31,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(55,41,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(56,44,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(57,49,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(58,54,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(59,56,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(60,57,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(61,60,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(62,68,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(63,70,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(64,73,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(65,90,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(66,94,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(67,95,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(68,98,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(69,99,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(70,102,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(71,103,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(72,105,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(73,106,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(74,109,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(75,110,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(76,111,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(77,114,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(78,120,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(79,129,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(80,130,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(81,133,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(82,140,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(83,155,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(84,162,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(85,165,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(86,167,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(87,170,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(88,172,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(89,175,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(90,180,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(91,194,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(92,195,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(93,196,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(94,200,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -266,7 +266,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_soft` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */; -INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES (1,8,177,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,177,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); +INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES (1,8,57,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,57,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -399,7 +399,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_domain` WRITE; /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */; -INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,'5.28.4',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); +INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,'5.29.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -409,7 +409,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_email` WRITE; /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */; -INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(2,43,1,'samuelst9@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(3,43,1,'samuels.q.toby35@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(4,71,1,'daz.lashawnda@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(5,71,1,'daz.lashawnda@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(6,110,1,'jameson.errol57@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(7,91,1,'patel.claudio@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(8,91,1,'ca.patel@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(9,172,1,'blackwellm@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(10,172,1,'mx.blackwell95@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(11,37,1,'roberts.roland51@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(12,37,1,'rolandroberts8@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(13,175,1,'felishar2@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(14,15,1,'jinap@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(15,115,1,'krobertson12@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(16,147,1,'eriksamuels@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(17,147,1,'samuels.u.erik@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(18,198,1,'smithe22@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(19,198,1,'errols79@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(20,53,1,'megand91@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(21,53,1,'dazm@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(22,22,1,'wilson.felisha77@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(23,22,1,'wilson.felisha@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(24,18,1,'wattson.brzczysaw@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(25,18,1,'brzczysawwattson97@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(26,108,1,'cruz.w.maria@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(27,92,1,'roberts.r.nicole@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(28,92,1,'roberts.r.nicole50@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),(29,44,1,'barryparker@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(30,44,1,'parker.barry@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(31,121,1,'nlee@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(32,47,1,'carylonchowski@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(33,47,1,'carylonchowski80@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(34,138,1,'jameson.heidi@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(35,138,1,'jamesonh@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(36,85,1,'darena@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(37,85,1,'adamsd@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(38,66,1,'darenr@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(39,157,1,'allanzope81@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(40,157,1,'allanz28@spamalot.net',0,0,0,0,NULL,NULL,NULL,NULL),(41,119,1,'jinag@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(42,119,1,'jj.grant93@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(43,142,1,'scarletjones@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(44,142,1,'jones.scarlet@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(45,164,1,'scottjensen23@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(46,134,1,'cruzl2@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(47,41,1,'samuels.russell@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(48,120,1,'roberts.lou48@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(49,16,1,'barkley.v.rosario65@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(50,29,1,'bachman.esta61@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(51,29,1,'bachman.esta@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(52,103,1,'jmller@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(53,103,1,'mllerj@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(54,149,1,'robertsr@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(55,136,1,'robertson.ivey@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(56,24,1,'smith.brittney@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(57,24,1,'smith.d.brittney@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),(58,36,1,'brzczysawparker50@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(59,36,1,'brzczysawp31@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(60,7,1,'jacksonl@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(61,7,1,'lee.jackson@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(62,158,1,'ar.terry71@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(63,20,1,'allenroberts@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(64,20,1,'robertsa@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(65,93,1,'shadmcreynolds6@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(66,93,1,'mcreynolds.shad8@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(67,69,1,'chowski.ashlie52@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(68,69,1,'ashlie82@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(69,21,1,'wilson.brigette49@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(70,137,1,'cruz.sanford48@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(71,152,1,'reynolds.shad@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(72,185,1,'daz.sonny@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(73,30,1,'brittneywilson@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(74,30,1,'brittneyw@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(75,62,1,'elbertmller39@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(76,9,1,'jacobjensen58@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(77,78,1,'prenticer36@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(78,78,1,'prentice.t.rolando88@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(79,117,1,'bzope56@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(80,117,1,'zope.bob93@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(81,196,1,'es.dimitrov@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(82,196,1,'dimitrove7@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(83,13,1,'cooperl@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(84,180,1,'daza@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(85,155,1,'kathleennielsen-daz79@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(86,165,1,'daz.toby@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(87,165,1,'tobydaz31@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),(88,52,1,'bp.daz12@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(89,52,1,'bp.daz@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(90,132,1,'ajensen70@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(91,132,1,'allenjensen65@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL),(92,109,1,'ashleyj@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(93,109,1,'jensen-wilsona@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL),(94,11,1,'smithr13@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(95,11,1,'ru.smith69@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(96,45,1,'smith.d.kandace@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(97,88,1,'jameson.q.teddy@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(98,200,1,'brentjameson@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(99,200,1,'brentjameson62@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(100,124,1,'irisjameson76@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(101,125,1,'adams.rosario@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(102,14,1,'ivanovs70@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(103,14,1,'ivanov.shad38@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),(104,163,1,'ivanov-dimitrovm@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(105,163,1,'migueli@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(106,189,1,'troya@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(107,104,1,'adams.roland@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(108,151,1,'adams.e.allan86@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(109,190,1,'josefaadams@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(110,77,1,'edaz@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(111,77,1,'edaz@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),(112,176,1,'dazk@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),(113,139,1,'daz.scarlet@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(114,139,1,'sc.daz2@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(115,150,1,'kh.samson16@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(116,174,1,'samson.winford89@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(117,174,1,'samson.winford11@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(118,73,1,'bu.samson@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(119,73,1,'samsonb@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(120,107,1,'dt.wagner@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(121,173,1,'wagner.lou25@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(122,173,1,'lwagner95@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(123,33,1,'jacobsi6@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(124,59,1,'wagner-jacobs.scarlet97@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(125,59,1,'swagner-jacobs@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),(126,5,1,'wagner-jacobsr9@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(127,64,1,'kp.deforest@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(128,64,1,'deforest.kenny95@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(129,87,1,'hh.roberts-deforest@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(130,201,1,'ki.deforest@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(131,126,1,'deforest.p.kandace89@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(132,126,1,'kandaced42@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(133,141,1,'smith-daz.l.eleonor@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(134,94,1,'daz.r.laree@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(135,153,1,'chowski.b.kathlyn@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(136,191,1,'chowski.billy@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(137,32,1,'chowski.justina@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(138,169,1,'reynoldsc@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(139,186,1,'reynolds.tanya14@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(140,133,1,'elizabethreynolds@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(141,133,1,'reynolds.elizabeth50@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(142,4,1,'errolreynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(143,4,1,'reynolds.errol@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(144,197,1,'rl.robertson@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(145,171,1,'rosarioterrell-robertson82@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(146,184,1,'lawerencer@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(147,130,1,'carlosr@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(148,170,1,'chowski.shad@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(149,170,1,'shadchowski@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(150,114,1,'bernadetteg@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(151,114,1,'gonzlez.bernadette25@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(152,160,1,'chowski-gonzlez.brittney@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(153,113,1,'dimitrov.b.brzczysaw@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(154,148,1,'dimitrov.d.lawerence@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(155,148,1,'dimitrov.d.lawerence@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(156,179,1,'scarletdimitrov53@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(157,72,1,'ou.blackwell@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(158,195,1,'bachman-blackwell.landon80@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(159,156,1,'ts.bachman-blackwell28@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(160,156,1,'bachman-blackwellt@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(161,74,3,'feedback@urbanpeacefund.org',1,0,0,0,NULL,NULL,NULL,NULL),(162,160,2,'brittneychowski-gonzlez@urbanpeacefund.org',0,0,0,0,NULL,NULL,NULL,NULL),(163,111,3,'service@sierrapeaceinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(164,154,2,'chowski-gonzlezo12@sierrapeaceinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(165,23,3,'service@creativeeducation.org',1,0,0,0,NULL,NULL,NULL,NULL),(166,121,2,'@creativeeducation.org',0,0,0,0,NULL,NULL,NULL,NULL),(167,65,3,'sales@indiahomahealthcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(168,84,2,'scooper13@indiahomahealthcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(169,82,3,'feedback@pineassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),(170,123,3,'service@mlkingeducation.org',1,0,0,0,NULL,NULL,NULL,NULL),(171,21,2,'brigettew34@mlkingeducation.org',0,0,0,0,NULL,NULL,NULL,NULL),(172,55,3,'service@mainarts.org',1,0,0,0,NULL,NULL,NULL,NULL),(173,144,3,'feedback@urbaninitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(174,142,2,'scarletjones@urbaninitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(175,63,3,'sales@nyhealthsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(176,193,2,'samson.o.carlos@nyhealthsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,178,3,'sales@wisconsinwellness.org',1,0,0,0,NULL,NULL,NULL,NULL),(178,18,2,'wattsonb@wisconsinwellness.org',0,0,0,0,NULL,NULL,NULL,NULL),(179,101,3,'contact@spactionservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,119,2,'grant.j.jina@spactionservices.org',0,0,0,0,NULL,NULL,NULL,NULL),(181,135,3,'contact@austinhealth.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,39,3,'info@farmingtonservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,19,2,'adams-wilsonr7@farmingtonservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,60,3,'info@paluxyenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL),(185,26,2,'ivanov.justina@paluxyenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,182,3,'contact@statespartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(187,106,2,'mcreynoldsv@statespartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,105,3,'feedback@unitedtechnology.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,29,2,'11@unitedtechnology.org',0,0,0,0,NULL,NULL,NULL,NULL),(190,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(191,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(192,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(2,24,1,'jacobt@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(3,124,1,'allenlee47@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(4,124,1,'allenlee@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(5,17,1,'bb.samson59@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(6,182,1,'mllerj@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(7,182,1,'js.mller@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(8,99,1,'terrye@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(9,81,1,'ivanov.maria@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(10,81,1,'mariai@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(11,53,1,'wattsont@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(12,53,1,'twattson@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(13,15,1,'adams.merrie@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(14,179,1,'samuels.c.carylon19@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(15,83,1,'coopern43@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(16,83,1,'norrisc@example.info',0,0,0,0,NULL,NULL,NULL,NULL),(17,164,1,'samuels.a.brittney@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(18,146,1,'jacobs.f.jay51@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(19,120,1,'patelm@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(20,193,1,'allanjameson35@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(21,76,1,'shado27@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(22,162,1,'bernadetteb@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(23,162,1,'bernadetteblackwell98@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(24,92,1,'allenm@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(25,65,1,'jedparker85@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(26,190,1,'barkley.carylon21@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(27,184,1,'ivanov.kiara71@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(28,67,1,'chowski.juliann@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(29,67,1,'juliann@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(30,185,1,'mller.scott40@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(31,175,1,'kx.dimitrov1@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(32,129,1,'vprentice@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(33,129,1,'vprentice@example.info',0,0,0,0,NULL,NULL,NULL,NULL),(34,197,1,'yadav.elina7@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(35,197,1,'elinay@testing.net',0,0,0,0,NULL,NULL,NULL,NULL),(36,122,1,'rebekaho@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(37,7,1,'patel.erik@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(38,154,1,'patel.k.irvin@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(39,154,1,'irvinpatel59@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(40,51,1,'spatel67@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(41,111,1,'robertson.elizabeth@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(42,111,1,'erobertson47@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(43,143,1,'bernadettewattson@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(44,143,1,'wattson.bernadette@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(45,77,1,'jameson.elbert@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(46,77,1,'elbertjameson47@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(47,8,1,'ashleyreynolds99@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(48,8,1,'ashleyr@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(49,84,1,'bachmanl95@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(50,123,1,'lee.jed@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(51,119,1,'terrell.santina@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(52,119,1,'santinaterrell@example.com',0,0,0,0,NULL,NULL,NULL,NULL),(53,60,1,'wilson.maxwell@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(54,88,1,'elizabeths@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(55,41,1,'barkley.brittney@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(56,156,1,'damariss@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(57,118,1,'mp.prentice@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(58,118,1,'prentice.maria86@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(59,49,1,'fjones12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(60,23,1,'rp.wattson@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(61,5,1,'wilson.troy87@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(62,93,1,'darenc@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(63,93,1,'cruz.daren@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(64,18,1,'cruz.russell41@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(65,176,1,'shermand10@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(66,132,1,'parker.shad@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(67,132,1,'shadp57@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(68,45,1,'teresawilson92@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(69,44,1,'ef.cooper@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(70,96,1,'elbertt@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(71,96,1,'elbertt@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(72,166,1,'jinazope@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(73,166,1,'jk.zope21@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(74,16,1,'yadav.s.elbert@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(75,139,1,'parkerk91@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(76,125,1,'nielsen.ashlie@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(77,159,1,'mller.billy29@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(78,102,1,'rbachman-mller15@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(79,126,1,'shadm98@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(80,126,1,'shadmller@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(81,9,1,'tanyamller@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(82,198,1,'parker.rolando@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(83,149,1,'dgrant@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(84,40,1,'parker-grant.barry@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(85,85,1,'fu.parker-grant@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(86,192,1,'lawerenceb@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(87,192,1,'lbarkley69@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(88,134,1,'barkley.kenny92@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(89,134,1,'barkley.kenny@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),(90,113,1,'tw.parker@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(91,59,1,'mcreynolds-parkerw84@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(92,110,1,'mcreynolds-parker.norris@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(93,147,1,'prentice.herminia@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(94,82,1,'wagnert@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(95,82,1,'trumanwagner@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(96,196,1,'kandacewagner62@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(97,196,1,'kz.wagner@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(98,94,1,'angelikaw@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(99,195,1,'jameson.p.kenny@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(100,195,1,'kennyjameson3@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(101,173,1,'bjameson@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(102,133,1,'jamesonj8@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(103,133,1,'jamesonj@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(104,112,1,'samuels.i.nicole4@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(105,152,1,'rays@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(106,152,1,'samuels.ray@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(107,61,1,'meis62@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(108,54,1,'carylonblackwell-dimitrov@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(109,54,1,'carylonblackwell-dimitrov@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(110,155,1,'dimitrovr@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(111,155,1,'rodrigod11@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(112,29,1,'dimitrov.o.miguel@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(113,29,1,'migueldimitrov35@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(114,103,1,'winfordj26@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(115,103,1,'wy.jones@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(116,201,1,'parker-jones.iris54@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(117,201,1,'irisp@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(118,63,1,'estajones@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(119,95,1,'kathlynjones@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(120,95,1,'jones.kathlyn3@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(121,107,1,'samson.truman@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(122,107,1,'samson.truman@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(123,68,1,'samson.delana@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(124,114,1,'lincolns72@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(125,70,1,'samson.lincoln@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(126,70,1,'lsamson18@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(127,130,1,'justinamller@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(128,140,1,'ashliemller@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(129,48,1,'parker.betty35@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(130,78,1,'aj.prentice-parker@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(131,78,1,'prentice-parker.j.ashley@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(132,20,1,'reynoldsi@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(133,20,1,'iveyr@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(134,13,1,'russellreynolds35@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(135,13,1,'russellr2@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(136,194,1,'landonterrell60@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(137,194,1,'terrelll23@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(138,131,1,'dimitrov.bernadette@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(139,89,1,'terrell-dimitrov.miguel@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(140,75,1,'lashawndat70@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(141,75,1,'terrell-dimitrovl@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),(142,121,1,'blackwell.brent@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(143,189,1,'margaretjameson65@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(144,189,1,'jameson.margaret@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(145,36,1,'meijameson@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(146,26,1,'eleonorjameson@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(147,26,1,'et.jameson52@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(148,171,1,'tobyg37@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(149,171,1,'gonzlez.toby35@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(150,200,1,'blackwell-gonzlez.felisha@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(151,200,1,'felishab98@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(152,69,1,'allengonzlez70@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(153,69,1,'gonzlez.allen60@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(154,180,1,'deforest-coopere@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(155,180,1,'ee.deforest-cooper@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(156,4,1,'teddydeforest-cooper@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(157,174,3,'info@northpointdevelopmentschool.org',1,0,0,0,NULL,NULL,NULL,NULL),(158,185,2,'@northpointdevelopmentschool.org',0,0,0,0,NULL,NULL,NULL,NULL),(159,105,3,'info@urbanculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(160,151,2,'billyp74@urbanculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(161,144,3,'service@globalempowerment.org',1,0,0,0,NULL,NULL,NULL,NULL),(162,18,2,'russellcruz@globalempowerment.org',0,0,0,0,NULL,NULL,NULL,NULL),(163,148,3,'info@dallaspartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(164,104,2,'blackwell.scott15@dallaspartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(165,90,3,'service@rebeccafellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(166,86,3,'sales@beechdevelopmenttrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(167,197,2,'eyadav83@beechdevelopmenttrust.org',0,0,0,0,NULL,NULL,NULL,NULL),(168,56,3,'service@kentuckyinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(169,189,2,'jamesonm@kentuckyinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(170,137,3,'info@aptossustainability.org',1,0,0,0,NULL,NULL,NULL,NULL),(171,34,2,'carlosm4@aptossustainability.org',1,0,0,0,NULL,NULL,NULL,NULL),(172,14,3,'feedback@bltechnologyfund.org',1,0,0,0,NULL,NULL,NULL,NULL),(173,26,2,'81@bltechnologyfund.org',0,0,0,0,NULL,NULL,NULL,NULL),(174,178,3,'sales@sierrasoftwaresolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(175,186,2,'robertsj87@sierrasoftwaresolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(176,117,3,'feedback@maincollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,85,2,'fu.parker-grant@maincollective.org',0,0,0,0,NULL,NULL,NULL,NULL),(178,157,3,'contact@moxahaladevelopmentalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(179,57,2,'rolandonielsen@moxahaladevelopmentalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,91,3,'contact@greenpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,120,2,'meganpatel@greenpoetry.org',0,0,0,0,NULL,NULL,NULL,NULL),(182,79,3,'sales@ogdensburgpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,37,3,'contact@urbanactionschool.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,36,2,'.28@urbanactionschool.org',0,0,0,0,NULL,NULL,NULL,NULL),(185,46,3,'sales@greeninitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,20,2,'11@greeninitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(187,50,3,'contact@collegehealthassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,89,2,'miguelterrell-dimitrov@collegehealthassociation.org',0,0,0,0,NULL,NULL,NULL,NULL),(189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -447,7 +447,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` DISABLE KEYS */; -INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',59,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',69,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',86,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',45,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',93,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',82,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',89,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',57,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',58,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',54,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',67,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',65,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',72,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',62,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',49,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',85,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',60,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',88,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',80,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',53,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',52,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',68,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',83,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',78,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',64,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',47,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',70,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',79,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',61,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',51,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',48,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',94,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',77,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',56,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',74,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',66,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',63,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',73,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',75,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',71,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',81,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',90,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',55,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',87,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',46,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',91,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',92,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',84,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',50,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',76,93,50.00),(186,'civicrm_financial_item',93,93,50.00); +INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',86,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',64,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',59,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',81,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',76,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',92,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',66,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',70,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',49,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',77,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',79,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',78,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',48,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',93,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',68,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',72,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',67,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',83,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',62,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',54,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',47,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',84,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',55,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',52,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',90,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',89,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',46,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',61,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',57,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',94,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',80,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',63,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',75,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',73,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',82,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',71,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',87,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',88,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',60,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',74,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',45,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',58,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',50,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',53,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',56,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',85,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',51,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',69,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',65,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',91,93,50.00),(186,'civicrm_financial_item',93,93,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -457,7 +457,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_tag` WRITE; /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */; -INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (46,'civicrm_contact',7,4),(73,'civicrm_contact',11,4),(79,'civicrm_contact',14,4),(17,'civicrm_contact',15,4),(18,'civicrm_contact',15,5),(40,'civicrm_contact',16,5),(52,'civicrm_contact',21,4),(53,'civicrm_contact',21,5),(24,'civicrm_contact',22,5),(3,'civicrm_contact',23,1),(44,'civicrm_contact',24,4),(45,'civicrm_contact',24,5),(27,'civicrm_contact',26,5),(47,'civicrm_contact',28,5),(7,'civicrm_contact',31,2),(30,'civicrm_contact',34,5),(16,'civicrm_contact',37,4),(9,'civicrm_contact',39,1),(38,'civicrm_contact',41,4),(28,'civicrm_contact',44,5),(29,'civicrm_contact',47,5),(11,'civicrm_contact',50,4),(5,'civicrm_contact',55,2),(14,'civicrm_contact',56,5),(90,'civicrm_contact',58,5),(93,'civicrm_contact',59,4),(58,'civicrm_contact',62,5),(6,'civicrm_contact',63,3),(94,'civicrm_contact',64,5),(31,'civicrm_contact',66,4),(32,'civicrm_contact',66,5),(74,'civicrm_contact',67,4),(12,'civicrm_contact',71,5),(111,'civicrm_contact',72,4),(112,'civicrm_contact',72,5),(84,'civicrm_contact',77,5),(59,'civicrm_contact',78,4),(60,'civicrm_contact',78,5),(4,'civicrm_contact',82,2),(64,'civicrm_contact',84,4),(65,'civicrm_contact',84,5),(61,'civicrm_contact',86,5),(75,'civicrm_contact',88,4),(15,'civicrm_contact',91,5),(50,'civicrm_contact',93,4),(51,'civicrm_contact',93,5),(99,'civicrm_contact',94,4),(8,'civicrm_contact',95,3),(97,'civicrm_contact',96,4),(98,'civicrm_contact',96,5),(22,'civicrm_contact',99,4),(23,'civicrm_contact',99,5),(42,'civicrm_contact',103,5),(91,'civicrm_contact',107,4),(25,'civicrm_contact',108,4),(26,'civicrm_contact',108,5),(72,'civicrm_contact',109,4),(13,'civicrm_contact',110,4),(109,'civicrm_contact',113,5),(19,'civicrm_contact',115,4),(33,'civicrm_contact',119,4),(77,'civicrm_contact',125,4),(2,'civicrm_contact',127,2),(41,'civicrm_contact',128,4),(55,'civicrm_contact',129,4),(56,'civicrm_contact',129,5),(70,'civicrm_contact',132,4),(71,'civicrm_contact',132,5),(104,'civicrm_contact',133,4),(85,'civicrm_contact',139,5),(36,'civicrm_contact',142,5),(110,'civicrm_contact',148,5),(43,'civicrm_contact',149,4),(86,'civicrm_contact',150,4),(87,'civicrm_contact',150,5),(83,'civicrm_contact',151,4),(54,'civicrm_contact',152,4),(100,'civicrm_contact',153,4),(101,'civicrm_contact',153,5),(108,'civicrm_contact',154,4),(48,'civicrm_contact',158,5),(34,'civicrm_contact',159,4),(35,'civicrm_contact',159,5),(62,'civicrm_contact',162,4),(63,'civicrm_contact',162,5),(80,'civicrm_contact',163,4),(37,'civicrm_contact',164,4),(68,'civicrm_contact',165,4),(69,'civicrm_contact',165,5),(78,'civicrm_contact',166,4),(103,'civicrm_contact',169,4),(107,'civicrm_contact',170,5),(92,'civicrm_contact',173,5),(88,'civicrm_contact',174,4),(89,'civicrm_contact',174,5),(66,'civicrm_contact',180,4),(67,'civicrm_contact',180,5),(10,'civicrm_contact',182,3),(106,'civicrm_contact',184,4),(57,'civicrm_contact',185,5),(39,'civicrm_contact',188,4),(81,'civicrm_contact',189,4),(82,'civicrm_contact',189,5),(102,'civicrm_contact',191,4),(1,'civicrm_contact',192,3),(113,'civicrm_contact',195,4),(114,'civicrm_contact',195,5),(105,'civicrm_contact',197,4),(20,'civicrm_contact',198,4),(21,'civicrm_contact',198,5),(49,'civicrm_contact',199,4),(76,'civicrm_contact',200,4),(95,'civicrm_contact',201,4),(96,'civicrm_contact',201,5); +INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (58,'civicrm_contact',6,4),(59,'civicrm_contact',6,5),(40,'civicrm_contact',8,5),(101,'civicrm_contact',10,5),(6,'civicrm_contact',14,3),(18,'civicrm_contact',15,4),(19,'civicrm_contact',15,5),(13,'civicrm_contact',17,5),(108,'civicrm_contact',20,4),(55,'civicrm_contact',23,5),(121,'civicrm_contact',25,5),(88,'civicrm_contact',28,4),(49,'civicrm_contact',30,4),(50,'civicrm_contact',30,5),(79,'civicrm_contact',34,4),(115,'civicrm_contact',36,4),(116,'civicrm_contact',36,5),(75,'civicrm_contact',40,4),(113,'civicrm_contact',42,4),(114,'civicrm_contact',42,5),(62,'civicrm_contact',44,4),(10,'civicrm_contact',46,1),(47,'civicrm_contact',55,4),(80,'civicrm_contact',59,4),(45,'civicrm_contact',60,4),(46,'civicrm_contact',60,5),(5,'civicrm_contact',62,3),(96,'civicrm_contact',63,4),(97,'civicrm_contact',63,5),(48,'civicrm_contact',64,4),(25,'civicrm_contact',66,4),(26,'civicrm_contact',66,5),(29,'civicrm_contact',67,5),(119,'civicrm_contact',69,4),(120,'civicrm_contact',69,5),(41,'civicrm_contact',71,5),(68,'civicrm_contact',74,5),(24,'civicrm_contact',76,4),(104,'civicrm_contact',78,4),(105,'civicrm_contact',78,5),(9,'civicrm_contact',79,3),(61,'civicrm_contact',80,5),(16,'civicrm_contact',81,4),(17,'civicrm_contact',81,5),(84,'civicrm_contact',82,5),(4,'civicrm_contact',86,1),(53,'civicrm_contact',87,4),(54,'civicrm_contact',87,5),(110,'civicrm_contact',89,5),(8,'civicrm_contact',91,1),(56,'civicrm_contact',93,4),(57,'civicrm_contact',93,5),(85,'civicrm_contact',94,4),(36,'civicrm_contact',97,4),(14,'civicrm_contact',99,4),(15,'civicrm_contact',99,5),(95,'civicrm_contact',103,5),(111,'civicrm_contact',104,4),(2,'civicrm_contact',105,1),(98,'civicrm_contact',107,5),(92,'civicrm_contact',108,4),(93,'civicrm_contact',108,5),(99,'civicrm_contact',114,4),(100,'civicrm_contact',114,5),(7,'civicrm_contact',117,1),(22,'civicrm_contact',120,4),(23,'civicrm_contact',120,5),(112,'civicrm_contact',121,4),(34,'civicrm_contact',122,5),(42,'civicrm_contact',123,4),(43,'civicrm_contact',123,5),(12,'civicrm_contact',124,5),(71,'civicrm_contact',126,4),(72,'civicrm_contact',126,5),(32,'civicrm_contact',129,4),(33,'civicrm_contact',129,5),(78,'civicrm_contact',134,5),(106,'civicrm_contact',135,4),(107,'civicrm_contact',135,5),(66,'civicrm_contact',139,5),(102,'civicrm_contact',140,5),(89,'civicrm_contact',141,4),(90,'civicrm_contact',141,5),(1,'civicrm_contact',142,3),(37,'civicrm_contact',143,5),(82,'civicrm_contact',147,4),(83,'civicrm_contact',147,5),(3,'civicrm_contact',148,3),(91,'civicrm_contact',152,5),(35,'civicrm_contact',154,4),(94,'civicrm_contact',155,5),(51,'civicrm_contact',156,4),(52,'civicrm_contact',156,5),(122,'civicrm_contact',158,4),(69,'civicrm_contact',159,4),(70,'civicrm_contact',159,5),(44,'civicrm_contact',161,5),(21,'civicrm_contact',164,4),(64,'civicrm_contact',165,4),(65,'civicrm_contact',165,5),(63,'civicrm_contact',166,5),(27,'civicrm_contact',167,4),(11,'civicrm_contact',169,5),(117,'civicrm_contact',171,4),(118,'civicrm_contact',171,5),(67,'civicrm_contact',172,5),(60,'civicrm_contact',176,4),(20,'civicrm_contact',179,5),(30,'civicrm_contact',183,4),(31,'civicrm_contact',183,5),(38,'civicrm_contact',186,4),(39,'civicrm_contact',186,5),(103,'civicrm_contact',187,4),(28,'civicrm_contact',190,5),(81,'civicrm_contact',191,5),(76,'civicrm_contact',192,4),(77,'civicrm_contact',192,5),(109,'civicrm_contact',194,4),(86,'civicrm_contact',195,4),(87,'civicrm_contact',195,5),(73,'civicrm_contact',198,4),(74,'civicrm_contact',198,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -467,7 +467,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_event` WRITE; /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */; -INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2020-12-10 17:00:00','2020-12-12 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2020-06-09 12:00:00','2020-06-09 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,NULL,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2021-01-10 07:00:00','2021-01-13 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,NULL,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); +INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2021-01-24 17:00:00','2021-01-26 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2020-07-23 12:00:00','2020-07-23 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,NULL,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2021-02-24 07:00:00','2021-02-27 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,NULL,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); /*!40000 ALTER TABLE `civicrm_event` ENABLE KEYS */; UNLOCK TABLES; @@ -495,7 +495,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_extension` WRITE; /*!40000 ALTER TABLE `civicrm_extension` DISABLE KEYS */; -INSERT INTO `civicrm_extension` (`id`, `type`, `full_name`, `name`, `label`, `file`, `schema_version`, `is_active`) VALUES (1,'module','sequentialcreditnotes','Sequential credit notes','Sequential credit notes','sequentialcreditnotes',NULL,1); +INSERT INTO `civicrm_extension` (`id`, `type`, `full_name`, `name`, `label`, `file`, `schema_version`, `is_active`) VALUES (1,'module','sequentialcreditnotes','Sequential credit notes','Sequential credit notes','sequentialcreditnotes',NULL,1),(2,'module','eventcart','Event cart','Event cart','eventcart',NULL,1); /*!40000 ALTER TABLE `civicrm_extension` ENABLE KEYS */; UNLOCK TABLES; @@ -524,7 +524,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_item` WRITE; /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */; -INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES (1,'2020-06-10 02:45:52','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2020-06-10 02:45:52','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2020-06-10 02:45:52','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2020-06-10 02:45:52','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2020-06-10 02:45:52','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2020-06-10 02:45:52','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2020-06-10 02:45:52','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2020-06-10 02:45:52','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2020-06-10 02:45:52','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2020-06-10 02:45:52','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2020-06-10 02:45:52','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2020-06-10 02:45:52','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2020-06-10 02:45:52','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2020-06-10 02:45:53','2020-06-10 14:45:52',158,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2020-06-10 02:45:53','2020-06-10 14:45:52',9,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2020-06-10 02:45:53','2020-06-10 14:45:52',154,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2020-06-10 02:45:53','2020-06-10 14:45:52',59,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2020-06-10 02:45:53','2020-06-10 14:45:52',52,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2020-06-10 02:45:53','2020-06-10 14:45:52',185,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2020-06-10 02:45:53','2020-06-10 14:45:52',73,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2020-06-10 02:45:53','2020-06-10 14:45:52',12,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2020-06-10 02:45:53','2020-06-10 14:45:52',41,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2020-06-10 02:45:53','2020-06-10 14:45:52',18,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2020-06-10 02:45:53','2020-06-10 14:45:52',126,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2020-06-10 02:45:53','2020-06-10 14:45:52',4,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2020-06-10 02:45:53','2020-06-10 14:45:52',92,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2020-06-10 02:45:53','2020-06-10 14:45:52',62,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2020-06-10 02:45:53','2020-06-10 14:45:52',117,'General',100.00,'USD',2,1,'civicrm_line_item',30),(29,'2020-06-10 02:45:53','2020-06-10 14:45:52',164,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2020-06-10 02:45:53','2020-06-10 14:45:52',174,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2020-06-10 02:45:53','2020-06-10 14:45:52',173,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2020-06-10 02:45:53','2020-06-10 14:45:52',109,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2020-06-10 02:45:53','2020-06-10 14:45:52',10,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2020-06-10 02:45:53','2020-06-10 14:45:52',190,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2020-06-10 02:45:53','2020-06-10 14:45:52',110,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2020-06-10 02:45:53','2020-06-10 14:45:52',81,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2020-06-10 02:45:53','2020-06-10 14:45:52',112,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2020-06-10 02:45:53','2020-06-10 14:45:52',15,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2020-06-10 02:45:53','2020-06-10 14:45:52',134,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2020-06-10 02:45:53','2020-06-10 14:45:52',32,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2020-06-10 02:45:53','2020-06-10 14:45:52',107,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2020-06-10 02:45:53','2020-06-10 14:45:52',147,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2020-06-10 02:45:53','2020-06-10 14:45:52',98,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2020-06-10 02:45:53','2020-06-10 14:45:52',57,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2020-06-10 02:45:53','2020-06-10 14:45:52',113,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2020-06-10 02:45:53','2020-06-10 14:45:52',171,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2020-06-10 02:45:53','2020-06-10 14:45:52',1,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2020-06-10 02:45:53','2020-06-10 14:45:52',198,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2020-06-10 02:45:53','2020-06-10 14:45:52',159,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2020-06-10 02:45:53','2020-06-10 14:45:52',180,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2020-06-10 02:45:53','2020-06-10 14:45:52',51,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2020-06-10 02:45:53','2020-06-10 14:45:52',52,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2020-06-10 02:45:53','2020-06-10 14:45:52',27,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2020-06-10 02:45:53','2020-06-10 14:45:52',83,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2020-06-10 02:45:53','2020-06-10 14:45:52',75,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2020-06-10 02:45:53','2020-06-10 14:45:52',121,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2020-06-10 02:45:53','2020-06-10 14:45:52',68,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2020-06-10 02:45:53','2020-06-10 14:45:52',11,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2020-06-10 02:45:53','2020-06-10 14:45:52',164,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2020-06-10 02:45:53','2020-06-10 14:45:52',59,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2020-06-10 02:45:53','2020-06-10 14:45:52',177,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2020-06-10 02:45:53','2020-06-10 14:45:52',152,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2020-06-10 02:45:53','2020-06-10 14:45:52',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2020-06-10 02:45:53','2020-06-10 14:45:52',20,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2020-06-10 02:45:53','2020-06-10 14:45:52',110,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2020-06-10 02:45:53','2020-06-10 14:45:52',161,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2020-06-10 02:45:53','2020-06-10 14:45:52',146,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2020-06-10 02:45:53','2020-06-10 14:45:52',74,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2020-06-10 02:45:53','2020-06-10 14:45:52',4,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2020-06-10 02:45:53','2020-06-10 14:45:52',118,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2020-06-10 02:45:53','2020-06-10 14:45:52',151,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2020-06-10 02:45:53','2020-06-10 14:45:52',61,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2020-06-10 02:45:53','2020-06-10 14:45:52',18,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2020-06-10 02:45:53','2020-06-10 14:45:52',7,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2020-06-10 02:45:53','2020-06-10 14:45:52',199,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2020-06-10 02:45:53','2020-06-10 14:45:52',142,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2020-06-10 02:45:53','2020-06-10 14:45:52',33,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2020-06-10 02:45:53','2020-06-10 14:45:52',134,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2020-06-10 02:45:53','2020-06-10 14:45:52',76,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2020-06-10 02:45:53','2020-06-10 14:45:52',70,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2020-06-10 02:45:53','2020-06-10 14:45:52',124,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2020-06-10 02:45:53','2020-06-10 14:45:52',139,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2020-06-10 02:45:53','2020-06-10 14:45:52',119,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2020-06-10 02:45:53','2020-06-10 14:45:52',154,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2020-06-10 02:45:53','2020-06-10 14:45:52',183,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2020-06-10 02:45:53','2020-06-10 14:45:52',30,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2020-06-10 02:45:53','2020-06-10 14:45:52',173,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2020-06-10 02:45:53','2020-06-10 14:45:52',3,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2020-06-10 02:45:53','2020-06-10 14:45:52',188,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2020-06-10 02:45:53','2020-06-10 14:45:52',197,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2020-06-10 02:45:53','2020-06-10 14:45:52',162,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2020-06-10 02:45:53','2020-06-10 14:45:52',12,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2020-06-10 02:45:53','2020-06-10 14:45:52',141,'Single',50.00,'USD',4,1,'civicrm_line_item',80); +INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES (1,'2020-07-24 05:34:04','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2020-07-24 05:34:04','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2020-07-24 05:34:04','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2020-07-24 05:34:04','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2020-07-24 05:34:04','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2020-07-24 05:34:04','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2020-07-24 05:34:04','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2020-07-24 05:34:04','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2020-07-24 05:34:04','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2020-07-24 05:34:04','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2020-07-24 05:34:04','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2020-07-24 05:34:04','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2020-07-24 05:34:04','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2020-07-24 05:34:04','2020-07-24 15:34:04',103,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2020-07-24 05:34:04','2020-07-24 15:34:04',179,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2020-07-24 05:34:04','2020-07-24 15:34:04',12,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2020-07-24 05:34:04','2020-07-24 15:34:04',173,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2020-07-24 05:34:04','2020-07-24 15:34:04',127,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2020-07-24 05:34:04','2020-07-24 15:34:04',63,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2020-07-24 05:34:04','2020-07-24 15:34:04',188,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2020-07-24 05:34:04','2020-07-24 15:34:04',80,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2020-07-24 05:34:04','2020-07-24 15:34:04',131,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2020-07-24 05:34:04','2020-07-24 15:34:04',161,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2020-07-24 05:34:04','2020-07-24 15:34:04',41,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2020-07-24 05:34:04','2020-07-24 15:34:04',20,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2020-07-24 05:34:04','2020-07-24 15:34:04',195,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2020-07-24 05:34:04','2020-07-24 15:34:04',164,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2020-07-24 05:34:04','2020-07-24 15:34:04',78,'General',100.00,'USD',2,1,'civicrm_line_item',30),(29,'2020-07-24 05:34:04','2020-07-24 15:34:04',132,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2020-07-24 05:34:04','2020-07-24 15:34:04',5,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2020-07-24 05:34:04','2020-07-24 15:34:04',108,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2020-07-24 05:34:04','2020-07-24 15:34:04',39,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2020-07-24 05:34:04','2020-07-24 15:34:04',159,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2020-07-24 05:34:04','2020-07-24 15:34:04',67,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2020-07-24 05:34:04','2020-07-24 15:34:04',17,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2020-07-24 05:34:04','2020-07-24 15:34:04',7,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2020-07-24 05:34:05','2020-07-24 15:34:04',95,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2020-07-24 05:34:05','2020-07-24 15:34:04',134,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2020-07-24 05:34:05','2020-07-24 15:34:04',74,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2020-07-24 05:34:05','2020-07-24 15:34:04',13,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2020-07-24 05:34:05','2020-07-24 15:34:04',156,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2020-07-24 05:34:05','2020-07-24 15:34:04',145,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2020-07-24 05:34:05','2020-07-24 15:34:04',99,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2020-07-24 05:34:05','2020-07-24 15:34:04',167,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2020-07-24 05:34:05','2020-07-24 15:34:04',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2020-07-24 05:34:05','2020-07-24 15:34:04',56,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2020-07-24 05:34:05','2020-07-24 15:34:04',133,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2020-07-24 05:34:05','2020-07-24 15:34:04',111,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2020-07-24 05:34:05','2020-07-24 15:34:04',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2020-07-24 05:34:05','2020-07-24 15:34:04',94,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2020-07-24 05:34:05','2020-07-24 15:34:04',102,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2020-07-24 05:34:05','2020-07-24 15:34:04',19,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2020-07-24 05:34:05','2020-07-24 15:34:04',114,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2020-07-24 05:34:05','2020-07-24 15:34:04',129,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2020-07-24 05:34:05','2020-07-24 15:34:04',120,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2020-07-24 05:34:05','2020-07-24 15:34:04',18,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2020-07-24 05:34:05','2020-07-24 15:34:04',196,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2020-07-24 05:34:05','2020-07-24 15:34:04',98,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2020-07-24 05:34:05','2020-07-24 15:34:04',105,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2020-07-24 05:34:05','2020-07-24 15:34:04',95,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2020-07-24 05:34:05','2020-07-24 15:34:04',155,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2020-07-24 05:34:05','2020-07-24 15:34:04',68,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2020-07-24 05:34:05','2020-07-24 15:34:04',31,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2020-07-24 05:34:05','2020-07-24 15:34:04',8,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2020-07-24 05:34:05','2020-07-24 15:34:04',162,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2020-07-24 05:34:05','2020-07-24 15:34:04',41,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2020-07-24 05:34:05','2020-07-24 15:34:04',24,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2020-07-24 05:34:05','2020-07-24 15:34:04',180,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2020-07-24 05:34:05','2020-07-24 15:34:04',175,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2020-07-24 05:34:05','2020-07-24 15:34:04',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2020-07-24 05:34:05','2020-07-24 15:34:04',60,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2020-07-24 05:34:05','2020-07-24 15:34:04',49,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2020-07-24 05:34:05','2020-07-24 15:34:04',200,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2020-07-24 05:34:05','2020-07-24 15:34:04',130,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2020-07-24 05:34:05','2020-07-24 15:34:04',70,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2020-07-24 05:34:05','2020-07-24 15:34:04',110,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2020-07-24 05:34:05','2020-07-24 15:34:04',106,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2020-07-24 05:34:05','2020-07-24 15:34:04',140,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2020-07-24 05:34:05','2020-07-24 15:34:04',103,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2020-07-24 05:34:05','2020-07-24 15:34:04',170,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2020-07-24 05:34:05','2020-07-24 15:34:04',172,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2020-07-24 05:34:05','2020-07-24 15:34:04',57,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2020-07-24 05:34:05','2020-07-24 15:34:04',109,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2020-07-24 05:34:05','2020-07-24 15:34:04',5,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2020-07-24 05:34:05','2020-07-24 15:34:04',54,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2020-07-24 05:34:05','2020-07-24 15:34:04',21,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2020-07-24 05:34:05','2020-07-24 15:34:04',30,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2020-07-24 05:34:05','2020-07-24 15:34:04',44,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2020-07-24 05:34:05','2020-07-24 15:34:04',165,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2020-07-24 05:34:05','2020-07-24 15:34:04',23,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2020-07-24 05:34:05','2020-07-24 15:34:04',99,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2020-07-24 05:34:05','2020-07-24 15:34:04',90,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2020-07-24 05:34:05','2020-07-24 15:34:04',194,'Single',50.00,'USD',4,1,'civicrm_line_item',80); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -534,7 +534,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */; -INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL,NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL,NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(14,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(15,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(16,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(17,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(18,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(19,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(20,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(21,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(22,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(23,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(24,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(25,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(26,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(27,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(28,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(29,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(30,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(31,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(32,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(33,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(34,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(35,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(36,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(37,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(38,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(39,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(40,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(41,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(42,NULL,1,'2020-06-10 14:45:52',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(43,NULL,1,'2020-06-10 14:45:52',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(44,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(45,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(46,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(47,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(48,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(49,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(50,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(51,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(52,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(53,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(54,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(55,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(56,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(57,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(58,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(59,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(60,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(61,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(62,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(63,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(64,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(65,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(66,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(67,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(68,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(69,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(70,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(71,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(72,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(73,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(74,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(75,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(76,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(77,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(78,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(79,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(80,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(81,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(82,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(83,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(84,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(85,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(86,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(87,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(88,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(89,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(90,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(91,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(92,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(93,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES (1,NULL,6,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),(2,NULL,6,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(3,NULL,6,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL,NULL),(4,NULL,6,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),(5,NULL,6,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),(6,NULL,6,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL,NULL),(7,NULL,6,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(8,NULL,6,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(9,NULL,6,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(10,NULL,6,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(11,NULL,6,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(12,NULL,6,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(13,NULL,6,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(14,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(15,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(16,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(17,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(18,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(19,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(20,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(21,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(22,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(23,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(24,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(25,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(26,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(27,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(28,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(29,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(30,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(31,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(32,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(33,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(34,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(35,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(36,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(37,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(38,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(39,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(40,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(41,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(42,NULL,6,'2020-07-24 15:34:04',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(43,NULL,6,'2020-07-24 15:34:04',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(44,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(45,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(46,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(47,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(48,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(49,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(50,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(51,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(52,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(53,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(54,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(55,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(56,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(57,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(58,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(59,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(60,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(61,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(62,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(63,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(64,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(65,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(66,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(67,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(68,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(69,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(70,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(71,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(72,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(73,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(74,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(75,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(76,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(77,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(78,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(79,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(80,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(81,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(82,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(83,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(84,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(85,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(86,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(87,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(88,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(89,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(90,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(91,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(92,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(93,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -573,7 +573,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_group_contact` WRITE; /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */; -INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,50,'Added',NULL,NULL),(2,2,43,'Added',NULL,NULL),(3,2,71,'Added',NULL,NULL),(4,2,177,'Added',NULL,NULL),(5,2,110,'Added',NULL,NULL),(6,2,97,'Added',NULL,NULL),(7,2,56,'Added',NULL,NULL),(8,2,75,'Added',NULL,NULL),(9,2,91,'Added',NULL,NULL),(10,2,172,'Added',NULL,NULL),(11,2,37,'Added',NULL,NULL),(12,2,175,'Added',NULL,NULL),(13,2,15,'Added',NULL,NULL),(14,2,106,'Added',NULL,NULL),(15,2,115,'Added',NULL,NULL),(16,2,147,'Added',NULL,NULL),(17,2,198,'Added',NULL,NULL),(18,2,53,'Added',NULL,NULL),(19,2,99,'Added',NULL,NULL),(20,2,146,'Added',NULL,NULL),(21,2,22,'Added',NULL,NULL),(22,2,18,'Added',NULL,NULL),(23,2,108,'Added',NULL,NULL),(24,2,27,'Added',NULL,NULL),(25,2,26,'Added',NULL,NULL),(26,2,92,'Added',NULL,NULL),(27,2,44,'Added',NULL,NULL),(28,2,121,'Added',NULL,NULL),(29,2,47,'Added',NULL,NULL),(30,2,138,'Added',NULL,NULL),(31,2,34,'Added',NULL,NULL),(32,2,85,'Added',NULL,NULL),(33,2,66,'Added',NULL,NULL),(34,2,157,'Added',NULL,NULL),(35,2,119,'Added',NULL,NULL),(36,2,10,'Added',NULL,NULL),(37,2,159,'Added',NULL,NULL),(38,2,194,'Added',NULL,NULL),(39,2,142,'Added',NULL,NULL),(40,2,61,'Added',NULL,NULL),(41,2,164,'Added',NULL,NULL),(42,2,134,'Added',NULL,NULL),(43,2,41,'Added',NULL,NULL),(44,2,116,'Added',NULL,NULL),(45,2,188,'Added',NULL,NULL),(46,2,120,'Added',NULL,NULL),(47,2,16,'Added',NULL,NULL),(48,2,29,'Added',NULL,NULL),(49,2,128,'Added',NULL,NULL),(50,2,118,'Added',NULL,NULL),(51,2,103,'Added',NULL,NULL),(52,2,143,'Added',NULL,NULL),(53,2,149,'Added',NULL,NULL),(54,2,136,'Added',NULL,NULL),(55,2,24,'Added',NULL,NULL),(56,2,36,'Added',NULL,NULL),(57,2,7,'Added',NULL,NULL),(58,2,167,'Added',NULL,NULL),(59,2,28,'Added',NULL,NULL),(60,2,145,'Added',NULL,NULL),(61,3,158,'Added',NULL,NULL),(62,3,20,'Added',NULL,NULL),(63,3,199,'Added',NULL,NULL),(64,3,112,'Added',NULL,NULL),(65,3,93,'Added',NULL,NULL),(66,3,69,'Added',NULL,NULL),(67,3,21,'Added',NULL,NULL),(68,3,137,'Added',NULL,NULL),(69,3,152,'Added',NULL,NULL),(70,3,12,'Added',NULL,NULL),(71,3,129,'Added',NULL,NULL),(72,3,81,'Added',NULL,NULL),(73,3,185,'Added',NULL,NULL),(74,3,30,'Added',NULL,NULL),(75,3,62,'Added',NULL,NULL),(76,4,50,'Added',NULL,NULL),(77,4,75,'Added',NULL,NULL),(78,4,115,'Added',NULL,NULL),(79,4,18,'Added',NULL,NULL),(80,4,47,'Added',NULL,NULL),(81,4,10,'Added',NULL,NULL),(82,4,41,'Added',NULL,NULL),(83,4,118,'Added',NULL,NULL); +INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,169,'Added',NULL,NULL),(2,2,24,'Added',NULL,NULL),(3,2,124,'Added',NULL,NULL),(4,2,57,'Added',NULL,NULL),(5,2,17,'Added',NULL,NULL),(6,2,182,'Added',NULL,NULL),(7,2,99,'Added',NULL,NULL),(8,2,138,'Added',NULL,NULL),(9,2,81,'Added',NULL,NULL),(10,2,53,'Added',NULL,NULL),(11,2,15,'Added',NULL,NULL),(12,2,33,'Added',NULL,NULL),(13,2,179,'Added',NULL,NULL),(14,2,83,'Added',NULL,NULL),(15,2,164,'Added',NULL,NULL),(16,2,146,'Added',NULL,NULL),(17,2,120,'Added',NULL,NULL),(18,2,193,'Added',NULL,NULL),(19,2,76,'Added',NULL,NULL),(20,2,162,'Added',NULL,NULL),(21,2,66,'Added',NULL,NULL),(22,2,92,'Added',NULL,NULL),(23,2,167,'Added',NULL,NULL),(24,2,65,'Added',NULL,NULL),(25,2,190,'Added',NULL,NULL),(26,2,184,'Added',NULL,NULL),(27,2,67,'Added',NULL,NULL),(28,2,185,'Added',NULL,NULL),(29,2,183,'Added',NULL,NULL),(30,2,175,'Added',NULL,NULL),(31,2,129,'Added',NULL,NULL),(32,2,197,'Added',NULL,NULL),(33,2,122,'Added',NULL,NULL),(34,2,7,'Added',NULL,NULL),(35,2,154,'Added',NULL,NULL),(36,2,51,'Added',NULL,NULL),(37,2,97,'Added',NULL,NULL),(38,2,111,'Added',NULL,NULL),(39,2,143,'Added',NULL,NULL),(40,2,77,'Added',NULL,NULL),(41,2,186,'Added',NULL,NULL),(42,2,12,'Added',NULL,NULL),(43,2,8,'Added',NULL,NULL),(44,2,84,'Added',NULL,NULL),(45,2,71,'Added',NULL,NULL),(46,2,3,'Added',NULL,NULL),(47,2,123,'Added',NULL,NULL),(48,2,119,'Added',NULL,NULL),(49,2,161,'Added',NULL,NULL),(50,2,145,'Added',NULL,NULL),(51,2,60,'Added',NULL,NULL),(52,2,31,'Added',NULL,NULL),(53,2,55,'Added',NULL,NULL),(54,2,88,'Added',NULL,NULL),(55,2,64,'Added',NULL,NULL),(56,2,41,'Added',NULL,NULL),(57,2,30,'Added',NULL,NULL),(58,2,2,'Added',NULL,NULL),(59,2,156,'Added',NULL,NULL),(60,2,118,'Added',NULL,NULL),(61,3,87,'Added',NULL,NULL),(62,3,49,'Added',NULL,NULL),(63,3,23,'Added',NULL,NULL),(64,3,5,'Added',NULL,NULL),(65,3,93,'Added',NULL,NULL),(66,3,18,'Added',NULL,NULL),(67,3,6,'Added',NULL,NULL),(68,3,199,'Added',NULL,NULL),(69,3,176,'Added',NULL,NULL),(70,3,132,'Added',NULL,NULL),(71,3,80,'Added',NULL,NULL),(72,3,45,'Added',NULL,NULL),(73,3,44,'Added',NULL,NULL),(74,3,96,'Added',NULL,NULL),(75,3,166,'Added',NULL,NULL),(76,4,169,'Added',NULL,NULL),(77,4,138,'Added',NULL,NULL),(78,4,164,'Added',NULL,NULL),(79,4,92,'Added',NULL,NULL),(80,4,183,'Added',NULL,NULL),(81,4,51,'Added',NULL,NULL),(82,4,8,'Added',NULL,NULL),(83,4,145,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -638,7 +638,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_line_item` WRITE; /*!40000 ALTER TABLE `civicrm_line_item` DISABLE KEYS */; -INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',15,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',17,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',19,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',21,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',23,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',25,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',27,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',29,28,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(31,'civicrm_membership',2,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',4,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',6,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',8,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',12,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',14,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,60,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,53,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,52,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,64,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,47,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,70,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,79,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,51,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,48,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,56,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,73,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,55,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,46,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,92,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,50,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,76,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,59,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,45,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,58,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,54,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,65,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,62,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,49,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); +INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',15,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',17,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',19,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',21,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',23,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',25,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',27,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',29,28,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(31,'civicrm_membership',2,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',4,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',6,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',8,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',12,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',14,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,67,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,62,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,54,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,47,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,55,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,52,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,89,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,57,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,75,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,82,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,60,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,45,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,58,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,50,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,53,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,56,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,85,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,51,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,59,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,81,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,49,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,77,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,48,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,68,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -648,7 +648,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_loc_block` WRITE; /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */; -INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES (1,174,190,158,NULL,NULL,NULL,NULL,NULL),(2,175,191,159,NULL,NULL,NULL,NULL,NULL),(3,176,192,160,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES (1,180,189,158,NULL,NULL,NULL,NULL,NULL),(2,181,190,159,NULL,NULL,NULL,NULL,NULL),(3,182,191,160,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -725,7 +725,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_mailing_component` WRITE; /*!40000 ALTER TABLE `civicrm_mailing_component` DISABLE KEYS */; -INSERT INTO `civicrm_mailing_component` (`id`, `name`, `component_type`, `subject`, `body_html`, `body_text`, `is_default`, `is_active`) VALUES (1,'Mailing Header','Header','Descriptive Title for this Header','Sample Header for HTML formatted content.','Sample Header for TEXT formatted content.',1,1),(2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1),(3,'Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1),(4,'Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {welcome.group} mailing list has been activated.','Welcome. Your subscription to the {welcome.group} mailing list has been activated.',1,1),(5,'Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking ',1,1),(6,'Resubscribe Message','Resubscribe','Re-subscribe Confirmation','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking <a href=\"{action.unsubscribeUrl}\">here</a>.','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking {action.unsubscribeUrl}',1,1),(7,'Opt-out Message','OptOut','Opt-out Confirmation','Your email address has been removed from {domain.name} mailing lists.','Your email address has been removed from {domain.name} mailing lists.',1,1),(8,'Auto-responder','Reply','Please Send Inquiries to Our Contact Email Address','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.',1,1); +INSERT INTO `civicrm_mailing_component` (`id`, `name`, `component_type`, `subject`, `body_html`, `body_text`, `is_default`, `is_active`) VALUES (1,'Mailing Header','Header','Descriptive Title for this Header','Sample Header for HTML formatted content.','Sample Header for TEXT formatted content.',1,1),(2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1),(3,'Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1),(4,'Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {welcome.group} mailing list has been activated.','Welcome. Your subscription to the {welcome.group} mailing list has been activated.',1,1),(5,'Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}',1,1),(6,'Resubscribe Message','Resubscribe','Re-subscribe Confirmation','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking <a href=\"{action.unsubscribeUrl}\">here</a>.','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking {action.unsubscribeUrl}',1,1),(7,'Opt-out Message','OptOut','Opt-out Confirmation','Your email address has been removed from {domain.name} mailing lists.','Your email address has been removed from {domain.name} mailing lists.',1,1),(8,'Auto-responder','Reply','Please Send Inquiries to Our Contact Email Address','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.',1,1); /*!40000 ALTER TABLE `civicrm_mailing_component` ENABLE KEYS */; UNLOCK TABLES; @@ -897,7 +897,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership` WRITE; /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */; -INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES (1,158,1,'2020-06-10','2020-06-10','2022-06-09','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,164,2,'2020-06-09','2020-06-09','2021-06-08','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,9,1,'2020-06-08','2020-06-08','2022-06-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,174,2,'2020-06-07','2020-06-07','2021-06-06','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,154,1,'2018-05-09','2018-05-09','2020-05-08','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,173,2,'2020-06-05','2020-06-05','2021-06-04','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,59,1,'2020-06-04','2020-06-04','2022-06-03','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,109,2,'2020-06-03','2020-06-03','2021-06-02','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,52,1,'2020-06-02','2020-06-02','2022-06-01','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,185,1,'2018-03-30','2018-03-30','2020-03-29','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,147,3,'2020-05-31','2020-05-31',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,10,2,'2020-05-30','2020-05-30','2021-05-29','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,73,1,'2020-05-29','2020-05-29','2022-05-28','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,190,2,'2020-05-28','2020-05-28','2021-05-27','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,12,1,'2018-02-18','2018-02-18','2020-02-17','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,110,2,'2020-05-26','2020-05-26','2021-05-25','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,41,1,'2020-05-25','2020-05-25','2022-05-24','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,81,2,'2020-05-24','2020-05-24','2021-05-23','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,18,1,'2020-05-23','2020-05-23','2022-05-22','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,112,2,'2019-05-22','2019-05-22','2020-05-21','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,126,1,'2020-05-21','2020-05-21','2022-05-20','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,98,3,'2020-05-20','2020-05-20',NULL,'Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,4,1,'2020-05-19','2020-05-19','2022-05-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,15,2,'2020-05-18','2020-05-18','2021-05-17','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,92,1,'2017-11-30','2017-11-30','2019-11-29','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,134,2,'2020-05-16','2020-05-16','2021-05-15','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,62,1,'2020-05-15','2020-05-15','2022-05-14','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,32,2,'2020-05-14','2020-05-14','2021-05-13','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,117,1,'2020-05-13','2020-05-13','2022-05-12','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,107,2,'2019-05-12','2019-05-12','2020-05-11','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); +INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES (1,103,1,'2020-07-24','2020-07-24','2022-07-23','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,132,2,'2020-07-23','2020-07-23','2021-07-22','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,179,1,'2020-07-22','2020-07-22','2022-07-21','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,5,2,'2020-07-21','2020-07-21','2021-07-20','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,12,1,'2018-06-22','2018-06-22','2020-06-21','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,108,2,'2020-07-19','2020-07-19','2021-07-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,173,1,'2020-07-18','2020-07-18','2022-07-17','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,39,2,'2020-07-17','2020-07-17','2021-07-16','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,127,1,'2020-07-16','2020-07-16','2022-07-15','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,63,1,'2018-05-13','2018-05-13','2020-05-12','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,145,3,'2020-07-14','2020-07-14',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,159,2,'2020-07-13','2020-07-13','2021-07-12','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,188,1,'2020-07-12','2020-07-12','2022-07-11','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,67,2,'2020-07-11','2020-07-11','2021-07-10','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,80,1,'2018-04-03','2018-04-03','2020-04-02','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,17,2,'2020-07-09','2020-07-09','2021-07-08','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,131,1,'2020-07-08','2020-07-08','2022-07-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,7,2,'2020-07-07','2020-07-07','2021-07-06','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,161,1,'2020-07-06','2020-07-06','2022-07-05','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,95,2,'2019-07-05','2019-07-05','2020-07-04','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,41,1,'2020-07-04','2020-07-04','2022-07-03','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,99,3,'2020-07-03','2020-07-03',NULL,'Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,20,1,'2020-07-02','2020-07-02','2022-07-01','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,134,2,'2020-07-01','2020-07-01','2021-06-30','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,195,1,'2018-01-13','2018-01-13','2020-01-12','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,74,2,'2020-06-29','2020-06-29','2021-06-28','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,164,1,'2020-06-28','2020-06-28','2022-06-27','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,13,2,'2020-06-27','2020-06-27','2021-06-26','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,78,1,'2020-06-26','2020-06-26','2022-06-25','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,156,2,'2019-06-25','2019-06-25','2020-06-24','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -917,7 +917,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_log` WRITE; /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */; -INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES (1,23,1,'2020-05-19','2022-05-18',4,'2020-06-10',1,NULL),(2,3,1,'2020-06-08','2022-06-07',9,'2020-06-10',1,NULL),(3,12,1,'2020-05-30','2021-05-29',10,'2020-06-10',2,NULL),(4,15,3,'2018-02-18','2020-02-17',12,'2020-06-10',1,NULL),(5,24,1,'2020-05-18','2021-05-17',15,'2020-06-10',2,NULL),(6,19,1,'2020-05-23','2022-05-22',18,'2020-06-10',1,NULL),(7,28,1,'2020-05-14','2021-05-13',32,'2020-06-10',2,NULL),(8,17,1,'2020-05-25','2022-05-24',41,'2020-06-10',1,NULL),(9,9,1,'2020-06-02','2022-06-01',52,'2020-06-10',1,NULL),(10,7,1,'2020-06-04','2022-06-03',59,'2020-06-10',1,NULL),(11,27,1,'2020-05-15','2022-05-14',62,'2020-06-10',1,NULL),(12,13,1,'2020-05-29','2022-05-28',73,'2020-06-10',1,NULL),(13,18,1,'2020-05-24','2021-05-23',81,'2020-06-10',2,NULL),(14,25,3,'2017-11-30','2019-11-29',92,'2020-06-10',1,NULL),(15,22,1,'2020-05-20',NULL,98,'2020-06-10',3,NULL),(16,30,4,'2019-05-12','2020-05-11',107,'2020-06-10',2,NULL),(17,8,1,'2020-06-03','2021-06-02',109,'2020-06-10',2,NULL),(18,16,1,'2020-05-26','2021-05-25',110,'2020-06-10',2,NULL),(19,20,4,'2019-05-22','2020-05-21',112,'2020-06-10',2,NULL),(20,29,1,'2020-05-13','2022-05-12',117,'2020-06-10',1,NULL),(21,21,1,'2020-05-21','2022-05-20',126,'2020-06-10',1,NULL),(22,26,1,'2020-05-16','2021-05-15',134,'2020-06-10',2,NULL),(23,11,1,'2020-05-31',NULL,147,'2020-06-10',3,NULL),(24,5,3,'2018-05-09','2020-05-08',154,'2020-06-10',1,NULL),(25,1,1,'2020-06-10','2022-06-09',158,'2020-06-10',1,NULL),(26,2,1,'2020-06-09','2021-06-08',164,'2020-06-10',2,NULL),(27,6,1,'2020-06-05','2021-06-04',173,'2020-06-10',2,NULL),(28,4,1,'2020-06-07','2021-06-06',174,'2020-06-10',2,NULL),(29,10,3,'2018-03-30','2020-03-29',185,'2020-06-10',1,NULL),(30,14,1,'2020-05-28','2021-05-27',190,'2020-06-10',2,NULL); +INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES (1,4,1,'2020-07-21','2021-07-20',5,'2020-07-24',2,NULL),(2,18,1,'2020-07-07','2021-07-06',7,'2020-07-24',2,NULL),(3,5,3,'2018-06-22','2020-06-21',12,'2020-07-24',1,NULL),(4,28,1,'2020-06-27','2021-06-26',13,'2020-07-24',2,NULL),(5,16,1,'2020-07-09','2021-07-08',17,'2020-07-24',2,NULL),(6,23,1,'2020-07-02','2022-07-01',20,'2020-07-24',1,NULL),(7,8,1,'2020-07-17','2021-07-16',39,'2020-07-24',2,NULL),(8,21,1,'2020-07-04','2022-07-03',41,'2020-07-24',1,NULL),(9,10,3,'2018-05-13','2020-05-12',63,'2020-07-24',1,NULL),(10,14,1,'2020-07-11','2021-07-10',67,'2020-07-24',2,NULL),(11,26,1,'2020-06-29','2021-06-28',74,'2020-07-24',2,NULL),(12,29,1,'2020-06-26','2022-06-25',78,'2020-07-24',1,NULL),(13,15,3,'2018-04-03','2020-04-02',80,'2020-07-24',1,NULL),(14,20,4,'2019-07-05','2020-07-04',95,'2020-07-24',2,NULL),(15,22,1,'2020-07-03',NULL,99,'2020-07-24',3,NULL),(16,1,1,'2020-07-24','2022-07-23',103,'2020-07-24',1,NULL),(17,6,1,'2020-07-19','2021-07-18',108,'2020-07-24',2,NULL),(18,9,1,'2020-07-16','2022-07-15',127,'2020-07-24',1,NULL),(19,17,1,'2020-07-08','2022-07-07',131,'2020-07-24',1,NULL),(20,2,1,'2020-07-23','2021-07-22',132,'2020-07-24',2,NULL),(21,24,1,'2020-07-01','2021-06-30',134,'2020-07-24',2,NULL),(22,11,1,'2020-07-14',NULL,145,'2020-07-24',3,NULL),(23,30,4,'2019-06-25','2020-06-24',156,'2020-07-24',2,NULL),(24,12,1,'2020-07-13','2021-07-12',159,'2020-07-24',2,NULL),(25,19,1,'2020-07-06','2022-07-05',161,'2020-07-24',1,NULL),(26,27,1,'2020-06-28','2022-06-27',164,'2020-07-24',1,NULL),(27,7,1,'2020-07-18','2022-07-17',173,'2020-07-24',1,NULL),(28,3,1,'2020-07-22','2022-07-21',179,'2020-07-24',1,NULL),(29,13,1,'2020-07-12','2022-07-11',188,'2020-07-24',1,NULL),(30,25,3,'2018-01-13','2020-01-12',195,'2020-07-24',1,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -957,7 +957,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_menu` WRITE; /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */; -INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES (1,1,'civicrm/ajax/api4',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(2,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(3,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(4,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(5,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(6,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(7,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(9,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(11,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(12,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(13,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),(14,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(15,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/tag',NULL,'Tags (Categories)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,25,1,0,NULL,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(17,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(18,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(19,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(20,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(21,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(22,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(23,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(24,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(25,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(26,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(27,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(28,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(29,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(30,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(31,1,'civicrm/contact/search/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(32,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Page_CustomSearch\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(33,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(34,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(35,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(36,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(37,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(38,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(39,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(40,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(41,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(42,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(43,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(44,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(45,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(46,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(47,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(48,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(49,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(50,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(51,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(52,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(53,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(54,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(55,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(56,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(57,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(58,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(59,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(60,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(61,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(62,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(63,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(64,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(65,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(66,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(67,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(68,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(69,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(70,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"dashboard\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(71,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(72,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(73,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(74,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(75,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(76,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(77,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(78,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,105,1,0,NULL,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),(79,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(80,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(81,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(82,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(83,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(84,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(85,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(86,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(87,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(88,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(89,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(90,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(91,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(92,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(93,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,362,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(94,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(95,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(96,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(97,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(98,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(99,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(100,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(101,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(102,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(103,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(104,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(105,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(106,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(107,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(108,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(109,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(110,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(111,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(112,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(113,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(114,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(115,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(116,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(117,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(118,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(119,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(120,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(121,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(122,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(123,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(124,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,35,1,0,NULL,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(125,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(126,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,45,1,0,NULL,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(127,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(128,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,55,1,0,NULL,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(129,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(130,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(131,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(132,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(133,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(134,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(135,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,95,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(136,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(137,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(138,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(139,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(140,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(141,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(142,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(143,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(144,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(145,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(146,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(147,1,'civicrm/admin/labelFormats',NULL,'Label Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(148,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(149,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(150,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(151,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(152,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(153,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(154,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(155,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(156,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),(157,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),(158,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(159,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),(160,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(161,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(162,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(163,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(164,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(165,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(166,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(167,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(168,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(169,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(170,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(171,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(172,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(173,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(174,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(175,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(176,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,130,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(177,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(178,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(179,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(180,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(181,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(182,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1370,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(183,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1380,1,0,NULL,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),(184,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),(185,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(186,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(187,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(188,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(189,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(190,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),(191,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),(192,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(193,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(194,1,'civicrm/ajax/mapping',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,1,'civicrm/ajax/recipientListing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(196,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,500,1,0,NULL,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(197,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(198,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(199,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,399,1,0,NULL,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(200,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(201,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(202,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(203,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(205,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(207,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(210,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(213,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(214,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(215,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(217,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,1,'civicrm/ajax/apiexample',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(222,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(226,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(227,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(228,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(230,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(234,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,1,'civicrm/ajax/l10n-js',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(240,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(241,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(242,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(243,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(244,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(245,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(246,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(247,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(248,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(249,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(250,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(253,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(254,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(255,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(256,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(257,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(258,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(259,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(260,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(261,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,375,1,0,NULL,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(262,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(263,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(264,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(265,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,398,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(266,1,'civicrm/admin/options/conference_slot',NULL,'Conference Slot Labels','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(267,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(268,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(269,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(270,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(271,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(272,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(273,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(274,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(275,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(276,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(277,1,'civicrm/event/manage/conference',NULL,'Conference Slots','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:37:\"CRM_Event_Form_ManageEvent_Conference\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(278,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(279,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(280,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(281,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(282,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(283,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(284,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(285,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(286,1,'civicrm/ajax/event/add_participant_to_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(287,1,'civicrm/ajax/event/remove_participant_from_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(288,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:29:\"CRM_Event_Cart_Page_AddToCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(289,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Controller_Checkout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(290,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(291,1,'civicrm/event/view_cart',NULL,'View Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Cart_Page_ViewCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(292,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(293,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(294,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(295,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(296,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(297,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(298,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(299,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(300,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,360,1,0,NULL,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(301,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(302,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(303,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(304,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(305,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(306,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(307,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(308,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(309,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(310,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(311,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,365,1,0,NULL,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(312,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(313,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(314,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(315,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(316,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(317,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(318,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(319,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(320,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(321,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(322,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(323,1,'civicrm/contribute/import',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(324,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(325,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(326,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(329,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(330,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(331,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(332,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(333,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(334,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(335,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(336,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(337,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(338,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(339,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(340,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(341,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(342,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(343,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(344,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(345,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(346,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(347,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(348,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(349,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(350,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(351,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(352,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(353,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(354,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(355,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(356,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(357,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(358,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(359,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(360,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(361,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(362,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(363,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(364,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(365,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(366,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(367,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(368,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(369,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(370,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(371,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(372,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(373,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(374,1,'civicrm/mailing/queue',NULL,'Sending Mail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(375,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(376,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(377,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(378,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(379,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(380,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(381,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(382,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(383,1,'civicrm/grant',NULL,'CiviGrant Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(384,1,'civicrm/grant/info',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(385,1,'civicrm/grant/search',NULL,'Find Grants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(386,1,'civicrm/grant/add','action=add','New Grant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(387,1,'civicrm/contact/view/grant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(388,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(389,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(390,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(391,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(392,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(393,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(394,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(395,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(396,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(397,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(400,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(401,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(402,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(403,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(404,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(405,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(406,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(407,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(408,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(409,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(410,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(411,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(413,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(414,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(415,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(416,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(417,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(418,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(419,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(420,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(421,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(422,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(423,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(424,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(425,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(430,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,2,1,0,NULL,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(431,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,3,1,0,NULL,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(432,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,4,1,0,NULL,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(433,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(434,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(435,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(436,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(437,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(438,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(439,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(440,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(441,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(442,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(443,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(444,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(445,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:15:\"Tags_Categories\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:18:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:46:\"/civicrm/admin/options/conference_slot?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:32:\"Configure email account setting.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}'); +INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES (1,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(2,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(3,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(4,1,'civicrm/ajax/api4',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(5,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(6,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(7,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(9,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(11,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(12,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(13,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(14,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(15,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(17,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(18,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,362,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(19,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(20,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(21,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(22,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(23,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(24,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(25,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(26,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(27,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(28,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(29,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(30,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(31,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(32,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(33,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(34,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(35,1,'civicrm/ajax/apiexample',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(36,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(37,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(38,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(39,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(40,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(41,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(42,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(43,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(44,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(45,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(46,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(47,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(48,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(49,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(50,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(51,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(52,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(53,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(54,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(55,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(56,1,'civicrm/ajax/l10n-js',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(57,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(58,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(59,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(60,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(61,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(62,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(63,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(64,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(65,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(66,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(67,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(68,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(69,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(70,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(71,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(72,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(73,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(74,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(75,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(76,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(77,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(78,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(79,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(80,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(81,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(82,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(83,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(84,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(85,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(86,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(87,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(88,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(89,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(90,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(91,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(92,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(93,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(94,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(95,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,35,1,0,NULL,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(96,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(97,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,45,1,0,NULL,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(98,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(99,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,55,1,0,NULL,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(100,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(101,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(102,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(103,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(104,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(105,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(106,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,95,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(107,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(108,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(109,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(110,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(111,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(112,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(113,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(114,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(115,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(116,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(117,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(118,1,'civicrm/admin/labelFormats',NULL,'Label Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(119,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(120,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(121,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(122,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(123,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(124,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(125,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(126,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(127,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),(128,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),(129,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(130,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),(131,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(132,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(133,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(134,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(135,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(136,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(137,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(138,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(139,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(140,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(141,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(142,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(143,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(144,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(145,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(146,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(147,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,130,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(148,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(149,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(150,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(151,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(152,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(153,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1370,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(154,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1380,1,0,NULL,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),(155,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),(156,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(157,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(158,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(159,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(160,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(161,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),(162,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),(163,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(164,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(165,1,'civicrm/ajax/mapping',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(166,1,'civicrm/ajax/recipientListing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(167,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,500,1,0,NULL,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(168,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(169,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(170,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,399,1,0,NULL,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(171,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(172,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(173,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(174,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(175,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(176,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(177,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(178,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(179,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(180,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(181,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(182,1,'civicrm/contact/search/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(183,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Page_CustomSearch\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(184,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(185,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(186,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(187,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(188,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(189,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(190,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(191,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(192,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(193,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(194,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(196,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(197,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(198,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(199,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(200,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(201,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(202,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(203,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(205,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(207,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(210,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(213,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(214,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(215,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(217,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"dashboard\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(222,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(226,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(227,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(228,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,105,1,0,NULL,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),(230,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(234,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(240,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(241,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(242,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(243,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(244,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),(245,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(246,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(247,1,'civicrm/tag',NULL,'Tags (Categories)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,25,1,0,NULL,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(248,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(249,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(250,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(253,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(254,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(255,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(256,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(257,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(258,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(259,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(260,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(261,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(262,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(263,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(264,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,375,1,0,NULL,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(265,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(266,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(267,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(268,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,398,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(269,1,'civicrm/admin/options/conference_slot',NULL,'Conference Slot Labels','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(270,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(271,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(272,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(273,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(274,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(275,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(276,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(277,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(278,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(279,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(280,1,'civicrm/event/manage/conference',NULL,'Conference Slots','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:37:\"CRM_Event_Form_ManageEvent_Conference\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(281,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(282,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(283,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(284,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(285,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(286,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(287,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(288,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(289,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(290,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(291,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(292,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(293,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(294,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(295,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(296,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,360,1,0,NULL,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(297,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(298,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(299,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(300,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(301,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(302,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(303,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(304,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(305,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(306,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(307,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,365,1,0,NULL,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(308,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(309,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(310,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(311,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(312,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(313,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(314,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(315,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(316,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(317,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(318,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(319,1,'civicrm/contribute/import',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(320,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(321,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(322,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(323,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(324,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(325,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(326,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(329,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(330,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(331,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(332,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(333,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(334,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(335,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(336,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(337,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(338,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(339,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(340,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(341,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(342,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(343,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(344,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(345,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(346,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(347,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(348,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(349,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(350,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(351,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(352,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(353,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(354,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(355,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(356,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(357,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(358,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(359,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(360,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(361,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(362,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(363,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(364,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(365,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(366,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(367,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(368,1,'civicrm/mailing/queue',NULL,'Sending Mail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(369,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(370,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(371,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(372,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(373,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(374,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(375,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(376,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(377,1,'civicrm/grant',NULL,'CiviGrant Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(378,1,'civicrm/grant/info',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(379,1,'civicrm/grant/search',NULL,'Find Grants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(380,1,'civicrm/grant/add','action=add','New Grant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(381,1,'civicrm/contact/view/grant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(382,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(383,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(384,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(385,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(386,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(387,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(388,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(389,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(390,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(391,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(392,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(393,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(394,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(395,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(396,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(397,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(400,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(401,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(402,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(403,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(404,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(405,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(406,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(407,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(408,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(409,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(410,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(411,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(413,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(414,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(415,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(416,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(417,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(418,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(419,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(420,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(421,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(422,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(423,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(424,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,2,1,0,NULL,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(425,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,3,1,0,NULL,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,4,1,0,NULL,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(430,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(431,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(432,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(433,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(434,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(435,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(436,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(437,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(438,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(439,1,'civicrm/ajax/event/add_participant_to_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(440,1,'civicrm/ajax/event/remove_participant_from_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(441,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:29:\"CRM_Event_Cart_Page_AddToCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(442,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Controller_Checkout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(443,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(444,1,'civicrm/event/view_cart',NULL,'View Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Cart_Page_ViewCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(445,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:15:\"Tags_Categories\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:18:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:46:\"/civicrm/admin/options/conference_slot?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:32:\"Configure email account setting.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -987,7 +987,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_note` WRITE; /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */; -INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',111,'Organize the Terry Fox run',1,'2020-03-15 13:56:17',NULL,'0'),(2,'civicrm_contact',180,'Invite members for the Steve Prefontaine 10k dream run',1,'2019-12-27 08:16:05',NULL,'0'),(3,'civicrm_contact',144,'Reminder screening of \"Black\" on next Friday',1,'2019-08-13 00:36:17',NULL,'0'),(4,'civicrm_contact',144,'Invite members for the Steve Prefontaine 10k dream run',1,'2019-12-08 18:56:53',NULL,'0'),(5,'civicrm_contact',37,'Send newsletter for April 2005',1,'2019-06-27 07:32:14',NULL,'0'),(6,'civicrm_contact',90,'Contact the Commissioner of Charities',1,'2020-05-17 06:21:42',NULL,'0'),(7,'civicrm_contact',76,'Reminder screening of \"Black\" on next Friday',1,'2019-06-30 09:38:54',NULL,'0'),(8,'civicrm_contact',80,'Contact the Commissioner of Charities',1,'2019-12-30 12:22:47',NULL,'0'),(9,'civicrm_contact',129,'Contact the Commissioner of Charities',1,'2019-11-03 06:00:26',NULL,'0'),(10,'civicrm_contact',114,'Organize the Terry Fox run',1,'2019-10-21 16:48:05',NULL,'0'),(11,'civicrm_contact',194,'Get the registration done for NGO status',1,'2019-07-15 09:46:22',NULL,'0'),(12,'civicrm_contact',129,'Send newsletter for April 2005',1,'2019-09-25 20:24:51',NULL,'0'),(13,'civicrm_contact',90,'Send reminder for annual dinner',1,'2019-12-18 08:59:41',NULL,'0'),(14,'civicrm_contact',71,'Arrange collection of funds from members',1,'2019-07-15 18:17:01',NULL,'0'),(15,'civicrm_contact',93,'Get the registration done for NGO status',1,'2020-05-07 01:26:49',NULL,'0'),(16,'civicrm_contact',151,'Get the registration done for NGO status',1,'2019-09-06 03:53:33',NULL,'0'),(17,'civicrm_contact',180,'Contact the Commissioner of Charities',1,'2019-12-14 07:56:34',NULL,'0'),(18,'civicrm_contact',36,'Send reminder for annual dinner',1,'2019-08-07 14:15:32',NULL,'0'),(19,'civicrm_contact',186,'Reminder screening of \"Black\" on next Friday',1,'2020-02-14 02:41:51',NULL,'0'),(20,'civicrm_contact',126,'Arrange for cricket match with Sunil Gavaskar',1,'2020-04-23 20:03:44',NULL,'0'); +INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',28,'Send newsletter for April 2005',1,'2019-09-02 00:41:40',NULL,'0'),(2,'civicrm_contact',107,'Arrange collection of funds from members',1,'2019-09-09 01:52:24',NULL,'0'),(3,'civicrm_contact',55,'Arrange for cricket match with Sunil Gavaskar',1,'2020-03-17 05:55:57',NULL,'0'),(4,'civicrm_contact',127,'Arrange for cricket match with Sunil Gavaskar',1,'2020-01-06 16:42:05',NULL,'0'),(5,'civicrm_contact',11,'Get the registration done for NGO status',1,'2020-03-14 21:36:20',NULL,'0'),(6,'civicrm_contact',31,'Arrange for cricket match with Sunil Gavaskar',1,'2020-01-15 12:34:59',NULL,'0'),(7,'civicrm_contact',9,'Get the registration done for NGO status',1,'2020-04-04 16:34:03',NULL,'0'),(8,'civicrm_contact',156,'Organize the Terry Fox run',1,'2020-06-11 17:14:32',NULL,'0'),(9,'civicrm_contact',184,'Organize the Terry Fox run',1,'2019-08-28 14:26:46',NULL,'0'),(10,'civicrm_contact',145,'Connect for presentation',1,'2020-04-11 06:37:49',NULL,'0'),(11,'civicrm_contact',142,'Get the registration done for NGO status',1,'2019-12-25 10:02:53',NULL,'0'),(12,'civicrm_contact',171,'Send reminder for annual dinner',1,'2020-01-31 09:23:45',NULL,'0'),(13,'civicrm_contact',134,'Connect for presentation',1,'2019-08-12 07:42:08',NULL,'0'),(14,'civicrm_contact',111,'Arrange collection of funds from members',1,'2020-06-17 02:20:44',NULL,'0'),(15,'civicrm_contact',50,'Arrange for cricket match with Sunil Gavaskar',1,'2020-06-25 17:58:48',NULL,'0'),(16,'civicrm_contact',122,'Contact the Commissioner of Charities',1,'2020-02-03 07:57:20',NULL,'0'),(17,'civicrm_contact',118,'Contact the Commissioner of Charities',1,'2020-07-15 08:44:29',NULL,'0'),(18,'civicrm_contact',71,'Get the registration done for NGO status',1,'2019-12-13 18:51:30',NULL,'0'),(19,'civicrm_contact',131,'Chart out route map for next 10k run',1,'2020-02-17 08:34:21',NULL,'0'),(20,'civicrm_contact',71,'Send newsletter for April 2005',1,'2019-08-13 01:44:38',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -1016,7 +1016,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_option_value` WRITE; /*!40000 ALTER TABLE `civicrm_option_value` DISABLE KEYS */; -INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `domain_id`, `visibility_id`, `icon`, `color`) VALUES (1,1,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(2,1,'Email','2','Email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(3,1,'Postal Mail','3','Postal Mail',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(4,1,'SMS','4','SMS',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(5,1,'Fax','5','Fax',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(6,2,'Meeting','1','Meeting',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,'fa-slideshare',NULL),(7,2,'Phone Call','2','Phone Call',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,'fa-phone',NULL),(8,2,'Email','3','Email',NULL,1,NULL,3,'Email sent.',0,1,1,NULL,NULL,NULL,'fa-envelope-o',NULL),(9,2,'Outbound SMS','4','SMS',NULL,1,NULL,4,'Text message (SMS) sent.',0,1,1,NULL,NULL,NULL,'fa-mobile',NULL),(10,2,'Event Registration','5','Event Registration',NULL,1,NULL,5,'Online or offline event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(11,2,'Contribution','6','Contribution',NULL,1,NULL,6,'Online or offline contribution.',0,1,1,2,NULL,NULL,NULL,NULL),(12,2,'Membership Signup','7','Membership Signup',NULL,1,NULL,7,'Online or offline membership signup.',0,1,1,3,NULL,NULL,NULL,NULL),(13,2,'Membership Renewal','8','Membership Renewal',NULL,1,NULL,8,'Online or offline membership renewal.',0,1,1,3,NULL,NULL,NULL,NULL),(14,2,'Tell a Friend','9','Tell a Friend',NULL,1,NULL,9,'Send information about a contribution campaign or event to a friend.',0,1,1,NULL,NULL,NULL,NULL,NULL),(15,2,'Pledge Acknowledgment','10','Pledge Acknowledgment',NULL,1,NULL,10,'Send Pledge Acknowledgment.',0,1,1,6,NULL,NULL,NULL,NULL),(16,2,'Pledge Reminder','11','Pledge Reminder',NULL,1,NULL,11,'Send Pledge Reminder.',0,1,1,6,NULL,NULL,NULL,NULL),(17,2,'Inbound Email','12','Inbound Email',NULL,1,NULL,12,'Inbound Email.',0,1,1,NULL,NULL,NULL,NULL,NULL),(18,2,'Open Case','13','Open Case',NULL,0,0,13,'',0,1,1,7,NULL,NULL,'fa-folder-open-o',NULL),(19,2,'Follow up','14','Follow up',NULL,0,0,14,'',0,1,1,7,NULL,NULL,'fa-share-square-o',NULL),(20,2,'Change Case Type','15','Change Case Type',NULL,0,0,15,'',0,1,1,7,NULL,NULL,'fa-random',NULL),(21,2,'Change Case Status','16','Change Case Status',NULL,0,0,16,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(22,2,'Change Case Subject','53','Change Case Subject',NULL,0,0,53,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(23,2,'Change Custom Data','33','Change Custom Data',NULL,0,0,33,'',0,1,1,7,NULL,NULL,'fa-table',NULL),(24,2,'Membership Renewal Reminder','17','Membership Renewal Reminder',NULL,1,NULL,17,'offline membership renewal reminder.',0,1,1,3,NULL,NULL,NULL,NULL),(25,2,'Change Case Start Date','18','Change Case Start Date',NULL,0,0,18,'',0,1,1,7,NULL,NULL,'fa-calendar',NULL),(26,2,'Bulk Email','19','Bulk Email',NULL,1,NULL,19,'Bulk Email Sent.',0,1,1,NULL,NULL,NULL,NULL,NULL),(27,2,'Assign Case Role','20','Assign Case Role',NULL,0,0,20,'',0,1,1,7,NULL,NULL,'fa-user-plus',NULL),(28,2,'Remove Case Role','21','Remove Case Role',NULL,0,0,21,'',0,1,1,7,NULL,NULL,'fa-user-times',NULL),(29,2,'Print/Merge Document','22','Print PDF Letter',NULL,0,NULL,22,'Export letters and other printable documents.',0,1,1,NULL,NULL,NULL,'fa-file-pdf-o',NULL),(30,2,'Merge Case','23','Merge Case',NULL,0,NULL,23,'',0,1,1,7,NULL,NULL,'fa-compress',NULL),(31,2,'Reassigned Case','24','Reassigned Case',NULL,0,NULL,24,'',0,1,1,7,NULL,NULL,'fa-user-circle-o',NULL),(32,2,'Link Cases','25','Link Cases',NULL,0,NULL,25,'',0,1,1,7,NULL,NULL,'fa-link',NULL),(33,2,'Change Case Tags','26','Change Case Tags',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-tags',NULL),(34,2,'Add Client To Case','27','Add Client To Case',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-users',NULL),(35,2,'Survey','28','Survey',NULL,0,0,27,'',0,1,1,9,NULL,NULL,NULL,NULL),(36,2,'Canvass','29','Canvass',NULL,0,0,28,'',0,1,1,9,NULL,NULL,NULL,NULL),(37,2,'PhoneBank','30','PhoneBank',NULL,0,0,29,'',0,1,1,9,NULL,NULL,NULL,NULL),(38,2,'WalkList','31','WalkList',NULL,0,0,30,'',0,1,1,9,NULL,NULL,NULL,NULL),(39,2,'Petition Signature','32','Petition',NULL,0,0,31,'',0,1,1,9,NULL,NULL,NULL,NULL),(40,2,'Mass SMS','34','Mass SMS',NULL,1,NULL,34,'Mass SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(41,2,'Change Membership Status','35','Change Membership Status',NULL,1,NULL,35,'Change Membership Status.',0,1,1,3,NULL,NULL,NULL,NULL),(42,2,'Change Membership Type','36','Change Membership Type',NULL,1,NULL,36,'Change Membership Type.',0,1,1,3,NULL,NULL,NULL,NULL),(43,2,'Cancel Recurring Contribution','37','Cancel Recurring Contribution',NULL,1,0,37,'',0,1,1,2,NULL,NULL,NULL,NULL),(44,2,'Update Recurring Contribution Billing Details','38','Update Recurring Contribution Billing Details',NULL,1,0,38,'',0,1,1,2,NULL,NULL,NULL,NULL),(45,2,'Update Recurring Contribution','39','Update Recurring Contribution',NULL,1,0,39,'',0,1,1,2,NULL,NULL,NULL,NULL),(46,2,'Reminder Sent','40','Reminder Sent',NULL,1,0,40,'',0,1,1,NULL,NULL,NULL,NULL,NULL),(47,2,'Export Accounting Batch','41','Export Accounting Batch',NULL,1,0,41,'Export Accounting Batch',0,1,1,2,NULL,NULL,NULL,NULL),(48,2,'Create Batch','42','Create Batch',NULL,1,0,42,'Create Batch',0,1,1,2,NULL,NULL,NULL,NULL),(49,2,'Edit Batch','43','Edit Batch',NULL,1,0,43,'Edit Batch',0,1,1,2,NULL,NULL,NULL,NULL),(50,2,'SMS delivery','44','SMS delivery',NULL,1,NULL,44,'SMS delivery',0,1,1,NULL,NULL,NULL,NULL,NULL),(51,2,'Inbound SMS','45','Inbound SMS',NULL,1,NULL,45,'Inbound SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(52,2,'Payment','46','Payment',NULL,1,NULL,46,'Additional payment recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(53,2,'Refund','47','Refund',NULL,1,NULL,47,'Refund recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(54,2,'Change Registration','48','Change Registration',NULL,1,NULL,48,'Changes to an existing event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(55,2,'Downloaded Invoice','49','Downloaded Invoice',NULL,1,NULL,49,'Downloaded Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(56,2,'Emailed Invoice','50','Emailed Invoice',NULL,1,NULL,50,'Emailed Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(57,2,'Contact Merged','51','Contact Merged',NULL,1,NULL,51,'Contact Merged',0,1,1,NULL,NULL,NULL,NULL,NULL),(58,2,'Contact Deleted by Merge','52','Contact Deleted by Merge',NULL,1,NULL,52,'Contact was merged into another contact',0,1,1,NULL,NULL,NULL,NULL,NULL),(59,2,'Failed Payment','54','Failed Payment',NULL,1,0,54,'Failed Payment',0,1,1,2,NULL,NULL,NULL,NULL),(60,3,'Female','1','Female',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(61,3,'Male','2','Male',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(62,3,'Other','3','Other',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(63,4,'Yahoo','1','Yahoo',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(64,4,'MSN','2','Msn',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(65,4,'AIM','3','Aim',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(66,4,'GTalk','4','Gtalk',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(67,4,'Jabber','5','Jabber',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(68,4,'Skype','6','Skype',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(69,5,'Sprint','1','Sprint',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(70,5,'Verizon','2','Verizon',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(71,5,'Cingular','3','Cingular',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(72,6,'Mrs.','1','Mrs.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(73,6,'Ms.','2','Ms.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(74,6,'Mr.','3','Mr.',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(75,6,'Dr.','4','Dr.',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(76,7,'Jr.','1','Jr.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(77,7,'Sr.','2','Sr.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(78,7,'II','3','II',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(79,7,'III','4','III',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(80,7,'IV','5','IV',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(81,7,'V','6','V',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(82,7,'VI','7','VI',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(83,7,'VII','8','VII',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(84,8,'Administrator','1','Admin',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(85,8,'Authenticated','2','Auth',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(86,9,'Visa','1','Visa',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(87,9,'MasterCard','2','MasterCard',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(88,9,'Amex','3','Amex',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(89,9,'Discover','4','Discover',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(90,10,'Credit Card','1','Credit Card',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(91,10,'Debit Card','2','Debit Card',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(92,10,'Cash','3','Cash',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(93,10,'Check','4','Check',NULL,0,1,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(94,10,'EFT','5','EFT',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(95,11,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(96,11,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(97,11,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(98,11,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(99,11,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(100,11,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(101,11,'Refunded','7','Refunded',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(102,11,'Partially paid','8','Partially paid',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(103,11,'Pending refund','9','Pending refund',NULL,0,NULL,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(104,11,'Chargeback','10','Chargeback',NULL,0,NULL,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(105,11,'Template','11','Template',NULL,0,NULL,11,'Status for contribution records which represent a template for a recurring contribution rather than an actual contribution. This status is transitional, to ensure that said contributions don\\\'t appear in reports. The is_template field is the preferred way to find and filter these contributions.',0,1,1,NULL,NULL,NULL,NULL,NULL),(106,12,'Waiting Review','1','Waiting Review',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(107,12,'Approved','2','Approved',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(108,12,'Not Approved','3','Not Approved',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(109,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(110,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(111,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(112,14,'Attendee','1','Attendee',NULL,1,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(113,14,'Volunteer','2','Volunteer',NULL,1,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(114,14,'Host','3','Host',NULL,1,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(115,14,'Speaker','4','Speaker',NULL,1,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(116,15,'Conference','1','Conference',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(117,15,'Exhibition','2','Exhibition',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(118,15,'Fundraiser','3','Fundraiser',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(119,15,'Meeting','4','Meeting',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(120,15,'Performance','5','Performance',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(121,15,'Workshop','6','Workshop',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(122,16,'Activities','1','activity',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(123,16,'Relationships','2','rel',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(124,16,'Groups','3','group',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(125,16,'Notes','4','note',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(126,16,'Tags','5','tag',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(127,16,'Change Log','6','log',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(128,16,'Contributions','7','CiviContribute',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(129,16,'Memberships','8','CiviMember',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(130,16,'Events','9','CiviEvent',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(131,16,'Cases','10','CiviCase',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(132,16,'Grants','11','CiviGrant',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(133,16,'Pledges','13','CiviPledge',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(134,16,'Mailings','14','CiviMail',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(135,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(136,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(137,17,'Hide Smart Groups','3','hide',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(138,18,'Custom Data','1','CustomData',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(139,18,'Address','2','Address',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(140,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(141,18,'Notes','4','Notes',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(142,18,'Demographics','5','Demographics',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(143,18,'Tags and Groups','6','TagsAndGroups',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(144,18,'Email','7','Email',NULL,1,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(145,18,'Phone','8','Phone',NULL,1,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(146,18,'Instant Messenger','9','IM',NULL,1,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(147,18,'Open ID','10','OpenID',NULL,1,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(148,18,'Website','11','Website',NULL,1,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(149,18,'Prefix','12','Prefix',NULL,2,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(150,18,'Formal Title','13','Formal Title',NULL,2,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(151,18,'First Name','14','First Name',NULL,2,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(152,18,'Middle Name','15','Middle Name',NULL,2,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(153,18,'Last Name','16','Last Name',NULL,2,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(154,18,'Suffix','17','Suffix',NULL,2,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(155,19,'Address Fields','1','location',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(156,19,'Custom Fields','2','custom',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(157,19,'Activities','3','activity',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(158,19,'Relationships','4','relationship',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(159,19,'Notes','5','notes',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(160,19,'Change Log','6','changeLog',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(161,19,'Contributions','7','CiviContribute',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(162,19,'Memberships','8','CiviMember',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(163,19,'Events','9','CiviEvent',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(164,19,'Cases','10','CiviCase',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(165,19,'Grants','12','CiviGrant',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(166,19,'Demographics','13','demographics',NULL,0,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(167,19,'Pledges','15','CiviPledge',NULL,0,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(168,19,'Contact Type','16','contactType',NULL,0,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(169,19,'Groups','17','groups',NULL,0,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(170,19,'Tags','18','tags',NULL,0,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(171,19,'Mailing','19','CiviMail',NULL,0,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(172,20,'Groups','1','Groups',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(173,20,'Contributions','2','CiviContribute',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(174,20,'Memberships','3','CiviMember',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(175,20,'Events','4','CiviEvent',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(176,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(177,20,'Pledges','7','CiviPledge',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(178,20,'Personal Campaign Pages','8','PCP',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(179,20,'Assigned Activities','9','Assigned Activities',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(180,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(181,45,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(182,45,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(183,45,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(184,45,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(185,45,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(186,45,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(187,45,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(188,46,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(189,46,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(190,46,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(191,46,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(192,46,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(193,46,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(194,46,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(195,21,'Street Address','1','street_address',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(196,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(197,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(198,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(199,21,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(200,21,'Postal Code','6','postal_code',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(201,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(202,21,'County','8','county',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(203,21,'State/Province','9','state_province',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(204,21,'Country','10','country',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(205,21,'Latitude','11','geo_code_1',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(206,21,'Longitude','12','geo_code_2',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(207,21,'Address Name','13','address_name',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(208,21,'Street Address Parsing','14','street_address_parsing',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(209,22,'Access Control','1','Access Control',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(210,22,'Mailing List','2','Mailing List',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(211,23,'Submitted','1','Submitted',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(212,23,'Eligible','2','Eligible',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(213,23,'Ineligible','3','Ineligible',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(214,23,'Paid','4','Paid',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(215,23,'Awaiting Information','5','Awaiting Information',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(216,23,'Withdrawn','6','Withdrawn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(217,23,'Approved for Payment','7','Approved for Payment',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(218,25,'CRM_Contact_Form_Search_Custom_Sample','1','CRM_Contact_Form_Search_Custom_Sample',NULL,0,NULL,1,'Household Name and State',0,0,1,NULL,NULL,NULL,NULL,NULL),(219,25,'CRM_Contact_Form_Search_Custom_ContributionAggregate','2','CRM_Contact_Form_Search_Custom_ContributionAggregate',NULL,0,NULL,2,'Contribution Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(220,25,'CRM_Contact_Form_Search_Custom_Group','4','CRM_Contact_Form_Search_Custom_Group',NULL,0,NULL,4,'Include / Exclude Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(221,25,'CRM_Contact_Form_Search_Custom_PostalMailing','5','CRM_Contact_Form_Search_Custom_PostalMailing',NULL,0,NULL,5,'Postal Mailing',0,0,1,NULL,NULL,NULL,NULL,NULL),(222,25,'CRM_Contact_Form_Search_Custom_Proximity','6','CRM_Contact_Form_Search_Custom_Proximity',NULL,0,NULL,6,'Proximity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(223,25,'CRM_Contact_Form_Search_Custom_EventAggregate','7','CRM_Contact_Form_Search_Custom_EventAggregate',NULL,0,NULL,7,'Event Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(224,25,'CRM_Contact_Form_Search_Custom_ActivitySearch','8','CRM_Contact_Form_Search_Custom_ActivitySearch',NULL,0,NULL,8,'Activity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(225,25,'CRM_Contact_Form_Search_Custom_PriceSet','9','CRM_Contact_Form_Search_Custom_PriceSet',NULL,0,NULL,9,'Price Set Details for Event Participants',0,0,1,NULL,NULL,NULL,NULL,NULL),(226,25,'CRM_Contact_Form_Search_Custom_ZipCodeRange','10','CRM_Contact_Form_Search_Custom_ZipCodeRange',NULL,0,NULL,10,'Zip Code Range',0,0,1,NULL,NULL,NULL,NULL,NULL),(227,25,'CRM_Contact_Form_Search_Custom_DateAdded','11','CRM_Contact_Form_Search_Custom_DateAdded',NULL,0,NULL,11,'Date Added to CiviCRM',0,0,1,NULL,NULL,NULL,NULL,NULL),(228,25,'CRM_Contact_Form_Search_Custom_MultipleValues','12','CRM_Contact_Form_Search_Custom_MultipleValues',NULL,0,NULL,12,'Custom Group Multiple Values Listing',0,0,1,NULL,NULL,NULL,NULL,NULL),(229,25,'CRM_Contact_Form_Search_Custom_ContribSYBNT','13','CRM_Contact_Form_Search_Custom_ContribSYBNT',NULL,0,NULL,13,'Contributions made in Year X and not Year Y',0,0,1,NULL,NULL,NULL,NULL,NULL),(230,25,'CRM_Contact_Form_Search_Custom_TagContributions','14','CRM_Contact_Form_Search_Custom_TagContributions',NULL,0,NULL,14,'Find Contribution Amounts by Tag',0,0,1,NULL,NULL,NULL,NULL,NULL),(231,25,'CRM_Contact_Form_Search_Custom_FullText','15','CRM_Contact_Form_Search_Custom_FullText',NULL,0,NULL,15,'Full-text Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(232,41,'Constituent Report (Summary)','contact/summary','CRM_Report_Form_Contact_Summary',NULL,0,NULL,1,'Provides a list of address and telephone information for constituent records in your system.',0,0,1,NULL,NULL,NULL,NULL,NULL),(233,41,'Constituent Report (Detail)','contact/detail','CRM_Report_Form_Contact_Detail',NULL,0,NULL,2,'Provides contact-related information on contributions, memberships, events and activities.',0,0,1,NULL,NULL,NULL,NULL,NULL),(234,41,'Activity Details Report','activity','CRM_Report_Form_Activity',NULL,0,NULL,3,'Provides a list of constituent activity including activity statistics for one/all contacts during a given date range(required)',0,0,1,NULL,NULL,NULL,NULL,NULL),(235,41,'Walk / Phone List Report','walklist','CRM_Report_Form_Walklist_Walklist',NULL,0,NULL,4,'Provides a detailed report for your walk/phonelist for targeted contacts',0,0,0,NULL,NULL,NULL,NULL,NULL),(236,41,'Current Employer Report','contact/currentEmployer','CRM_Report_Form_Contact_CurrentEmployer',NULL,0,NULL,5,'Provides detail list of employer employee relationships along with employment details Ex Join Date',0,0,1,NULL,NULL,NULL,NULL,NULL),(237,41,'Contribution Summary Report','contribute/summary','CRM_Report_Form_Contribute_Summary',NULL,0,NULL,6,'Groups and totals contributions by criteria including contact, time period, financial type, contributor location, etc.',0,0,1,2,NULL,NULL,NULL,NULL),(238,41,'Contribution Detail Report','contribute/detail','CRM_Report_Form_Contribute_Detail',NULL,0,NULL,7,'Lists specific contributions by criteria including contact, time period, financial type, contributor location, etc. Contribution summary report points to this report for contribution details.',0,0,1,2,NULL,NULL,NULL,NULL),(239,41,'Repeat Contributions Report','contribute/repeat','CRM_Report_Form_Contribute_Repeat',NULL,0,NULL,8,'Given two date ranges, shows contacts who contributed in both the date ranges with the amount contributed in each and the percentage increase / decrease.',0,0,1,2,NULL,NULL,NULL,NULL),(240,41,'Contributions by Organization Report','contribute/organizationSummary','CRM_Report_Form_Contribute_OrganizationSummary',NULL,0,NULL,9,'Displays a detailed list of contributions grouped by organization, which includes contributions made by employees for the organisation.',0,0,1,2,NULL,NULL,NULL,NULL),(241,41,'Contributions by Household Report','contribute/householdSummary','CRM_Report_Form_Contribute_HouseholdSummary',NULL,0,NULL,10,'Displays a detailed list of contributions grouped by household which includes contributions made by members of the household.',0,0,1,2,NULL,NULL,NULL,NULL),(242,41,'Top Donors Report','contribute/topDonor','CRM_Report_Form_Contribute_TopDonor',NULL,0,NULL,11,'Provides a list of the top donors during a time period you define. You can include as many donors as you want (for example, top 100 of your donors).',0,0,1,2,NULL,NULL,NULL,NULL),(243,41,'SYBUNT Report','contribute/sybunt','CRM_Report_Form_Contribute_Sybunt',NULL,0,NULL,12,'SYBUNT means some year(s) but not this year. Provides a list of constituents who donated at some time in the history of your organization but did not donate during the time period you specify.',0,0,1,2,NULL,NULL,NULL,NULL),(244,41,'LYBUNT Report','contribute/lybunt','CRM_Report_Form_Contribute_Lybunt',NULL,0,NULL,13,'LYBUNT means last year but not this year. Provides a list of constituents who donated last year but did not donate during the time period you specify as the current year.',0,0,1,2,NULL,NULL,NULL,NULL),(245,41,'Soft Credit Report','contribute/softcredit','CRM_Report_Form_Contribute_SoftCredit',NULL,0,NULL,14,'Shows contributions made by contacts that have been soft-credited to other contacts.',0,0,1,2,NULL,NULL,NULL,NULL),(246,41,'Membership Report (Summary)','member/summary','CRM_Report_Form_Member_Summary',NULL,0,NULL,15,'Provides a summary of memberships by type and join date.',0,0,1,3,NULL,NULL,NULL,NULL),(247,41,'Membership Report (Detail)','member/detail','CRM_Report_Form_Member_Detail',NULL,0,NULL,16,'Provides a list of members along with their membership status and membership details (Join Date, Start Date, End Date). Can also display contributions (payments) associated with each membership.',0,0,1,3,NULL,NULL,NULL,NULL),(248,41,'Membership Report (Lapsed)','member/lapse','CRM_Report_Form_Member_Lapse',NULL,0,NULL,17,'Provides a list of memberships that lapsed or will lapse before the date you specify.',0,0,1,3,NULL,NULL,NULL,NULL),(249,41,'Event Participant Report (List)','event/participantListing','CRM_Report_Form_Event_ParticipantListing',NULL,0,NULL,18,'Provides lists of participants for an event.',0,0,1,1,NULL,NULL,NULL,NULL),(250,41,'Event Income Report (Summary)','event/summary','CRM_Report_Form_Event_Summary',NULL,0,NULL,19,'Provides an overview of event income. You can include key information such as event ID, registration, attendance, and income generated to help you determine the success of an event.',0,0,1,1,NULL,NULL,NULL,NULL),(251,41,'Event Income Report (Detail)','event/income','CRM_Report_Form_Event_Income',NULL,0,NULL,20,'Helps you to analyze the income generated by an event. The report can include details by participant type, status and payment method.',0,0,1,1,NULL,NULL,NULL,NULL),(252,41,'Pledge Detail Report','pledge/detail','CRM_Report_Form_Pledge_Detail',NULL,0,NULL,21,'List of pledges including amount pledged, pledge status, next payment date, balance due, total amount paid etc.',0,0,1,6,NULL,NULL,NULL,NULL),(253,41,'Pledged but not Paid Report','pledge/pbnp','CRM_Report_Form_Pledge_Pbnp',NULL,0,NULL,22,'Pledged but not Paid Report',0,0,1,6,NULL,NULL,NULL,NULL),(254,41,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,NULL,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL),(255,41,'Case Summary Report','case/summary','CRM_Report_Form_Case_Summary',NULL,0,NULL,24,'Provides a summary of cases and their duration by date range, status, staff member and / or case role.',0,0,1,7,NULL,NULL,NULL,NULL),(256,41,'Case Time Spent Report','case/timespent','CRM_Report_Form_Case_TimeSpent',NULL,0,NULL,25,'Aggregates time spent on case and / or non-case activities by activity type and contact.',0,0,1,7,NULL,NULL,NULL,NULL),(257,41,'Contact Demographics Report','case/demographics','CRM_Report_Form_Case_Demographics',NULL,0,NULL,26,'Demographic breakdown for case clients (and or non-case contacts) in your database. Includes custom contact fields.',0,0,1,7,NULL,NULL,NULL,NULL),(258,41,'Database Log Report','contact/log','CRM_Report_Form_Contact_Log',NULL,0,NULL,27,'Log of contact and activity records created or updated in a given date range.',0,0,1,NULL,NULL,NULL,NULL,NULL),(259,41,'Activity Summary Report','activitySummary','CRM_Report_Form_ActivitySummary',NULL,0,NULL,28,'Shows activity statistics by type / date',0,0,1,NULL,NULL,NULL,NULL,NULL),(260,41,'Bookkeeping Transactions Report','contribute/bookkeeping','CRM_Report_Form_Contribute_Bookkeeping',NULL,0,0,29,'Shows Bookkeeping Transactions Report',0,0,1,2,NULL,NULL,NULL,NULL),(261,41,'Grant Report (Detail)','grant/detail','CRM_Report_Form_Grant_Detail',NULL,0,0,30,'Grant Report Detail',0,0,1,5,NULL,NULL,NULL,NULL),(262,41,'Participant list Count Report','event/participantlist','CRM_Report_Form_Event_ParticipantListCount',NULL,0,0,31,'Shows the Participant list with Participant Count.',0,0,1,1,NULL,NULL,NULL,NULL),(263,41,'Income Count Summary Report','event/incomesummary','CRM_Report_Form_Event_IncomeCountSummary',NULL,0,0,32,'Shows the Income Summary of events with Count.',0,0,1,1,NULL,NULL,NULL,NULL),(264,41,'Case Detail Report','case/detail','CRM_Report_Form_Case_Detail',NULL,0,0,33,'Case Details',0,0,1,7,NULL,NULL,NULL,NULL),(265,41,'Mail Bounce Report','Mailing/bounce','CRM_Report_Form_Mailing_Bounce',NULL,0,NULL,34,'Bounce Report for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(266,41,'Mail Summary Report','Mailing/summary','CRM_Report_Form_Mailing_Summary',NULL,0,NULL,35,'Summary statistics for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(267,41,'Mail Opened Report','Mailing/opened','CRM_Report_Form_Mailing_Opened',NULL,0,NULL,36,'Display contacts who opened emails from a mailing',0,0,1,4,NULL,NULL,NULL,NULL),(268,41,'Mail Click-Through Report','Mailing/clicks','CRM_Report_Form_Mailing_Clicks',NULL,0,NULL,37,'Display clicks from each mailing',0,0,1,4,NULL,NULL,NULL,NULL),(269,41,'Contact Logging Report (Summary)','logging/contact/summary','CRM_Report_Form_Contact_LoggingSummary',NULL,0,NULL,38,'Contact modification report for the logging infrastructure (summary).',0,0,0,NULL,NULL,NULL,NULL,NULL),(270,41,'Contact Logging Report (Detail)','logging/contact/detail','CRM_Report_Form_Contact_LoggingDetail',NULL,0,NULL,39,'Contact modification report for the logging infrastructure (detail).',0,0,0,NULL,NULL,NULL,NULL,NULL),(271,41,'Grant Report (Statistics)','grant/statistics','CRM_Report_Form_Grant_Statistics',NULL,0,NULL,42,'Shows statistics for Grants.',0,0,1,5,NULL,NULL,NULL,NULL),(272,41,'Survey Report (Detail)','survey/detail','CRM_Report_Form_Campaign_SurveyDetails',NULL,0,NULL,43,'Detailed report for canvassing, phone-banking, walk lists or other surveys.',0,0,1,9,NULL,NULL,NULL,NULL),(273,41,'Personal Campaign Page Report','contribute/pcp','CRM_Report_Form_Contribute_PCP',NULL,0,NULL,44,'Summarizes amount raised and number of contributors for each Personal Campaign Page.',0,0,1,2,NULL,NULL,NULL,NULL),(274,41,'Pledge Summary Report','pledge/summary','CRM_Report_Form_Pledge_Summary',NULL,0,NULL,45,'Groups and totals pledges by criteria including contact, time period, pledge status, location, etc.',0,0,1,6,NULL,NULL,NULL,NULL),(275,41,'Contribution Aggregate by Relationship','contribute/history','CRM_Report_Form_Contribute_History',NULL,0,NULL,46,'List contact\'s donation history, grouped by year, along with contributions attributed to any of the contact\'s related contacts.',0,0,1,2,NULL,NULL,NULL,NULL),(276,41,'Mail Detail Report','mailing/detail','CRM_Report_Form_Mailing_Detail',NULL,0,NULL,47,'Provides reporting on Intended and Successful Deliveries, Unsubscribes and Opt-outs, Replies and Forwards.',0,0,1,4,NULL,NULL,NULL,NULL),(277,41,'Contribution and Membership Details','member/contributionDetail','CRM_Report_Form_Member_ContributionDetail',NULL,0,NULL,48,'Contribution details for any type of contribution, plus associated membership information for contributions which are in payment for memberships.',0,0,1,3,NULL,NULL,NULL,NULL),(278,41,'Recurring Contributions Report','contribute/recur','CRM_Report_Form_Contribute_Recur',NULL,0,NULL,49,'Provides information about the status of recurring contributions',0,0,1,2,NULL,NULL,NULL,NULL),(279,41,'Recurring Contributions Summary','contribute/recursummary','CRM_Report_Form_Contribute_RecurSummary',NULL,0,NULL,49,'Provides simple summary for each payment instrument for which there are recurring contributions (e.g. Credit Card, Standing Order, Direct Debit, etc., NULL), showing within a given date range.',0,0,1,2,NULL,NULL,NULL,NULL),(280,41,'Deferred Revenue Details','contribute/deferredrevenue','CRM_Report_Form_Contribute_DeferredRevenue',NULL,0,NULL,50,'Deferred Revenue Details Report',0,0,1,2,NULL,NULL,NULL,NULL),(281,26,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(282,26,'Completed','2','Completed',NULL,1,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(283,26,'Cancelled','3','Cancelled',NULL,2,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(284,26,'Left Message','4','Left Message',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(285,26,'Unreachable','5','Unreachable',NULL,2,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(286,26,'Not Required','6','Not Required',NULL,2,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(287,26,'Available','7','Available',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(288,26,'No-show','8','No_show',NULL,2,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(289,28,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(290,28,'Resolved','2','Closed','Closed',0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(291,28,'Urgent','3','Urgent','Opened',0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(292,29,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL),(293,29,'Name and Email','2','Name and Email',NULL,0,0,2,'CRM_Event_Page_ParticipantListing_NameAndEmail',0,1,1,NULL,NULL,NULL,NULL,NULL),(294,29,'Name, Status and Register Date','3','Name, Status and Register Date',NULL,0,0,3,'CRM_Event_Page_ParticipantListing_NameStatusAndDate',0,1,1,NULL,NULL,NULL,NULL,NULL),(295,30,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(296,30,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(297,30,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(298,30,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(299,30,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(300,30,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(301,30,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(302,30,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(303,30,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(304,30,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(305,30,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(306,30,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(307,30,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(308,30,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(309,30,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(310,30,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(311,33,'Textarea','1','Textarea',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(312,33,'CKEditor','2','CKEditor',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(313,32,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(314,32,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(315,32,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(316,32,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(317,32,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(318,32,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(319,32,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(320,32,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(321,32,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(322,32,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(323,32,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(324,32,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(325,32,'Export Grant','13','Export Grant',NULL,0,0,13,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(326,32,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(327,34,'day','day','day',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(328,34,'week','week','week',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(329,34,'month','month','month',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(330,34,'year','year','year',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(331,35,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(332,35,'Mobile','2','Mobile',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(333,35,'Fax','3','Fax',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(334,35,'Pager','4','Pager',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(335,35,'Voicemail','5','Voicemail',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(336,36,'Participant Role','1','ParticipantRole',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(337,36,'Participant Event Name','2','ParticipantEventName',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(338,36,'Participant Event Type','3','ParticipantEventType',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(339,37,'Public','1','public',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(340,37,'Admin','2','admin',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(341,38,'IMAP','1','IMAP',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(342,38,'Maildir','2','Maildir',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(343,38,'POP3','3','POP3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(344,38,'Localdir','4','Localdir',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(345,38,'IMAP XOAUTH2','5','IMAP_XOAUTH2',NULL,0,NULL,5,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(346,39,'Urgent','1','Urgent',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(347,39,'Normal','2','Normal',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(348,39,'Low','3','Low',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(349,40,'Vancouver','city_','city_',NULL,0,NULL,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(350,40,'/(19|20)(\\d{2})-(\\d{1,2})-(\\d{1,2})/','date_','date_',NULL,1,NULL,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(351,42,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(352,42,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(353,42,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(354,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(355,42,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(356,43,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(357,43,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(358,43,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(359,43,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(360,43,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(361,44,'{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}','1','}{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(362,44,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(363,44,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(364,44,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(365,47,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(366,47,'Main','2','Main',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(367,47,'Facebook','3','Facebook',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(368,47,'Instagram','5','Instagram',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(369,47,'LinkedIn','6','LinkedIn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(370,47,'MySpace','7','MySpace',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(371,47,'Pinterest','8','Pinterest',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(372,47,'SnapChat','9','SnapChat',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(373,47,'Tumblr','10','Tumblr',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(374,47,'Twitter','11','Twitter',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(375,47,'Vine','12','Vine ',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(376,48,'Contacts','civicrm_contact','Contacts',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(377,48,'Activities','civicrm_activity','Activities',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(378,48,'Cases','civicrm_case','Cases',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(379,48,'Attachments','civicrm_file','Attachements',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(380,49,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(381,50,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL),(382,50,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL),(383,50,'With Logo','3','CRM_Event_Badge_Logo',NULL,0,0,3,'You can set your own background image',0,1,1,NULL,NULL,NULL,NULL,NULL),(384,50,'5395 with Logo','4','CRM_Event_Badge_Logo5395',NULL,0,0,4,'Avery 5395 compatible labels with logo (4 up by 2, 59.2mm x 85.7mm)',0,1,1,NULL,NULL,NULL,NULL,NULL),(385,51,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(386,51,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(387,52,'Direct Mail','1','Direct Mail',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(388,52,'Referral Program','2','Referral Program',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(389,52,'Constituent Engagement','3','Constituent Engagement',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(390,53,'Planned','1','Planned',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(391,53,'In Progress','2','In Progress',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(392,53,'Completed','3','Completed',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(393,53,'Cancelled','4','Cancelled',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(394,56,'1','1','1',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(395,56,'2','2','2',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(396,56,'3','3','3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(397,56,'4','4','4',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(398,56,'5','5','5',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(399,58,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(400,58,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(401,58,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(402,58,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(403,58,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(404,58,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(405,58,'Envelope #9','{\"metric\":\"pt\",\"width\":638.93,\"height\":278.93}','envelope-9',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(406,58,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(407,58,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(408,58,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(409,58,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(410,58,'Envelope ISO B4','{\"metric\":\"pt\",\"width\":1000.63,\"height\":708.66}','envelope-b4',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(411,58,'Envelope ISO B5','{\"metric\":\"pt\",\"width\":708.66,\"height\":498.9}','envelope-b5',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(412,58,'Envelope ISO B6','{\"metric\":\"pt\",\"width\":498.9,\"height\":354.33}','envelope-b6',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(413,58,'Envelope ISO C3','{\"metric\":\"pt\",\"width\":1298.27,\"height\":918.42}','envelope-c3',NULL,NULL,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(414,58,'Envelope ISO C4','{\"metric\":\"pt\",\"width\":918.42,\"height\":649.13}','envelope-c4',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(415,58,'Envelope ISO C5','{\"metric\":\"pt\",\"width\":649.13,\"height\":459.21}','envelope-c5',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(416,58,'Envelope ISO C6','{\"metric\":\"pt\",\"width\":459.21,\"height\":323.15}','envelope-c6',NULL,NULL,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(417,58,'Envelope ISO DL','{\"metric\":\"pt\",\"width\":623.622,\"height\":311.811}','envelope-dl',NULL,NULL,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(418,58,'ISO A0','{\"metric\":\"pt\",\"width\":2383.94,\"height\":3370.39}','a0',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(419,58,'ISO A1','{\"metric\":\"pt\",\"width\":1683.78,\"height\":2383.94}','a1',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(420,58,'ISO A2','{\"metric\":\"pt\",\"width\":1190.55,\"height\":1683.78}','a2',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(421,58,'ISO A3','{\"metric\":\"pt\",\"width\":841.89,\"height\":1190.55}','a3',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(422,58,'ISO A4','{\"metric\":\"pt\",\"width\":595.28,\"height\":841.89}','a4',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(423,58,'ISO A5','{\"metric\":\"pt\",\"width\":419.53,\"height\":595.28}','a5',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(424,58,'ISO A6','{\"metric\":\"pt\",\"width\":297.64,\"height\":419.53}','a6',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(425,58,'ISO A7','{\"metric\":\"pt\",\"width\":209.76,\"height\":297.64}','a7',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(426,58,'ISO A8','{\"metric\":\"pt\",\"width\":147.4,\"height\":209.76}','a8',NULL,NULL,0,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(427,58,'ISO A9','{\"metric\":\"pt\",\"width\":104.88,\"height\":147.4}','a9',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(428,58,'ISO A10','{\"metric\":\"pt\",\"width\":73.7,\"height\":104.88}','a10',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(429,58,'ISO B0','{\"metric\":\"pt\",\"width\":2834.65,\"height\":4008.19}','b0',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(430,58,'ISO B1','{\"metric\":\"pt\",\"width\":2004.09,\"height\":2834.65}','b1',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(431,58,'ISO B2','{\"metric\":\"pt\",\"width\":1417.32,\"height\":2004.09}','b2',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(432,58,'ISO B3','{\"metric\":\"pt\",\"width\":1000.63,\"height\":1417.32}','b3',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(433,58,'ISO B4','{\"metric\":\"pt\",\"width\":708.66,\"height\":1000.63}','b4',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(434,58,'ISO B5','{\"metric\":\"pt\",\"width\":498.9,\"height\":708.66}','b5',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(435,58,'ISO B6','{\"metric\":\"pt\",\"width\":354.33,\"height\":498.9}','b6',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(436,58,'ISO B7','{\"metric\":\"pt\",\"width\":249.45,\"height\":354.33}','b7',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(437,58,'ISO B8','{\"metric\":\"pt\",\"width\":175.75,\"height\":249.45}','b8',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(438,58,'ISO B9','{\"metric\":\"pt\",\"width\":124.72,\"height\":175.75}','b9',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(439,58,'ISO B10','{\"metric\":\"pt\",\"width\":87.87,\"height\":124.72}','b10',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(440,58,'ISO C0','{\"metric\":\"pt\",\"width\":2599.37,\"height\":3676.54}','c0',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(441,58,'ISO C1','{\"metric\":\"pt\",\"width\":1836.85,\"height\":2599.37}','c1',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(442,58,'ISO C2','{\"metric\":\"pt\",\"width\":1298.27,\"height\":1836.85}','c2',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(443,58,'ISO C3','{\"metric\":\"pt\",\"width\":918.43,\"height\":1298.27}','c3',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(444,58,'ISO C4','{\"metric\":\"pt\",\"width\":649.13,\"height\":918.43}','c4',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(445,58,'ISO C5','{\"metric\":\"pt\",\"width\":459.21,\"height\":649.13}','c5',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(446,58,'ISO C6','{\"metric\":\"pt\",\"width\":323.15,\"height\":459.21}','c6',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(447,58,'ISO C7','{\"metric\":\"pt\",\"width\":229.61,\"height\":323.15}','c7',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(448,58,'ISO C8','{\"metric\":\"pt\",\"width\":161.57,\"height\":229.61}','c8',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(449,58,'ISO C9','{\"metric\":\"pt\",\"width\":113.39,\"height\":161.57}','c9',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(450,58,'ISO C10','{\"metric\":\"pt\",\"width\":79.37,\"height\":113.39}','c10',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(451,58,'ISO RA0','{\"metric\":\"pt\",\"width\":2437.8,\"height\":3458.27}','ra0',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(452,58,'ISO RA1','{\"metric\":\"pt\",\"width\":1729.13,\"height\":2437.8}','ra1',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(453,58,'ISO RA2','{\"metric\":\"pt\",\"width\":1218.9,\"height\":1729.13}','ra2',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(454,58,'ISO RA3','{\"metric\":\"pt\",\"width\":864.57,\"height\":1218.9}','ra3',NULL,NULL,0,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(455,58,'ISO RA4','{\"metric\":\"pt\",\"width\":609.45,\"height\":864.57}','ra4',NULL,NULL,0,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(456,58,'ISO SRA0','{\"metric\":\"pt\",\"width\":2551.18,\"height\":3628.35}','sra0',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(457,58,'ISO SRA1','{\"metric\":\"pt\",\"width\":1814.17,\"height\":2551.18}','sra1',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(458,58,'ISO SRA2','{\"metric\":\"pt\",\"width\":1275.59,\"height\":1814.17}','sra2',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(459,58,'ISO SRA3','{\"metric\":\"pt\",\"width\":907.09,\"height\":1275.59}','sra3',NULL,NULL,0,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(460,58,'ISO SRA4','{\"metric\":\"pt\",\"width\":637.8,\"height\":907.09}','sra4',NULL,NULL,0,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(461,61,'Activity Assignees','1','Activity Assignees',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(462,61,'Activity Source','2','Activity Source',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(463,61,'Activity Targets','3','Activity Targets',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(464,71,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL),(465,71,'Liability','2','Liability',NULL,0,0,2,'Things you owe, like a grant still to be disbursed',0,1,1,2,NULL,NULL,NULL,NULL),(466,71,'Revenue','3','Revenue',NULL,0,1,3,'Income from contributions and sales of tickets and memberships',0,1,1,2,NULL,NULL,NULL,NULL),(467,71,'Cost of Sales','4','Cost of Sales',NULL,0,0,4,'Costs incurred to get revenue, e.g. premiums for donations, dinner for a fundraising dinner ticket',0,1,1,2,NULL,NULL,NULL,NULL),(468,71,'Expenses','5','Expenses',NULL,0,0,5,'Things that are paid for that are consumable, e.g. grants disbursed',0,1,1,2,NULL,NULL,NULL,NULL),(469,62,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL),(470,62,'Credit/Contra Revenue Account is','2','Credit/Contra Revenue Account is',NULL,0,0,2,'Credit/Contra Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL),(471,62,'Accounts Receivable Account is','3','Accounts Receivable Account is',NULL,0,0,3,'Accounts Receivable Account is',0,1,1,2,NULL,NULL,NULL,NULL),(472,62,'Credit Liability Account is','4','Credit Liability Account is',NULL,0,0,4,'Credit Liability Account is',0,1,0,2,NULL,NULL,NULL,NULL),(473,62,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL),(474,62,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL),(475,62,'Cost of Sales Account is','7','Cost of Sales Account is',NULL,0,0,7,'Cost of Sales Account is',0,1,1,2,NULL,NULL,NULL,NULL),(476,62,'Premiums Inventory Account is','8','Premiums Inventory Account is',NULL,0,0,8,'Premiums Inventory Account is',0,1,1,2,NULL,NULL,NULL,NULL),(477,62,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL),(478,62,'Sales Tax Account is','10','Sales Tax Account is',NULL,0,0,10,'Sales Tax Account is',0,1,1,2,NULL,NULL,NULL,NULL),(479,62,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL),(480,62,'Deferred Revenue Account is','12','Deferred Revenue Account is',NULL,0,0,12,'Deferred Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL),(481,63,'Participant Role','1','participant_role',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(482,64,'Morning Sessions','1','Morning Sessions',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(483,64,'Evening Sessions','2','Evening Sessions',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(484,65,'Contribution','1','Contribution',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(485,65,'Membership','2','Membership',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(486,65,'Pledge Payment','3','Pledge Payment',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(487,67,'Open','1','Open',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(488,67,'Closed','2','Closed',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(489,67,'Data Entry','3','Data Entry',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(490,67,'Reopened','4','Reopened',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(491,67,'Exported','5','Exported',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(492,66,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL),(493,66,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL),(494,72,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL),(495,72,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL),(496,72,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL),(497,68,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(498,68,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(499,68,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(500,70,'Renewal Reminder (non-auto-renew memberships only)','1','Renewal Reminder (non-auto-renew memberships only)',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(501,70,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(502,70,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(503,73,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(504,74,'Avery 5395','{\"name\":\"Avery 5395\",\"paper-size\":\"a4\",\"metric\":\"mm\",\"lMargin\":15,\"tMargin\":26,\"NX\":2,\"NY\":4,\"SpaceX\":10,\"SpaceY\":5,\"width\":83,\"height\":57,\"font-size\":12,\"orientation\":\"portrait\",\"font-name\":\"helvetica\",\"font-style\":\"\",\"lPadding\":3,\"tPadding\":3}','Avery 5395',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(505,74,'A6 Badge Portrait 150x106','{\"paper-size\":\"a4\",\"orientation\":\"landscape\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":1,\"metric\":\"mm\",\"lMargin\":25,\"tMargin\":27,\"SpaceX\":0,\"SpaceY\":35,\"width\":106,\"height\":150,\"lPadding\":5,\"tPadding\":5}','A6 Badge Portrait 150x106',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(506,74,'Fattorini Name Badge 100x65','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":4,\"metric\":\"mm\",\"lMargin\":6,\"tMargin\":19,\"SpaceX\":0,\"SpaceY\":0,\"width\":100,\"height\":65,\"lPadding\":0,\"tPadding\":0}','Fattorini Name Badge 100x65',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(507,74,'Hanging Badge 3-3/4\" x 4-3\"/4','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":2,\"metric\":\"mm\",\"lMargin\":10,\"tMargin\":28,\"SpaceX\":0,\"SpaceY\":0,\"width\":96,\"height\":121,\"lPadding\":5,\"tPadding\":5}','Hanging Badge 3-3/4\" x 4-3\"/4',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(508,60,'Avery 3475','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":10,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":0,\"tMargin\":5,\"NX\":3,\"NY\":8,\"SpaceX\":0,\"SpaceY\":0,\"width\":70,\"height\":36,\"lPadding\":5.08,\"tPadding\":5.08}','3475','Avery',NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(509,60,'Avery 5160','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.21975,\"tMargin\":0.5,\"NX\":3,\"NY\":10,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":2.5935,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5160','Avery',NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(510,60,'Avery 5161','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.175,\"tMargin\":0.5,\"NX\":2,\"NY\":10,\"SpaceX\":0.15625,\"SpaceY\":0,\"width\":4,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5161','Avery',NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(511,60,'Avery 5162','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.1525,\"tMargin\":0.88,\"NX\":2,\"NY\":7,\"SpaceX\":0.195,\"SpaceY\":0,\"width\":4,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','5162','Avery',NULL,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(512,60,'Avery 5163','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.5,\"NX\":2,\"NY\":5,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":4,\"height\":2,\"lPadding\":0.20,\"tPadding\":0.20}','5163','Avery',NULL,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(513,60,'Avery 5164','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":12,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.156,\"tMargin\":0.5,\"NX\":2,\"NY\":3,\"SpaceX\":0.1875,\"SpaceY\":0,\"width\":4,\"height\":3.33,\"lPadding\":0.20,\"tPadding\":0.20}','5164','Avery',NULL,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(514,60,'Avery 8600','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":7.1,\"tMargin\":19,\"NX\":3,\"NY\":10,\"SpaceX\":9.5,\"SpaceY\":3.1,\"width\":66.6,\"height\":25.4,\"lPadding\":5.08,\"tPadding\":5.08}','8600','Avery',NULL,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(515,60,'Avery L7160','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.6,\"NX\":3,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7160','Avery',NULL,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(516,60,'Avery L7161','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.35,\"NX\":3,\"NY\":6,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.83,\"lPadding\":0.20,\"tPadding\":0.20}','L7161','Avery',NULL,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(517,60,'Avery L7162','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.51,\"NX\":2,\"NY\":8,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','L7162','Avery',NULL,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(518,60,'Avery L7163','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.6,\"NX\":2,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7163','Avery',NULL,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(519,75,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(520,75,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(521,76,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(522,76,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(523,76,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(524,77,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(525,77,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(526,78,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(527,78,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL),(528,78,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL),(529,82,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(530,82,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(531,82,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(532,79,'Today','this.day','this.day',NULL,NULL,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(533,79,'This week','this.week','this.week',NULL,NULL,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(534,79,'This calendar month','this.month','this.month',NULL,NULL,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(535,79,'This quarter','this.quarter','this.quarter',NULL,NULL,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(536,79,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(537,79,'This calendar year','this.year','this.year',NULL,NULL,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(538,79,'Yesterday','previous.day','previous.day',NULL,NULL,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(539,79,'Previous week','previous.week','previous.week',NULL,NULL,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(540,79,'Previous calendar month','previous.month','previous.month',NULL,NULL,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(541,79,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(542,79,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(543,79,'Previous calendar year','previous.year','previous.year',NULL,NULL,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(544,79,'Last 7 days including today','ending.week','ending.week',NULL,NULL,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(545,79,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(546,79,'Last 60 days including today','ending_60.day','ending_2.month',NULL,NULL,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(547,79,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(548,79,'Last 12 months including today','ending.year','ending.year',NULL,NULL,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(549,79,'Last 2 years including today','ending_2.year','ending_2.year',NULL,NULL,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(550,79,'Last 3 years including today','ending_3.year','ending_3.year',NULL,NULL,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(551,79,'Tomorrow','starting.day','starting.day',NULL,NULL,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(552,79,'Next week','next.week','next.week',NULL,NULL,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(553,79,'Next calendar month','next.month','next.month',NULL,NULL,NULL,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(554,79,'Next quarter','next.quarter','next.quarter',NULL,NULL,NULL,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(555,79,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,NULL,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(556,79,'Next calendar year','next.year','next.year',NULL,NULL,NULL,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(557,79,'Next 7 days including today','starting.week','starting.week',NULL,NULL,NULL,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(558,79,'Next 30 days including today','starting.month','starting.month',NULL,NULL,NULL,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(559,79,'Next 60 days including today','starting_2.month','starting_2.month',NULL,NULL,NULL,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(560,79,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,NULL,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(561,79,'Next 12 months including today','starting.year','starting.year',NULL,NULL,NULL,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(562,79,'Current week to-date','current.week','current.week',NULL,NULL,NULL,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(563,79,'Current calendar month to-date','current.month','current.month',NULL,NULL,NULL,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(564,79,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,NULL,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(565,79,'Current calendar year to-date','current.year','current.year',NULL,NULL,NULL,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(566,79,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,NULL,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(567,79,'To end of previous week','earlier.week','earlier.week',NULL,NULL,NULL,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(568,79,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,NULL,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(569,79,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,NULL,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(570,79,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,NULL,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(571,79,'From start of current day','greater.day','greater.day',NULL,NULL,NULL,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(572,79,'From start of current week','greater.week','greater.week',NULL,NULL,NULL,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(573,79,'From start of current calendar month','greater.month','greater.month',NULL,NULL,NULL,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(574,79,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,NULL,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(575,79,'From start of current calendar year','greater.year','greater.year',NULL,NULL,NULL,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(576,79,'To end of current week','less.week','less.week',NULL,NULL,NULL,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(577,79,'To end of current calendar month','less.month','less.month',NULL,NULL,NULL,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(578,79,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,NULL,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(579,79,'To end of current calendar year','less.year','less.year',NULL,NULL,NULL,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(580,79,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,NULL,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(581,79,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,NULL,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(582,79,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,NULL,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(583,79,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,NULL,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(584,79,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,NULL,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(585,79,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,NULL,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(586,79,'Week prior to previous week','previous_before.week','previous_before.week',NULL,NULL,NULL,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(587,79,'Month prior to previous calendar month','previous_before.month','previous_before.month',NULL,NULL,NULL,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(588,79,'Quarter prior to previous quarter','previous_before.quarter','previous_before.quarter',NULL,NULL,NULL,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(589,79,'Year prior to previous calendar year','previous_before.year','previous_before.year',NULL,NULL,NULL,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(590,79,'From end of previous week','greater_previous.week','greater_previous.week',NULL,NULL,NULL,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(591,79,'From end of previous calendar month','greater_previous.month','greater_previous.month',NULL,NULL,NULL,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(592,79,'From end of previous quarter','greater_previous.quarter','greater_previous.quarter',NULL,NULL,NULL,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(593,79,'From end of previous calendar year','greater_previous.year','greater_previous.year',NULL,NULL,NULL,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(594,80,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(595,80,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(596,80,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(597,80,'In Progress','5','In Progress',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(598,80,'Overdue','6','Overdue',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(599,81,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(600,81,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(601,81,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(602,81,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(603,81,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(604,81,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(605,81,'Processing','7','Processing',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(606,81,'Failing','8','Failing',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(607,83,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(608,83,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(609,83,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(610,83,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(611,31,'\"FIXME\" <info@EXAMPLE.ORG>','1','\"FIXME\" <info@EXAMPLE.ORG>',NULL,0,1,1,'Default domain email address and from name.',0,0,1,NULL,1,NULL,NULL,NULL),(612,24,'Emergency','1','Emergency',NULL,0,1,1,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(613,24,'Family Support','2','Family Support',NULL,0,NULL,2,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(614,24,'General Protection','3','General Protection',NULL,0,NULL,3,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(615,24,'Impunity','4','Impunity',NULL,0,NULL,4,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(616,55,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL),(617,55,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL),(618,55,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL),(619,57,'Survey','Survey','civicrm_survey',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(620,57,'Cases','Case','civicrm_case',NULL,0,NULL,2,'CRM_Case_PseudoConstant::caseType;',0,0,1,NULL,NULL,NULL,NULL,NULL),(621,84,'Abkhaz','ab','ab_GE',NULL,NULL,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(622,84,'Afar','aa','aa_ET',NULL,NULL,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(623,84,'Afrikaans','af','af_ZA',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(624,84,'Akan','ak','ak_GH',NULL,NULL,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(625,84,'Albanian','sq','sq_AL',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(626,84,'Amharic','am','am_ET',NULL,NULL,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(627,84,'Arabic','ar','ar_EG',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(628,84,'Aragonese','an','an_ES',NULL,NULL,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(629,84,'Armenian','hy','hy_AM',NULL,NULL,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(630,84,'Assamese','as','as_IN',NULL,NULL,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(631,84,'Avaric','av','av_RU',NULL,NULL,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(632,84,'Avestan','ae','ae_XX',NULL,NULL,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(633,84,'Aymara','ay','ay_BO',NULL,NULL,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(634,84,'Azerbaijani','az','az_AZ',NULL,NULL,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(635,84,'Bambara','bm','bm_ML',NULL,NULL,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(636,84,'Bashkir','ba','ba_RU',NULL,NULL,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(637,84,'Basque','eu','eu_ES',NULL,NULL,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(638,84,'Belarusian','be','be_BY',NULL,NULL,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(639,84,'Bengali','bn','bn_BD',NULL,NULL,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(640,84,'Bihari','bh','bh_IN',NULL,NULL,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(641,84,'Bislama','bi','bi_VU',NULL,NULL,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(642,84,'Bosnian','bs','bs_BA',NULL,NULL,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(643,84,'Breton','br','br_FR',NULL,NULL,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(644,84,'Bulgarian','bg','bg_BG',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(645,84,'Burmese','my','my_MM',NULL,NULL,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(646,84,'Catalan; Valencian','ca','ca_ES',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(647,84,'Chamorro','ch','ch_GU',NULL,NULL,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(648,84,'Chechen','ce','ce_RU',NULL,NULL,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(649,84,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,NULL,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(650,84,'Chinese (China)','zh','zh_CN',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(651,84,'Chinese (Taiwan)','zh','zh_TW',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(652,84,'Chuvash','cv','cv_RU',NULL,NULL,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(653,84,'Cornish','kw','kw_GB',NULL,NULL,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(654,84,'Corsican','co','co_FR',NULL,NULL,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(655,84,'Cree','cr','cr_CA',NULL,NULL,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(656,84,'Croatian','hr','hr_HR',NULL,NULL,0,36,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(657,84,'Czech','cs','cs_CZ',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(658,84,'Danish','da','da_DK',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(659,84,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,NULL,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(660,84,'Dutch (Netherlands)','nl','nl_NL',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(661,84,'Dutch (Belgium)','nl','nl_BE',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(662,84,'Dzongkha','dz','dz_BT',NULL,NULL,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(663,84,'English (Australia)','en','en_AU',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(664,84,'English (Canada)','en','en_CA',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(665,84,'English (United Kingdom)','en','en_GB',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(666,84,'English (United States)','en','en_US',NULL,NULL,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(667,84,'Esperanto','eo','eo_XX',NULL,NULL,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(668,84,'Estonian','et','et_EE',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(669,84,'Ewe','ee','ee_GH',NULL,NULL,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(670,84,'Faroese','fo','fo_FO',NULL,NULL,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(671,84,'Fijian','fj','fj_FJ',NULL,NULL,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(672,84,'Finnish','fi','fi_FI',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(673,84,'French (Canada)','fr','fr_CA',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(674,84,'French (France)','fr','fr_FR',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(675,84,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,NULL,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(676,84,'Galician','gl','gl_ES',NULL,NULL,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(677,84,'Georgian','ka','ka_GE',NULL,NULL,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(678,84,'German','de','de_DE',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(679,84,'German (Swiss)','de','de_CH',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(680,84,'Greek, Modern','el','el_GR',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(681,84,'GuaraniÂ','gn','gn_PY',NULL,NULL,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(682,84,'Gujarati','gu','gu_IN',NULL,NULL,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(683,84,'Haitian; Haitian Creole','ht','ht_HT',NULL,NULL,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(684,84,'Hausa','ha','ha_NG',NULL,NULL,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(685,84,'Hebrew (modern)','he','he_IL',NULL,NULL,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(686,84,'Herero','hz','hz_NA',NULL,NULL,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(687,84,'Hindi','hi','hi_IN',NULL,NULL,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(688,84,'Hiri Motu','ho','ho_PG',NULL,NULL,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(689,84,'Hungarian','hu','hu_HU',NULL,NULL,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(690,84,'Interlingua','ia','ia_XX',NULL,NULL,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(691,84,'Indonesian','id','id_ID',NULL,NULL,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(692,84,'Interlingue','ie','ie_XX',NULL,NULL,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(693,84,'Irish','ga','ga_IE',NULL,NULL,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(694,84,'Igbo','ig','ig_NG',NULL,NULL,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(695,84,'Inupiaq','ik','ik_US',NULL,NULL,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(696,84,'Ido','io','io_XX',NULL,NULL,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(697,84,'Icelandic','is','is_IS',NULL,NULL,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(698,84,'Italian','it','it_IT',NULL,NULL,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(699,84,'Inuktitut','iu','iu_CA',NULL,NULL,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(700,84,'Japanese','ja','ja_JP',NULL,NULL,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(701,84,'Javanese','jv','jv_ID',NULL,NULL,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(702,84,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,NULL,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(703,84,'Kannada','kn','kn_IN',NULL,NULL,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(704,84,'Kanuri','kr','kr_NE',NULL,NULL,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(705,84,'Kashmiri','ks','ks_IN',NULL,NULL,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(706,84,'Kazakh','kk','kk_KZ',NULL,NULL,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(707,84,'Khmer','km','km_KH',NULL,NULL,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(708,84,'Kikuyu, Gikuyu','ki','ki_KE',NULL,NULL,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(709,84,'Kinyarwanda','rw','rw_RW',NULL,NULL,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(710,84,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,NULL,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(711,84,'Komi','kv','kv_RU',NULL,NULL,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(712,84,'Kongo','kg','kg_CD',NULL,NULL,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(713,84,'Korean','ko','ko_KR',NULL,NULL,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(714,84,'Kurdish','ku','ku_IQ',NULL,NULL,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(715,84,'Kwanyama, Kuanyama','kj','kj_NA',NULL,NULL,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(716,84,'Latin','la','la_VA',NULL,NULL,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(717,84,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,NULL,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(718,84,'Luganda','lg','lg_UG',NULL,NULL,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(719,84,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,NULL,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(720,84,'Lingala','ln','ln_CD',NULL,NULL,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(721,84,'Lao','lo','lo_LA',NULL,NULL,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(722,84,'Lithuanian','lt','lt_LT',NULL,NULL,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(723,84,'Luba-Katanga','lu','lu_CD',NULL,NULL,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(724,84,'Latvian','lv','lv_LV',NULL,NULL,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(725,84,'Manx','gv','gv_IM',NULL,NULL,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(726,84,'Macedonian','mk','mk_MK',NULL,NULL,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(727,84,'Malagasy','mg','mg_MG',NULL,NULL,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(728,84,'Malay','ms','ms_MY',NULL,NULL,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(729,84,'Malayalam','ml','ml_IN',NULL,NULL,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(730,84,'Maltese','mt','mt_MT',NULL,NULL,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(731,84,'MÄori','mi','mi_NZ',NULL,NULL,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(732,84,'Marathi','mr','mr_IN',NULL,NULL,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(733,84,'Marshallese','mh','mh_MH',NULL,NULL,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(734,84,'Mongolian','mn','mn_MN',NULL,NULL,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(735,84,'Nauru','na','na_NR',NULL,NULL,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(736,84,'Navajo, Navaho','nv','nv_US',NULL,NULL,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(737,84,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,NULL,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(738,84,'North Ndebele','nd','nd_ZW',NULL,NULL,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(739,84,'Nepali','ne','ne_NP',NULL,NULL,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(740,84,'Ndonga','ng','ng_NA',NULL,NULL,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(741,84,'Norwegian Nynorsk','nn','nn_NO',NULL,NULL,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(742,84,'Norwegian','no','no_NO',NULL,NULL,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(743,84,'Nuosu','ii','ii_CN',NULL,NULL,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(744,84,'South Ndebele','nr','nr_ZA',NULL,NULL,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(745,84,'Occitan (after 1500)','oc','oc_FR',NULL,NULL,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(746,84,'Ojibwa','oj','oj_CA',NULL,NULL,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(747,84,'Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic','cu','cu_BG',NULL,NULL,0,127,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(748,84,'Oromo','om','om_ET',NULL,NULL,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(749,84,'Oriya','or','or_IN',NULL,NULL,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(750,84,'Ossetian, Ossetic','os','os_GE',NULL,NULL,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(751,84,'Panjabi, Punjabi','pa','pa_IN',NULL,NULL,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(752,84,'Pali','pi','pi_KH',NULL,NULL,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(753,84,'Persian (Iran)','fa','fa_IR',NULL,NULL,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(754,84,'Polish','pl','pl_PL',NULL,NULL,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(755,84,'Pashto, Pushto','ps','ps_AF',NULL,NULL,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(756,84,'Portuguese (Brazil)','pt','pt_BR',NULL,NULL,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(757,84,'Portuguese (Portugal)','pt','pt_PT',NULL,NULL,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(758,84,'Quechua','qu','qu_PE',NULL,NULL,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(759,84,'Romansh','rm','rm_CH',NULL,NULL,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(760,84,'Kirundi','rn','rn_BI',NULL,NULL,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(761,84,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,NULL,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(762,84,'Russian','ru','ru_RU',NULL,NULL,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(763,84,'Sanskrit','sa','sa_IN',NULL,NULL,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(764,84,'Sardinian','sc','sc_IT',NULL,NULL,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(765,84,'Sindhi','sd','sd_IN',NULL,NULL,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(766,84,'Northern Sami','se','se_NO',NULL,NULL,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(767,84,'Samoan','sm','sm_WS',NULL,NULL,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(768,84,'Sango','sg','sg_CF',NULL,NULL,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(769,84,'Serbian','sr','sr_RS',NULL,NULL,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(770,84,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,NULL,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(771,84,'Shona','sn','sn_ZW',NULL,NULL,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(772,84,'Sinhala, Sinhalese','si','si_LK',NULL,NULL,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(773,84,'Slovak','sk','sk_SK',NULL,NULL,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(774,84,'Slovene','sl','sl_SI',NULL,NULL,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(775,84,'Somali','so','so_SO',NULL,NULL,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(776,84,'Southern Sotho','st','st_ZA',NULL,NULL,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(777,84,'Spanish; Castilian (Spain)','es','es_ES',NULL,NULL,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(778,84,'Spanish; Castilian (Mexico)','es','es_MX',NULL,NULL,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(779,84,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,NULL,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(780,84,'Sundanese','su','su_ID',NULL,NULL,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(781,84,'Swahili','sw','sw_TZ',NULL,NULL,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(782,84,'Swati','ss','ss_ZA',NULL,NULL,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(783,84,'Swedish','sv','sv_SE',NULL,NULL,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(784,84,'Tamil','ta','ta_IN',NULL,NULL,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(785,84,'Telugu','te','te_IN',NULL,NULL,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(786,84,'Tajik','tg','tg_TJ',NULL,NULL,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(787,84,'Thai','th','th_TH',NULL,NULL,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(788,84,'Tigrinya','ti','ti_ET',NULL,NULL,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(789,84,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,NULL,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(790,84,'Turkmen','tk','tk_TM',NULL,NULL,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(791,84,'Tagalog','tl','tl_PH',NULL,NULL,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(792,84,'Tswana','tn','tn_ZA',NULL,NULL,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(793,84,'Tonga (Tonga Islands)','to','to_TO',NULL,NULL,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(794,84,'Turkish','tr','tr_TR',NULL,NULL,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(795,84,'Tsonga','ts','ts_ZA',NULL,NULL,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(796,84,'Tatar','tt','tt_RU',NULL,NULL,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(797,84,'Twi','tw','tw_GH',NULL,NULL,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(798,84,'Tahitian','ty','ty_PF',NULL,NULL,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(799,84,'Uighur, Uyghur','ug','ug_CN',NULL,NULL,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(800,84,'Ukrainian','uk','uk_UA',NULL,NULL,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(801,84,'Urdu','ur','ur_PK',NULL,NULL,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(802,84,'Uzbek','uz','uz_UZ',NULL,NULL,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(803,84,'Venda','ve','ve_ZA',NULL,NULL,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(804,84,'Vietnamese','vi','vi_VN',NULL,NULL,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(805,84,'Volapük','vo','vo_XX',NULL,NULL,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(806,84,'Walloon','wa','wa_BE',NULL,NULL,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(807,84,'Welsh','cy','cy_GB',NULL,NULL,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(808,84,'Wolof','wo','wo_SN',NULL,NULL,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(809,84,'Western Frisian','fy','fy_NL',NULL,NULL,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(810,84,'Xhosa','xh','xh_ZA',NULL,NULL,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(811,84,'Yiddish','yi','yi_US',NULL,NULL,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(812,84,'Yoruba','yo','yo_NG',NULL,NULL,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(813,84,'Zhuang, Chuang','za','za_CN',NULL,NULL,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(814,84,'Zulu','zu','zu_ZA',NULL,NULL,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(815,85,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(816,85,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(817,85,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(818,85,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(819,85,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(820,86,'Cases - Send Copy of an Activity','1','case_activity',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(821,87,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(822,87,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(823,87,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(824,87,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(825,87,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(826,87,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(827,87,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(828,87,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(829,87,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(830,87,'Personal Campaign Pages - Supporter Status Change Notification','10','pcp_status_change',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(831,87,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(832,87,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(833,87,'Additional Payment Receipt or Refund Notification','13','payment_or_refund_notification',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(834,88,'Events - Registration Confirmation and Receipt (off-line)','1','event_offline_receipt',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(835,88,'Events - Registration Confirmation and Receipt (on-line)','2','event_online_receipt',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(836,88,'Events - Receipt only','3','event_registration_receipt',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(837,88,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(838,88,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(839,88,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(840,88,'Events - Registration Transferred Notice','7','participant_transferred',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(841,89,'Tell-a-Friend Email','1','friend',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(842,90,'Memberships - Signup and Renewal Receipts (off-line)','1','membership_offline_receipt',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(843,90,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(844,90,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(845,90,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(846,91,'Test-drive - Receipt Header','1','test_preview',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(847,92,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(848,92,'Pledges - Payment Reminder','2','pledge_reminder',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(849,93,'Profiles - Admin Notification','1','uf_notify',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(850,94,'Petition - signature added','1','petition_sign',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(851,94,'Petition - need verification','2','petition_confirmation_needed',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(852,95,'In Honor of','1','in_honor_of',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(853,95,'In Memory of','2','in_memory_of',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(854,95,'Solicited','3','solicited',NULL,NULL,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(855,95,'Household','4','household',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(856,95,'Workplace Giving','5','workplace',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(857,95,'Foundation Affiliate','6','foundation_affiliate',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(858,95,'3rd-party Service','7','3rd-party_service',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(859,95,'Donor-advised Fund','8','donor-advised_fund',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(860,95,'Matched Gift','9','matched_gift',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(861,95,'Personal Campaign Page','10','pcp',NULL,NULL,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(862,95,'Gift','11','gift',NULL,NULL,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(863,2,'Interview','55','Interview',NULL,0,NULL,55,'Conduct a phone or in person interview.',0,0,1,NULL,NULL,NULL,'fa-comment-o',NULL); +INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `domain_id`, `visibility_id`, `icon`, `color`) VALUES (1,1,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(2,1,'Email','2','Email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(3,1,'Postal Mail','3','Postal Mail',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(4,1,'SMS','4','SMS',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(5,1,'Fax','5','Fax',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(6,2,'Meeting','1','Meeting',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,'fa-slideshare',NULL),(7,2,'Phone Call','2','Phone Call',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,'fa-phone',NULL),(8,2,'Email','3','Email',NULL,1,NULL,3,'Email sent.',0,1,1,NULL,NULL,NULL,'fa-envelope-o',NULL),(9,2,'Outbound SMS','4','SMS',NULL,1,NULL,4,'Text message (SMS) sent.',0,1,1,NULL,NULL,NULL,'fa-mobile',NULL),(10,2,'Event Registration','5','Event Registration',NULL,1,NULL,5,'Online or offline event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(11,2,'Contribution','6','Contribution',NULL,1,NULL,6,'Online or offline contribution.',0,1,1,2,NULL,NULL,NULL,NULL),(12,2,'Membership Signup','7','Membership Signup',NULL,1,NULL,7,'Online or offline membership signup.',0,1,1,3,NULL,NULL,NULL,NULL),(13,2,'Membership Renewal','8','Membership Renewal',NULL,1,NULL,8,'Online or offline membership renewal.',0,1,1,3,NULL,NULL,NULL,NULL),(14,2,'Tell a Friend','9','Tell a Friend',NULL,1,NULL,9,'Send information about a contribution campaign or event to a friend.',0,1,1,NULL,NULL,NULL,NULL,NULL),(15,2,'Pledge Acknowledgment','10','Pledge Acknowledgment',NULL,1,NULL,10,'Send Pledge Acknowledgment.',0,1,1,6,NULL,NULL,NULL,NULL),(16,2,'Pledge Reminder','11','Pledge Reminder',NULL,1,NULL,11,'Send Pledge Reminder.',0,1,1,6,NULL,NULL,NULL,NULL),(17,2,'Inbound Email','12','Inbound Email',NULL,1,NULL,12,'Inbound Email.',0,1,1,NULL,NULL,NULL,NULL,NULL),(18,2,'Open Case','13','Open Case',NULL,0,0,13,'',0,1,1,7,NULL,NULL,'fa-folder-open-o',NULL),(19,2,'Follow up','14','Follow up',NULL,0,0,14,'',0,1,1,7,NULL,NULL,'fa-share-square-o',NULL),(20,2,'Change Case Type','15','Change Case Type',NULL,0,0,15,'',0,1,1,7,NULL,NULL,'fa-random',NULL),(21,2,'Change Case Status','16','Change Case Status',NULL,0,0,16,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(22,2,'Change Case Subject','53','Change Case Subject',NULL,0,0,53,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(23,2,'Change Custom Data','33','Change Custom Data',NULL,0,0,33,'',0,1,1,7,NULL,NULL,'fa-table',NULL),(24,2,'Membership Renewal Reminder','17','Membership Renewal Reminder',NULL,1,NULL,17,'offline membership renewal reminder.',0,1,1,3,NULL,NULL,NULL,NULL),(25,2,'Change Case Start Date','18','Change Case Start Date',NULL,0,0,18,'',0,1,1,7,NULL,NULL,'fa-calendar',NULL),(26,2,'Bulk Email','19','Bulk Email',NULL,1,NULL,19,'Bulk Email Sent.',0,1,1,NULL,NULL,NULL,NULL,NULL),(27,2,'Assign Case Role','20','Assign Case Role',NULL,0,0,20,'',0,1,1,7,NULL,NULL,'fa-user-plus',NULL),(28,2,'Remove Case Role','21','Remove Case Role',NULL,0,0,21,'',0,1,1,7,NULL,NULL,'fa-user-times',NULL),(29,2,'Print/Merge Document','22','Print PDF Letter',NULL,0,NULL,22,'Export letters and other printable documents.',0,1,1,NULL,NULL,NULL,'fa-file-pdf-o',NULL),(30,2,'Merge Case','23','Merge Case',NULL,0,NULL,23,'',0,1,1,7,NULL,NULL,'fa-compress',NULL),(31,2,'Reassigned Case','24','Reassigned Case',NULL,0,NULL,24,'',0,1,1,7,NULL,NULL,'fa-user-circle-o',NULL),(32,2,'Link Cases','25','Link Cases',NULL,0,NULL,25,'',0,1,1,7,NULL,NULL,'fa-link',NULL),(33,2,'Change Case Tags','26','Change Case Tags',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-tags',NULL),(34,2,'Add Client To Case','27','Add Client To Case',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-users',NULL),(35,2,'Survey','28','Survey',NULL,0,0,27,'',0,1,1,9,NULL,NULL,NULL,NULL),(36,2,'Canvass','29','Canvass',NULL,0,0,28,'',0,1,1,9,NULL,NULL,NULL,NULL),(37,2,'PhoneBank','30','PhoneBank',NULL,0,0,29,'',0,1,1,9,NULL,NULL,NULL,NULL),(38,2,'WalkList','31','WalkList',NULL,0,0,30,'',0,1,1,9,NULL,NULL,NULL,NULL),(39,2,'Petition Signature','32','Petition',NULL,0,0,31,'',0,1,1,9,NULL,NULL,NULL,NULL),(40,2,'Mass SMS','34','Mass SMS',NULL,1,NULL,34,'Mass SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(41,2,'Change Membership Status','35','Change Membership Status',NULL,1,NULL,35,'Change Membership Status.',0,1,1,3,NULL,NULL,NULL,NULL),(42,2,'Change Membership Type','36','Change Membership Type',NULL,1,NULL,36,'Change Membership Type.',0,1,1,3,NULL,NULL,NULL,NULL),(43,2,'Cancel Recurring Contribution','37','Cancel Recurring Contribution',NULL,1,0,37,'',0,1,1,2,NULL,NULL,NULL,NULL),(44,2,'Update Recurring Contribution Billing Details','38','Update Recurring Contribution Billing Details',NULL,1,0,38,'',0,1,1,2,NULL,NULL,NULL,NULL),(45,2,'Update Recurring Contribution','39','Update Recurring Contribution',NULL,1,0,39,'',0,1,1,2,NULL,NULL,NULL,NULL),(46,2,'Reminder Sent','40','Reminder Sent',NULL,1,0,40,'',0,1,1,NULL,NULL,NULL,NULL,NULL),(47,2,'Export Accounting Batch','41','Export Accounting Batch',NULL,1,0,41,'Export Accounting Batch',0,1,1,2,NULL,NULL,NULL,NULL),(48,2,'Create Batch','42','Create Batch',NULL,1,0,42,'Create Batch',0,1,1,2,NULL,NULL,NULL,NULL),(49,2,'Edit Batch','43','Edit Batch',NULL,1,0,43,'Edit Batch',0,1,1,2,NULL,NULL,NULL,NULL),(50,2,'SMS delivery','44','SMS delivery',NULL,1,NULL,44,'SMS delivery',0,1,1,NULL,NULL,NULL,NULL,NULL),(51,2,'Inbound SMS','45','Inbound SMS',NULL,1,NULL,45,'Inbound SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(52,2,'Payment','46','Payment',NULL,1,NULL,46,'Additional payment recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(53,2,'Refund','47','Refund',NULL,1,NULL,47,'Refund recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(54,2,'Change Registration','48','Change Registration',NULL,1,NULL,48,'Changes to an existing event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(55,2,'Downloaded Invoice','49','Downloaded Invoice',NULL,1,NULL,49,'Downloaded Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(56,2,'Emailed Invoice','50','Emailed Invoice',NULL,1,NULL,50,'Emailed Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(57,2,'Contact Merged','51','Contact Merged',NULL,1,NULL,51,'Contact Merged',0,1,1,NULL,NULL,NULL,NULL,NULL),(58,2,'Contact Deleted by Merge','52','Contact Deleted by Merge',NULL,1,NULL,52,'Contact was merged into another contact',0,1,1,NULL,NULL,NULL,NULL,NULL),(59,2,'Failed Payment','54','Failed Payment',NULL,1,0,54,'Failed Payment',0,1,1,2,NULL,NULL,NULL,NULL),(60,3,'Female','1','Female',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(61,3,'Male','2','Male',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(62,3,'Other','3','Other',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(63,4,'Yahoo','1','Yahoo',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(64,4,'MSN','2','Msn',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(65,4,'AIM','3','Aim',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(66,4,'GTalk','4','Gtalk',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(67,4,'Jabber','5','Jabber',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(68,4,'Skype','6','Skype',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(69,5,'Sprint','1','Sprint',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(70,5,'Verizon','2','Verizon',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(71,5,'Cingular','3','Cingular',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(72,6,'Mrs.','1','Mrs.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(73,6,'Ms.','2','Ms.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(74,6,'Mr.','3','Mr.',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(75,6,'Dr.','4','Dr.',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(76,7,'Jr.','1','Jr.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(77,7,'Sr.','2','Sr.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(78,7,'II','3','II',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(79,7,'III','4','III',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(80,7,'IV','5','IV',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(81,7,'V','6','V',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(82,7,'VI','7','VI',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(83,7,'VII','8','VII',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(84,8,'Administrator','1','Admin',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(85,8,'Authenticated','2','Auth',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(86,9,'Visa','1','Visa',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(87,9,'MasterCard','2','MasterCard',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(88,9,'Amex','3','Amex',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(89,9,'Discover','4','Discover',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(90,10,'Credit Card','1','Credit Card',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(91,10,'Debit Card','2','Debit Card',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(92,10,'Cash','3','Cash',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(93,10,'Check','4','Check',NULL,0,1,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(94,10,'EFT','5','EFT',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(95,11,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(96,11,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(97,11,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(98,11,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(99,11,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(100,11,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(101,11,'Refunded','7','Refunded',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(102,11,'Partially paid','8','Partially paid',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(103,11,'Pending refund','9','Pending refund',NULL,0,NULL,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(104,11,'Chargeback','10','Chargeback',NULL,0,NULL,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(105,11,'Template','11','Template',NULL,0,NULL,11,'Status for contribution records which represent a template for a recurring contribution rather than an actual contribution. This status is transitional, to ensure that said contributions don\\\'t appear in reports. The is_template field is the preferred way to find and filter these contributions.',0,1,1,NULL,NULL,NULL,NULL,NULL),(106,12,'Waiting Review','1','Waiting Review',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(107,12,'Approved','2','Approved',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(108,12,'Not Approved','3','Not Approved',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(109,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(110,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(111,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(112,14,'Attendee','1','Attendee',NULL,1,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(113,14,'Volunteer','2','Volunteer',NULL,1,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(114,14,'Host','3','Host',NULL,1,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(115,14,'Speaker','4','Speaker',NULL,1,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(116,15,'Conference','1','Conference',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(117,15,'Exhibition','2','Exhibition',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(118,15,'Fundraiser','3','Fundraiser',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(119,15,'Meeting','4','Meeting',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(120,15,'Performance','5','Performance',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(121,15,'Workshop','6','Workshop',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(122,16,'Activities','1','activity',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(123,16,'Relationships','2','rel',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(124,16,'Groups','3','group',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(125,16,'Notes','4','note',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(126,16,'Tags','5','tag',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(127,16,'Change Log','6','log',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(128,16,'Contributions','7','CiviContribute',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(129,16,'Memberships','8','CiviMember',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(130,16,'Events','9','CiviEvent',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(131,16,'Cases','10','CiviCase',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(132,16,'Grants','11','CiviGrant',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(133,16,'Pledges','13','CiviPledge',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(134,16,'Mailings','14','CiviMail',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(135,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(136,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(137,17,'Hide Smart Groups','3','hide',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(138,18,'Custom Data','1','CustomData',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(139,18,'Address','2','Address',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(140,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(141,18,'Notes','4','Notes',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(142,18,'Demographics','5','Demographics',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(143,18,'Tags and Groups','6','TagsAndGroups',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(144,18,'Email','7','Email',NULL,1,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(145,18,'Phone','8','Phone',NULL,1,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(146,18,'Instant Messenger','9','IM',NULL,1,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(147,18,'Open ID','10','OpenID',NULL,1,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(148,18,'Website','11','Website',NULL,1,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(149,18,'Prefix','12','Prefix',NULL,2,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(150,18,'Formal Title','13','Formal Title',NULL,2,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(151,18,'First Name','14','First Name',NULL,2,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(152,18,'Middle Name','15','Middle Name',NULL,2,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(153,18,'Last Name','16','Last Name',NULL,2,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(154,18,'Suffix','17','Suffix',NULL,2,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(155,19,'Address Fields','1','location',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(156,19,'Custom Fields','2','custom',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(157,19,'Activities','3','activity',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(158,19,'Relationships','4','relationship',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(159,19,'Notes','5','notes',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(160,19,'Change Log','6','changeLog',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(161,19,'Contributions','7','CiviContribute',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(162,19,'Memberships','8','CiviMember',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(163,19,'Events','9','CiviEvent',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(164,19,'Cases','10','CiviCase',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(165,19,'Grants','12','CiviGrant',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(166,19,'Demographics','13','demographics',NULL,0,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(167,19,'Pledges','15','CiviPledge',NULL,0,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(168,19,'Contact Type','16','contactType',NULL,0,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(169,19,'Groups','17','groups',NULL,0,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(170,19,'Tags','18','tags',NULL,0,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(171,19,'Mailing','19','CiviMail',NULL,0,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(172,20,'Groups','1','Groups',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(173,20,'Contributions','2','CiviContribute',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(174,20,'Memberships','3','CiviMember',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(175,20,'Events','4','CiviEvent',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(176,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(177,20,'Pledges','7','CiviPledge',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(178,20,'Personal Campaign Pages','8','PCP',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(179,20,'Assigned Activities','9','Assigned Activities',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(180,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(181,45,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(182,45,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(183,45,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(184,45,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(185,45,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(186,45,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(187,45,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(188,46,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(189,46,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(190,46,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(191,46,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(192,46,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(193,46,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(194,46,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(195,21,'Street Address','1','street_address',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(196,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(197,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(198,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(199,21,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(200,21,'Postal Code','6','postal_code',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(201,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(202,21,'County','8','county',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(203,21,'State/Province','9','state_province',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(204,21,'Country','10','country',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(205,21,'Latitude','11','geo_code_1',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(206,21,'Longitude','12','geo_code_2',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(207,21,'Address Name','13','address_name',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(208,21,'Street Address Parsing','14','street_address_parsing',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(209,22,'Access Control','1','Access Control',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(210,22,'Mailing List','2','Mailing List',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(211,23,'Submitted','1','Submitted',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(212,23,'Eligible','2','Eligible',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(213,23,'Ineligible','3','Ineligible',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(214,23,'Paid','4','Paid',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(215,23,'Awaiting Information','5','Awaiting Information',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(216,23,'Withdrawn','6','Withdrawn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(217,23,'Approved for Payment','7','Approved for Payment',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(218,25,'CRM_Contact_Form_Search_Custom_Sample','1','CRM_Contact_Form_Search_Custom_Sample',NULL,0,NULL,1,'Household Name and State',0,0,1,NULL,NULL,NULL,NULL,NULL),(219,25,'CRM_Contact_Form_Search_Custom_ContributionAggregate','2','CRM_Contact_Form_Search_Custom_ContributionAggregate',NULL,0,NULL,2,'Contribution Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(220,25,'CRM_Contact_Form_Search_Custom_Group','4','CRM_Contact_Form_Search_Custom_Group',NULL,0,NULL,4,'Include / Exclude Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(221,25,'CRM_Contact_Form_Search_Custom_PostalMailing','5','CRM_Contact_Form_Search_Custom_PostalMailing',NULL,0,NULL,5,'Postal Mailing',0,0,1,NULL,NULL,NULL,NULL,NULL),(222,25,'CRM_Contact_Form_Search_Custom_Proximity','6','CRM_Contact_Form_Search_Custom_Proximity',NULL,0,NULL,6,'Proximity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(223,25,'CRM_Contact_Form_Search_Custom_EventAggregate','7','CRM_Contact_Form_Search_Custom_EventAggregate',NULL,0,NULL,7,'Event Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(224,25,'CRM_Contact_Form_Search_Custom_ActivitySearch','8','CRM_Contact_Form_Search_Custom_ActivitySearch',NULL,0,NULL,8,'Activity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(225,25,'CRM_Contact_Form_Search_Custom_PriceSet','9','CRM_Contact_Form_Search_Custom_PriceSet',NULL,0,NULL,9,'Price Set Details for Event Participants',0,0,1,NULL,NULL,NULL,NULL,NULL),(226,25,'CRM_Contact_Form_Search_Custom_ZipCodeRange','10','CRM_Contact_Form_Search_Custom_ZipCodeRange',NULL,0,NULL,10,'Zip Code Range',0,0,1,NULL,NULL,NULL,NULL,NULL),(227,25,'CRM_Contact_Form_Search_Custom_DateAdded','11','CRM_Contact_Form_Search_Custom_DateAdded',NULL,0,NULL,11,'Date Added to CiviCRM',0,0,1,NULL,NULL,NULL,NULL,NULL),(228,25,'CRM_Contact_Form_Search_Custom_MultipleValues','12','CRM_Contact_Form_Search_Custom_MultipleValues',NULL,0,NULL,12,'Custom Group Multiple Values Listing',0,0,1,NULL,NULL,NULL,NULL,NULL),(229,25,'CRM_Contact_Form_Search_Custom_ContribSYBNT','13','CRM_Contact_Form_Search_Custom_ContribSYBNT',NULL,0,NULL,13,'Contributions made in Year X and not Year Y',0,0,1,NULL,NULL,NULL,NULL,NULL),(230,25,'CRM_Contact_Form_Search_Custom_TagContributions','14','CRM_Contact_Form_Search_Custom_TagContributions',NULL,0,NULL,14,'Find Contribution Amounts by Tag',0,0,1,NULL,NULL,NULL,NULL,NULL),(231,25,'CRM_Contact_Form_Search_Custom_FullText','15','CRM_Contact_Form_Search_Custom_FullText',NULL,0,NULL,15,'Full-text Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(232,41,'Constituent Report (Summary)','contact/summary','CRM_Report_Form_Contact_Summary',NULL,0,NULL,1,'Provides a list of address and telephone information for constituent records in your system.',0,0,1,NULL,NULL,NULL,NULL,NULL),(233,41,'Constituent Report (Detail)','contact/detail','CRM_Report_Form_Contact_Detail',NULL,0,NULL,2,'Provides contact-related information on contributions, memberships, events and activities.',0,0,1,NULL,NULL,NULL,NULL,NULL),(234,41,'Activity Details Report','activity','CRM_Report_Form_Activity',NULL,0,NULL,3,'Provides a list of constituent activity including activity statistics for one/all contacts during a given date range(required)',0,0,1,NULL,NULL,NULL,NULL,NULL),(235,41,'Walk / Phone List Report','walklist','CRM_Report_Form_Walklist_Walklist',NULL,0,NULL,4,'Provides a detailed report for your walk/phonelist for targeted contacts',0,0,0,NULL,NULL,NULL,NULL,NULL),(236,41,'Current Employer Report','contact/currentEmployer','CRM_Report_Form_Contact_CurrentEmployer',NULL,0,NULL,5,'Provides detail list of employer employee relationships along with employment details Ex Join Date',0,0,1,NULL,NULL,NULL,NULL,NULL),(237,41,'Contribution Summary Report','contribute/summary','CRM_Report_Form_Contribute_Summary',NULL,0,NULL,6,'Groups and totals contributions by criteria including contact, time period, financial type, contributor location, etc.',0,0,1,2,NULL,NULL,NULL,NULL),(238,41,'Contribution Detail Report','contribute/detail','CRM_Report_Form_Contribute_Detail',NULL,0,NULL,7,'Lists specific contributions by criteria including contact, time period, financial type, contributor location, etc. Contribution summary report points to this report for contribution details.',0,0,1,2,NULL,NULL,NULL,NULL),(239,41,'Repeat Contributions Report','contribute/repeat','CRM_Report_Form_Contribute_Repeat',NULL,0,NULL,8,'Given two date ranges, shows contacts who contributed in both the date ranges with the amount contributed in each and the percentage increase / decrease.',0,0,1,2,NULL,NULL,NULL,NULL),(240,41,'Contributions by Organization Report','contribute/organizationSummary','CRM_Report_Form_Contribute_OrganizationSummary',NULL,0,NULL,9,'Displays a detailed list of contributions grouped by organization, which includes contributions made by employees for the organisation.',0,0,1,2,NULL,NULL,NULL,NULL),(241,41,'Contributions by Household Report','contribute/householdSummary','CRM_Report_Form_Contribute_HouseholdSummary',NULL,0,NULL,10,'Displays a detailed list of contributions grouped by household which includes contributions made by members of the household.',0,0,1,2,NULL,NULL,NULL,NULL),(242,41,'Top Donors Report','contribute/topDonor','CRM_Report_Form_Contribute_TopDonor',NULL,0,NULL,11,'Provides a list of the top donors during a time period you define. You can include as many donors as you want (for example, top 100 of your donors).',0,0,1,2,NULL,NULL,NULL,NULL),(243,41,'SYBUNT Report','contribute/sybunt','CRM_Report_Form_Contribute_Sybunt',NULL,0,NULL,12,'SYBUNT means some year(s) but not this year. Provides a list of constituents who donated at some time in the history of your organization but did not donate during the time period you specify.',0,0,1,2,NULL,NULL,NULL,NULL),(244,41,'LYBUNT Report','contribute/lybunt','CRM_Report_Form_Contribute_Lybunt',NULL,0,NULL,13,'LYBUNT means last year but not this year. Provides a list of constituents who donated last year but did not donate during the time period you specify as the current year.',0,0,1,2,NULL,NULL,NULL,NULL),(245,41,'Soft Credit Report','contribute/softcredit','CRM_Report_Form_Contribute_SoftCredit',NULL,0,NULL,14,'Shows contributions made by contacts that have been soft-credited to other contacts.',0,0,1,2,NULL,NULL,NULL,NULL),(246,41,'Membership Report (Summary)','member/summary','CRM_Report_Form_Member_Summary',NULL,0,NULL,15,'Provides a summary of memberships by type and join date.',0,0,1,3,NULL,NULL,NULL,NULL),(247,41,'Membership Report (Detail)','member/detail','CRM_Report_Form_Member_Detail',NULL,0,NULL,16,'Provides a list of members along with their membership status and membership details (Join Date, Start Date, End Date). Can also display contributions (payments) associated with each membership.',0,0,1,3,NULL,NULL,NULL,NULL),(248,41,'Membership Report (Lapsed)','member/lapse','CRM_Report_Form_Member_Lapse',NULL,0,NULL,17,'Provides a list of memberships that lapsed or will lapse before the date you specify.',0,0,1,3,NULL,NULL,NULL,NULL),(249,41,'Event Participant Report (List)','event/participantListing','CRM_Report_Form_Event_ParticipantListing',NULL,0,NULL,18,'Provides lists of participants for an event.',0,0,1,1,NULL,NULL,NULL,NULL),(250,41,'Event Income Report (Summary)','event/summary','CRM_Report_Form_Event_Summary',NULL,0,NULL,19,'Provides an overview of event income. You can include key information such as event ID, registration, attendance, and income generated to help you determine the success of an event.',0,0,1,1,NULL,NULL,NULL,NULL),(251,41,'Event Income Report (Detail)','event/income','CRM_Report_Form_Event_Income',NULL,0,NULL,20,'Helps you to analyze the income generated by an event. The report can include details by participant type, status and payment method.',0,0,1,1,NULL,NULL,NULL,NULL),(252,41,'Pledge Detail Report','pledge/detail','CRM_Report_Form_Pledge_Detail',NULL,0,NULL,21,'List of pledges including amount pledged, pledge status, next payment date, balance due, total amount paid etc.',0,0,1,6,NULL,NULL,NULL,NULL),(253,41,'Pledged but not Paid Report','pledge/pbnp','CRM_Report_Form_Pledge_Pbnp',NULL,0,NULL,22,'Pledged but not Paid Report',0,0,1,6,NULL,NULL,NULL,NULL),(254,41,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,NULL,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL),(255,41,'Case Summary Report','case/summary','CRM_Report_Form_Case_Summary',NULL,0,NULL,24,'Provides a summary of cases and their duration by date range, status, staff member and / or case role.',0,0,1,7,NULL,NULL,NULL,NULL),(256,41,'Case Time Spent Report','case/timespent','CRM_Report_Form_Case_TimeSpent',NULL,0,NULL,25,'Aggregates time spent on case and / or non-case activities by activity type and contact.',0,0,1,7,NULL,NULL,NULL,NULL),(257,41,'Contact Demographics Report','case/demographics','CRM_Report_Form_Case_Demographics',NULL,0,NULL,26,'Demographic breakdown for case clients (and or non-case contacts) in your database. Includes custom contact fields.',0,0,1,7,NULL,NULL,NULL,NULL),(258,41,'Database Log Report','contact/log','CRM_Report_Form_Contact_Log',NULL,0,NULL,27,'Log of contact and activity records created or updated in a given date range.',0,0,1,NULL,NULL,NULL,NULL,NULL),(259,41,'Activity Summary Report','activitySummary','CRM_Report_Form_ActivitySummary',NULL,0,NULL,28,'Shows activity statistics by type / date',0,0,1,NULL,NULL,NULL,NULL,NULL),(260,41,'Bookkeeping Transactions Report','contribute/bookkeeping','CRM_Report_Form_Contribute_Bookkeeping',NULL,0,0,29,'Shows Bookkeeping Transactions Report',0,0,1,2,NULL,NULL,NULL,NULL),(261,41,'Grant Report (Detail)','grant/detail','CRM_Report_Form_Grant_Detail',NULL,0,0,30,'Grant Report Detail',0,0,1,5,NULL,NULL,NULL,NULL),(262,41,'Participant list Count Report','event/participantlist','CRM_Report_Form_Event_ParticipantListCount',NULL,0,0,31,'Shows the Participant list with Participant Count.',0,0,1,1,NULL,NULL,NULL,NULL),(263,41,'Income Count Summary Report','event/incomesummary','CRM_Report_Form_Event_IncomeCountSummary',NULL,0,0,32,'Shows the Income Summary of events with Count.',0,0,1,1,NULL,NULL,NULL,NULL),(264,41,'Case Detail Report','case/detail','CRM_Report_Form_Case_Detail',NULL,0,0,33,'Case Details',0,0,1,7,NULL,NULL,NULL,NULL),(265,41,'Mail Bounce Report','Mailing/bounce','CRM_Report_Form_Mailing_Bounce',NULL,0,NULL,34,'Bounce Report for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(266,41,'Mail Summary Report','Mailing/summary','CRM_Report_Form_Mailing_Summary',NULL,0,NULL,35,'Summary statistics for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(267,41,'Mail Opened Report','Mailing/opened','CRM_Report_Form_Mailing_Opened',NULL,0,NULL,36,'Display contacts who opened emails from a mailing',0,0,1,4,NULL,NULL,NULL,NULL),(268,41,'Mail Click-Through Report','Mailing/clicks','CRM_Report_Form_Mailing_Clicks',NULL,0,NULL,37,'Display clicks from each mailing',0,0,1,4,NULL,NULL,NULL,NULL),(269,41,'Contact Logging Report (Summary)','logging/contact/summary','CRM_Report_Form_Contact_LoggingSummary',NULL,0,NULL,38,'Contact modification report for the logging infrastructure (summary).',0,0,0,NULL,NULL,NULL,NULL,NULL),(270,41,'Contact Logging Report (Detail)','logging/contact/detail','CRM_Report_Form_Contact_LoggingDetail',NULL,0,NULL,39,'Contact modification report for the logging infrastructure (detail).',0,0,0,NULL,NULL,NULL,NULL,NULL),(271,41,'Grant Report (Statistics)','grant/statistics','CRM_Report_Form_Grant_Statistics',NULL,0,NULL,42,'Shows statistics for Grants.',0,0,1,5,NULL,NULL,NULL,NULL),(272,41,'Survey Report (Detail)','survey/detail','CRM_Report_Form_Campaign_SurveyDetails',NULL,0,NULL,43,'Detailed report for canvassing, phone-banking, walk lists or other surveys.',0,0,1,9,NULL,NULL,NULL,NULL),(273,41,'Personal Campaign Page Report','contribute/pcp','CRM_Report_Form_Contribute_PCP',NULL,0,NULL,44,'Summarizes amount raised and number of contributors for each Personal Campaign Page.',0,0,1,2,NULL,NULL,NULL,NULL),(274,41,'Pledge Summary Report','pledge/summary','CRM_Report_Form_Pledge_Summary',NULL,0,NULL,45,'Groups and totals pledges by criteria including contact, time period, pledge status, location, etc.',0,0,1,6,NULL,NULL,NULL,NULL),(275,41,'Contribution Aggregate by Relationship','contribute/history','CRM_Report_Form_Contribute_History',NULL,0,NULL,46,'List contact\'s donation history, grouped by year, along with contributions attributed to any of the contact\'s related contacts.',0,0,1,2,NULL,NULL,NULL,NULL),(276,41,'Mail Detail Report','mailing/detail','CRM_Report_Form_Mailing_Detail',NULL,0,NULL,47,'Provides reporting on Intended and Successful Deliveries, Unsubscribes and Opt-outs, Replies and Forwards.',0,0,1,4,NULL,NULL,NULL,NULL),(277,41,'Contribution and Membership Details','member/contributionDetail','CRM_Report_Form_Member_ContributionDetail',NULL,0,NULL,48,'Contribution details for any type of contribution, plus associated membership information for contributions which are in payment for memberships.',0,0,1,3,NULL,NULL,NULL,NULL),(278,41,'Recurring Contributions Report','contribute/recur','CRM_Report_Form_Contribute_Recur',NULL,0,NULL,49,'Provides information about the status of recurring contributions',0,0,1,2,NULL,NULL,NULL,NULL),(279,41,'Recurring Contributions Summary','contribute/recursummary','CRM_Report_Form_Contribute_RecurSummary',NULL,0,NULL,49,'Provides simple summary for each payment instrument for which there are recurring contributions (e.g. Credit Card, Standing Order, Direct Debit, etc., NULL), showing within a given date range.',0,0,1,2,NULL,NULL,NULL,NULL),(280,41,'Deferred Revenue Details','contribute/deferredrevenue','CRM_Report_Form_Contribute_DeferredRevenue',NULL,0,NULL,50,'Deferred Revenue Details Report',0,0,1,2,NULL,NULL,NULL,NULL),(281,26,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(282,26,'Completed','2','Completed',NULL,1,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(283,26,'Cancelled','3','Cancelled',NULL,2,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(284,26,'Left Message','4','Left Message',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(285,26,'Unreachable','5','Unreachable',NULL,2,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(286,26,'Not Required','6','Not Required',NULL,2,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(287,26,'Available','7','Available',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(288,26,'No-show','8','No_show',NULL,2,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(289,28,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(290,28,'Resolved','2','Closed','Closed',0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(291,28,'Urgent','3','Urgent','Opened',0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(292,29,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL),(293,29,'Name and Email','2','Name and Email',NULL,0,0,2,'CRM_Event_Page_ParticipantListing_NameAndEmail',0,1,1,NULL,NULL,NULL,NULL,NULL),(294,29,'Name, Status and Register Date','3','Name, Status and Register Date',NULL,0,0,3,'CRM_Event_Page_ParticipantListing_NameStatusAndDate',0,1,1,NULL,NULL,NULL,NULL,NULL),(295,30,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(296,30,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(297,30,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(298,30,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(299,30,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(300,30,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(301,30,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(302,30,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(303,30,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(304,30,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(305,30,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(306,30,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(307,30,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(308,30,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(309,30,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(310,30,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(311,33,'Textarea','1','Textarea',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(312,33,'CKEditor','2','CKEditor',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(313,32,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(314,32,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(315,32,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(316,32,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(317,32,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(318,32,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(319,32,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(320,32,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(321,32,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(322,32,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(323,32,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(324,32,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(325,32,'Export Grant','13','Export Grant',NULL,0,0,13,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(326,32,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(327,34,'day','day','day',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(328,34,'week','week','week',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(329,34,'month','month','month',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(330,34,'year','year','year',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(331,35,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(332,35,'Mobile','2','Mobile',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(333,35,'Fax','3','Fax',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(334,35,'Pager','4','Pager',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(335,35,'Voicemail','5','Voicemail',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(336,36,'Participant Role','1','ParticipantRole',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(337,36,'Participant Event Name','2','ParticipantEventName',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(338,36,'Participant Event Type','3','ParticipantEventType',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(339,37,'Public','1','public',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(340,37,'Admin','2','admin',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(341,38,'IMAP','1','IMAP',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(342,38,'Maildir','2','Maildir',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(343,38,'POP3','3','POP3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(344,38,'Localdir','4','Localdir',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(345,38,'IMAP XOAUTH2','5','IMAP_XOAUTH2',NULL,0,NULL,5,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(346,39,'Urgent','1','Urgent',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(347,39,'Normal','2','Normal',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(348,39,'Low','3','Low',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(349,40,'Vancouver','city_','city_',NULL,0,NULL,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(350,40,'/(19|20)(\\d{2})-(\\d{1,2})-(\\d{1,2})/','date_','date_',NULL,1,NULL,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(351,42,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(352,42,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(353,42,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(354,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(355,42,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(356,43,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(357,43,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(358,43,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(359,43,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(360,43,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(361,44,'{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}','1','}{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(362,44,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(363,44,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(364,44,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(365,47,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(366,47,'Main','2','Main',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(367,47,'Facebook','3','Facebook',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(368,47,'Instagram','5','Instagram',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(369,47,'LinkedIn','6','LinkedIn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(370,47,'MySpace','7','MySpace',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(371,47,'Pinterest','8','Pinterest',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(372,47,'SnapChat','9','SnapChat',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(373,47,'Tumblr','10','Tumblr',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(374,47,'Twitter','11','Twitter',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(375,47,'Vine','12','Vine ',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(376,48,'Contacts','civicrm_contact','Contacts',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(377,48,'Activities','civicrm_activity','Activities',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(378,48,'Cases','civicrm_case','Cases',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(379,48,'Attachments','civicrm_file','Attachements',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(380,49,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(381,50,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL),(382,50,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL),(383,50,'With Logo','3','CRM_Event_Badge_Logo',NULL,0,0,3,'You can set your own background image',0,1,1,NULL,NULL,NULL,NULL,NULL),(384,50,'5395 with Logo','4','CRM_Event_Badge_Logo5395',NULL,0,0,4,'Avery 5395 compatible labels with logo (4 up by 2, 59.2mm x 85.7mm)',0,1,1,NULL,NULL,NULL,NULL,NULL),(385,51,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(386,51,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(387,52,'Direct Mail','1','Direct Mail',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(388,52,'Referral Program','2','Referral Program',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(389,52,'Constituent Engagement','3','Constituent Engagement',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(390,53,'Planned','1','Planned',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(391,53,'In Progress','2','In Progress',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(392,53,'Completed','3','Completed',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(393,53,'Cancelled','4','Cancelled',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(394,56,'1','1','1',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(395,56,'2','2','2',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(396,56,'3','3','3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(397,56,'4','4','4',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(398,56,'5','5','5',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(399,58,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(400,58,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(401,58,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(402,58,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(403,58,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(404,58,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(405,58,'Envelope #9','{\"metric\":\"pt\",\"width\":638.93,\"height\":278.93}','envelope-9',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(406,58,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(407,58,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(408,58,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(409,58,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(410,58,'Envelope ISO B4','{\"metric\":\"pt\",\"width\":1000.63,\"height\":708.66}','envelope-b4',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(411,58,'Envelope ISO B5','{\"metric\":\"pt\",\"width\":708.66,\"height\":498.9}','envelope-b5',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(412,58,'Envelope ISO B6','{\"metric\":\"pt\",\"width\":498.9,\"height\":354.33}','envelope-b6',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(413,58,'Envelope ISO C3','{\"metric\":\"pt\",\"width\":1298.27,\"height\":918.42}','envelope-c3',NULL,NULL,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(414,58,'Envelope ISO C4','{\"metric\":\"pt\",\"width\":918.42,\"height\":649.13}','envelope-c4',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(415,58,'Envelope ISO C5','{\"metric\":\"pt\",\"width\":649.13,\"height\":459.21}','envelope-c5',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(416,58,'Envelope ISO C6','{\"metric\":\"pt\",\"width\":459.21,\"height\":323.15}','envelope-c6',NULL,NULL,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(417,58,'Envelope ISO DL','{\"metric\":\"pt\",\"width\":623.622,\"height\":311.811}','envelope-dl',NULL,NULL,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(418,58,'ISO A0','{\"metric\":\"pt\",\"width\":2383.94,\"height\":3370.39}','a0',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(419,58,'ISO A1','{\"metric\":\"pt\",\"width\":1683.78,\"height\":2383.94}','a1',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(420,58,'ISO A2','{\"metric\":\"pt\",\"width\":1190.55,\"height\":1683.78}','a2',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(421,58,'ISO A3','{\"metric\":\"pt\",\"width\":841.89,\"height\":1190.55}','a3',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(422,58,'ISO A4','{\"metric\":\"pt\",\"width\":595.28,\"height\":841.89}','a4',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(423,58,'ISO A5','{\"metric\":\"pt\",\"width\":419.53,\"height\":595.28}','a5',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(424,58,'ISO A6','{\"metric\":\"pt\",\"width\":297.64,\"height\":419.53}','a6',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(425,58,'ISO A7','{\"metric\":\"pt\",\"width\":209.76,\"height\":297.64}','a7',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(426,58,'ISO A8','{\"metric\":\"pt\",\"width\":147.4,\"height\":209.76}','a8',NULL,NULL,0,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(427,58,'ISO A9','{\"metric\":\"pt\",\"width\":104.88,\"height\":147.4}','a9',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(428,58,'ISO A10','{\"metric\":\"pt\",\"width\":73.7,\"height\":104.88}','a10',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(429,58,'ISO B0','{\"metric\":\"pt\",\"width\":2834.65,\"height\":4008.19}','b0',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(430,58,'ISO B1','{\"metric\":\"pt\",\"width\":2004.09,\"height\":2834.65}','b1',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(431,58,'ISO B2','{\"metric\":\"pt\",\"width\":1417.32,\"height\":2004.09}','b2',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(432,58,'ISO B3','{\"metric\":\"pt\",\"width\":1000.63,\"height\":1417.32}','b3',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(433,58,'ISO B4','{\"metric\":\"pt\",\"width\":708.66,\"height\":1000.63}','b4',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(434,58,'ISO B5','{\"metric\":\"pt\",\"width\":498.9,\"height\":708.66}','b5',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(435,58,'ISO B6','{\"metric\":\"pt\",\"width\":354.33,\"height\":498.9}','b6',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(436,58,'ISO B7','{\"metric\":\"pt\",\"width\":249.45,\"height\":354.33}','b7',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(437,58,'ISO B8','{\"metric\":\"pt\",\"width\":175.75,\"height\":249.45}','b8',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(438,58,'ISO B9','{\"metric\":\"pt\",\"width\":124.72,\"height\":175.75}','b9',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(439,58,'ISO B10','{\"metric\":\"pt\",\"width\":87.87,\"height\":124.72}','b10',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(440,58,'ISO C0','{\"metric\":\"pt\",\"width\":2599.37,\"height\":3676.54}','c0',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(441,58,'ISO C1','{\"metric\":\"pt\",\"width\":1836.85,\"height\":2599.37}','c1',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(442,58,'ISO C2','{\"metric\":\"pt\",\"width\":1298.27,\"height\":1836.85}','c2',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(443,58,'ISO C3','{\"metric\":\"pt\",\"width\":918.43,\"height\":1298.27}','c3',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(444,58,'ISO C4','{\"metric\":\"pt\",\"width\":649.13,\"height\":918.43}','c4',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(445,58,'ISO C5','{\"metric\":\"pt\",\"width\":459.21,\"height\":649.13}','c5',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(446,58,'ISO C6','{\"metric\":\"pt\",\"width\":323.15,\"height\":459.21}','c6',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(447,58,'ISO C7','{\"metric\":\"pt\",\"width\":229.61,\"height\":323.15}','c7',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(448,58,'ISO C8','{\"metric\":\"pt\",\"width\":161.57,\"height\":229.61}','c8',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(449,58,'ISO C9','{\"metric\":\"pt\",\"width\":113.39,\"height\":161.57}','c9',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(450,58,'ISO C10','{\"metric\":\"pt\",\"width\":79.37,\"height\":113.39}','c10',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(451,58,'ISO RA0','{\"metric\":\"pt\",\"width\":2437.8,\"height\":3458.27}','ra0',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(452,58,'ISO RA1','{\"metric\":\"pt\",\"width\":1729.13,\"height\":2437.8}','ra1',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(453,58,'ISO RA2','{\"metric\":\"pt\",\"width\":1218.9,\"height\":1729.13}','ra2',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(454,58,'ISO RA3','{\"metric\":\"pt\",\"width\":864.57,\"height\":1218.9}','ra3',NULL,NULL,0,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(455,58,'ISO RA4','{\"metric\":\"pt\",\"width\":609.45,\"height\":864.57}','ra4',NULL,NULL,0,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(456,58,'ISO SRA0','{\"metric\":\"pt\",\"width\":2551.18,\"height\":3628.35}','sra0',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(457,58,'ISO SRA1','{\"metric\":\"pt\",\"width\":1814.17,\"height\":2551.18}','sra1',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(458,58,'ISO SRA2','{\"metric\":\"pt\",\"width\":1275.59,\"height\":1814.17}','sra2',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(459,58,'ISO SRA3','{\"metric\":\"pt\",\"width\":907.09,\"height\":1275.59}','sra3',NULL,NULL,0,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(460,58,'ISO SRA4','{\"metric\":\"pt\",\"width\":637.8,\"height\":907.09}','sra4',NULL,NULL,0,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(461,61,'Activity Assignees','1','Activity Assignees',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(462,61,'Activity Source','2','Activity Source',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(463,61,'Activity Targets','3','Activity Targets',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(464,71,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL),(465,71,'Liability','2','Liability',NULL,0,0,2,'Things you owe, like a grant still to be disbursed',0,1,1,2,NULL,NULL,NULL,NULL),(466,71,'Revenue','3','Revenue',NULL,0,1,3,'Income from contributions and sales of tickets and memberships',0,1,1,2,NULL,NULL,NULL,NULL),(467,71,'Cost of Sales','4','Cost of Sales',NULL,0,0,4,'Costs incurred to get revenue, e.g. premiums for donations, dinner for a fundraising dinner ticket',0,1,1,2,NULL,NULL,NULL,NULL),(468,71,'Expenses','5','Expenses',NULL,0,0,5,'Things that are paid for that are consumable, e.g. grants disbursed',0,1,1,2,NULL,NULL,NULL,NULL),(469,62,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL),(470,62,'Credit/Contra Revenue Account is','2','Credit/Contra Revenue Account is',NULL,0,0,2,'Credit/Contra Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL),(471,62,'Accounts Receivable Account is','3','Accounts Receivable Account is',NULL,0,0,3,'Accounts Receivable Account is',0,1,1,2,NULL,NULL,NULL,NULL),(472,62,'Credit Liability Account is','4','Credit Liability Account is',NULL,0,0,4,'Credit Liability Account is',0,1,0,2,NULL,NULL,NULL,NULL),(473,62,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL),(474,62,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL),(475,62,'Cost of Sales Account is','7','Cost of Sales Account is',NULL,0,0,7,'Cost of Sales Account is',0,1,1,2,NULL,NULL,NULL,NULL),(476,62,'Premiums Inventory Account is','8','Premiums Inventory Account is',NULL,0,0,8,'Premiums Inventory Account is',0,1,1,2,NULL,NULL,NULL,NULL),(477,62,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL),(478,62,'Sales Tax Account is','10','Sales Tax Account is',NULL,0,0,10,'Sales Tax Account is',0,1,1,2,NULL,NULL,NULL,NULL),(479,62,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL),(480,62,'Deferred Revenue Account is','12','Deferred Revenue Account is',NULL,0,0,12,'Deferred Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL),(481,63,'Participant Role','1','participant_role',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(482,64,'Morning Sessions','1','Morning Sessions',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(483,64,'Evening Sessions','2','Evening Sessions',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(484,65,'Contribution','1','Contribution',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(485,65,'Membership','2','Membership',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(486,65,'Pledge Payment','3','Pledge Payment',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(487,67,'Open','1','Open',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(488,67,'Closed','2','Closed',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(489,67,'Data Entry','3','Data Entry',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(490,67,'Reopened','4','Reopened',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(491,67,'Exported','5','Exported',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(492,66,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL),(493,66,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL),(494,72,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL),(495,72,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL),(496,72,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL),(497,68,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(498,68,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(499,68,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(500,70,'Renewal Reminder (non-auto-renew memberships only)','1','Renewal Reminder (non-auto-renew memberships only)',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(501,70,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(502,70,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(503,73,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(504,74,'Avery 5395','{\"name\":\"Avery 5395\",\"paper-size\":\"a4\",\"metric\":\"mm\",\"lMargin\":15,\"tMargin\":26,\"NX\":2,\"NY\":4,\"SpaceX\":10,\"SpaceY\":5,\"width\":83,\"height\":57,\"font-size\":12,\"orientation\":\"portrait\",\"font-name\":\"helvetica\",\"font-style\":\"\",\"lPadding\":3,\"tPadding\":3}','Avery 5395',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(505,74,'A6 Badge Portrait 150x106','{\"paper-size\":\"a4\",\"orientation\":\"landscape\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":1,\"metric\":\"mm\",\"lMargin\":25,\"tMargin\":27,\"SpaceX\":0,\"SpaceY\":35,\"width\":106,\"height\":150,\"lPadding\":5,\"tPadding\":5}','A6 Badge Portrait 150x106',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(506,74,'Fattorini Name Badge 100x65','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":4,\"metric\":\"mm\",\"lMargin\":6,\"tMargin\":19,\"SpaceX\":0,\"SpaceY\":0,\"width\":100,\"height\":65,\"lPadding\":0,\"tPadding\":0}','Fattorini Name Badge 100x65',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(507,74,'Hanging Badge 3-3/4\" x 4-3\"/4','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":2,\"metric\":\"mm\",\"lMargin\":10,\"tMargin\":28,\"SpaceX\":0,\"SpaceY\":0,\"width\":96,\"height\":121,\"lPadding\":5,\"tPadding\":5}','Hanging Badge 3-3/4\" x 4-3\"/4',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(508,60,'Avery 3475','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":10,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":0,\"tMargin\":5,\"NX\":3,\"NY\":8,\"SpaceX\":0,\"SpaceY\":0,\"width\":70,\"height\":36,\"lPadding\":5.08,\"tPadding\":5.08}','3475','Avery',NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(509,60,'Avery 5160','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.21975,\"tMargin\":0.5,\"NX\":3,\"NY\":10,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":2.5935,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5160','Avery',NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(510,60,'Avery 5161','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.175,\"tMargin\":0.5,\"NX\":2,\"NY\":10,\"SpaceX\":0.15625,\"SpaceY\":0,\"width\":4,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5161','Avery',NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(511,60,'Avery 5162','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.1525,\"tMargin\":0.88,\"NX\":2,\"NY\":7,\"SpaceX\":0.195,\"SpaceY\":0,\"width\":4,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','5162','Avery',NULL,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(512,60,'Avery 5163','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.5,\"NX\":2,\"NY\":5,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":4,\"height\":2,\"lPadding\":0.20,\"tPadding\":0.20}','5163','Avery',NULL,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(513,60,'Avery 5164','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":12,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.156,\"tMargin\":0.5,\"NX\":2,\"NY\":3,\"SpaceX\":0.1875,\"SpaceY\":0,\"width\":4,\"height\":3.33,\"lPadding\":0.20,\"tPadding\":0.20}','5164','Avery',NULL,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(514,60,'Avery 8600','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":7.1,\"tMargin\":19,\"NX\":3,\"NY\":10,\"SpaceX\":9.5,\"SpaceY\":3.1,\"width\":66.6,\"height\":25.4,\"lPadding\":5.08,\"tPadding\":5.08}','8600','Avery',NULL,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(515,60,'Avery L7160','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.6,\"NX\":3,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7160','Avery',NULL,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(516,60,'Avery L7161','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.35,\"NX\":3,\"NY\":6,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.83,\"lPadding\":0.20,\"tPadding\":0.20}','L7161','Avery',NULL,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(517,60,'Avery L7162','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.51,\"NX\":2,\"NY\":8,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','L7162','Avery',NULL,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(518,60,'Avery L7163','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.6,\"NX\":2,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7163','Avery',NULL,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(519,75,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(520,75,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(521,76,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(522,76,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(523,76,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(524,77,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(525,77,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(526,78,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(527,78,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL),(528,78,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL),(529,82,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(530,82,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(531,82,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(532,79,'Today','this.day','this.day',NULL,NULL,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(533,79,'This week','this.week','this.week',NULL,NULL,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(534,79,'This calendar month','this.month','this.month',NULL,NULL,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(535,79,'This quarter','this.quarter','this.quarter',NULL,NULL,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(536,79,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(537,79,'This calendar year','this.year','this.year',NULL,NULL,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(538,79,'Yesterday','previous.day','previous.day',NULL,NULL,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(539,79,'Previous week','previous.week','previous.week',NULL,NULL,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(540,79,'Previous calendar month','previous.month','previous.month',NULL,NULL,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(541,79,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(542,79,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(543,79,'Previous calendar year','previous.year','previous.year',NULL,NULL,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(544,79,'Last 7 days including today','ending.week','ending.week',NULL,NULL,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(545,79,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(546,79,'Last 60 days including today','ending_60.day','ending_2.month',NULL,NULL,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(547,79,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(548,79,'Last 12 months including today','ending.year','ending.year',NULL,NULL,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(549,79,'Last 2 years including today','ending_2.year','ending_2.year',NULL,NULL,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(550,79,'Last 3 years including today','ending_3.year','ending_3.year',NULL,NULL,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(551,79,'Tomorrow','starting.day','starting.day',NULL,NULL,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(552,79,'Next week','next.week','next.week',NULL,NULL,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(553,79,'Next calendar month','next.month','next.month',NULL,NULL,NULL,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(554,79,'Next quarter','next.quarter','next.quarter',NULL,NULL,NULL,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(555,79,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,NULL,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(556,79,'Next calendar year','next.year','next.year',NULL,NULL,NULL,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(557,79,'Next 7 days including today','starting.week','starting.week',NULL,NULL,NULL,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(558,79,'Next 30 days including today','starting.month','starting.month',NULL,NULL,NULL,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(559,79,'Next 60 days including today','starting_2.month','starting_2.month',NULL,NULL,NULL,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(560,79,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,NULL,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(561,79,'Next 12 months including today','starting.year','starting.year',NULL,NULL,NULL,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(562,79,'Current week to-date','current.week','current.week',NULL,NULL,NULL,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(563,79,'Current calendar month to-date','current.month','current.month',NULL,NULL,NULL,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(564,79,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,NULL,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(565,79,'Current calendar year to-date','current.year','current.year',NULL,NULL,NULL,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(566,79,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,NULL,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(567,79,'To end of previous week','earlier.week','earlier.week',NULL,NULL,NULL,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(568,79,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,NULL,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(569,79,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,NULL,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(570,79,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,NULL,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(571,79,'From start of current day','greater.day','greater.day',NULL,NULL,NULL,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(572,79,'From start of current week','greater.week','greater.week',NULL,NULL,NULL,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(573,79,'From start of current calendar month','greater.month','greater.month',NULL,NULL,NULL,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(574,79,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,NULL,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(575,79,'From start of current calendar year','greater.year','greater.year',NULL,NULL,NULL,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(576,79,'To end of current week','less.week','less.week',NULL,NULL,NULL,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(577,79,'To end of current calendar month','less.month','less.month',NULL,NULL,NULL,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(578,79,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,NULL,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(579,79,'To end of current calendar year','less.year','less.year',NULL,NULL,NULL,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(580,79,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,NULL,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(581,79,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,NULL,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(582,79,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,NULL,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(583,79,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,NULL,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(584,79,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,NULL,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(585,79,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,NULL,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(586,79,'Week prior to previous week','previous_before.week','previous_before.week',NULL,NULL,NULL,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(587,79,'Month prior to previous calendar month','previous_before.month','previous_before.month',NULL,NULL,NULL,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(588,79,'Quarter prior to previous quarter','previous_before.quarter','previous_before.quarter',NULL,NULL,NULL,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(589,79,'Year prior to previous calendar year','previous_before.year','previous_before.year',NULL,NULL,NULL,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(590,79,'From end of previous week','greater_previous.week','greater_previous.week',NULL,NULL,NULL,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(591,79,'From end of previous calendar month','greater_previous.month','greater_previous.month',NULL,NULL,NULL,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(592,79,'From end of previous quarter','greater_previous.quarter','greater_previous.quarter',NULL,NULL,NULL,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(593,79,'From end of previous calendar year','greater_previous.year','greater_previous.year',NULL,NULL,NULL,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(594,80,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(595,80,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(596,80,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(597,80,'In Progress','5','In Progress',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(598,80,'Overdue','6','Overdue',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(599,81,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(600,81,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(601,81,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(602,81,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(603,81,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(604,81,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(605,81,'Processing','7','Processing',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(606,81,'Failing','8','Failing',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(607,83,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(608,83,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(609,83,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(610,83,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(611,31,'\"FIXME\" <info@EXAMPLE.ORG>','1','\"FIXME\" <info@EXAMPLE.ORG>',NULL,0,1,1,'Default domain email address and from name.',0,0,1,NULL,1,NULL,NULL,NULL),(612,24,'Emergency','1','Emergency',NULL,0,1,1,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(613,24,'Family Support','2','Family Support',NULL,0,NULL,2,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(614,24,'General Protection','3','General Protection',NULL,0,NULL,3,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(615,24,'Impunity','4','Impunity',NULL,0,NULL,4,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(616,55,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL),(617,55,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL),(618,55,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL),(619,57,'Survey','Survey','civicrm_survey',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(620,57,'Cases','Case','civicrm_case',NULL,0,NULL,2,'CRM_Case_PseudoConstant::caseType;',0,0,1,NULL,NULL,NULL,NULL,NULL),(621,84,'Abkhaz','ab','ab_GE',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(622,84,'Afar','aa','aa_ET',NULL,0,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(623,84,'Afrikaans','af','af_ZA',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(624,84,'Akan','ak','ak_GH',NULL,0,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(625,84,'Albanian','sq','sq_AL',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(626,84,'Amharic','am','am_ET',NULL,0,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(627,84,'Arabic','ar','ar_EG',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(628,84,'Aragonese','an','an_ES',NULL,0,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(629,84,'Armenian','hy','hy_AM',NULL,0,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(630,84,'Assamese','as','as_IN',NULL,0,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(631,84,'Avaric','av','av_RU',NULL,0,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(632,84,'Avestan','ae','ae_XX',NULL,0,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(633,84,'Aymara','ay','ay_BO',NULL,0,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(634,84,'Azerbaijani','az','az_AZ',NULL,0,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(635,84,'Bambara','bm','bm_ML',NULL,0,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(636,84,'Bashkir','ba','ba_RU',NULL,0,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(637,84,'Basque','eu','eu_ES',NULL,0,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(638,84,'Belarusian','be','be_BY',NULL,0,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(639,84,'Bengali','bn','bn_BD',NULL,0,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(640,84,'Bihari','bh','bh_IN',NULL,0,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(641,84,'Bislama','bi','bi_VU',NULL,0,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(642,84,'Bosnian','bs','bs_BA',NULL,0,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(643,84,'Breton','br','br_FR',NULL,0,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(644,84,'Bulgarian','bg','bg_BG',NULL,0,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(645,84,'Burmese','my','my_MM',NULL,0,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(646,84,'Catalan; Valencian','ca','ca_ES',NULL,0,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(647,84,'Chamorro','ch','ch_GU',NULL,0,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(648,84,'Chechen','ce','ce_RU',NULL,0,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(649,84,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,0,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(650,84,'Chinese (China)','zh','zh_CN',NULL,0,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(651,84,'Chinese (Taiwan)','zh','zh_TW',NULL,0,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(652,84,'Chuvash','cv','cv_RU',NULL,0,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(653,84,'Cornish','kw','kw_GB',NULL,0,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(654,84,'Corsican','co','co_FR',NULL,0,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(655,84,'Cree','cr','cr_CA',NULL,0,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(656,84,'Croatian','hr','hr_HR',NULL,0,0,36,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(657,84,'Czech','cs','cs_CZ',NULL,0,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(658,84,'Danish','da','da_DK',NULL,0,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(659,84,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,0,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(660,84,'Dutch (Netherlands)','nl','nl_NL',NULL,0,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(661,84,'Dutch (Belgium)','nl','nl_BE',NULL,0,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(662,84,'Dzongkha','dz','dz_BT',NULL,0,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(663,84,'English (Australia)','en','en_AU',NULL,0,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(664,84,'English (Canada)','en','en_CA',NULL,0,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(665,84,'English (United Kingdom)','en','en_GB',NULL,0,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(666,84,'English (United States)','en','en_US',NULL,0,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(667,84,'Esperanto','eo','eo_XX',NULL,0,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(668,84,'Estonian','et','et_EE',NULL,0,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(669,84,'Ewe','ee','ee_GH',NULL,0,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(670,84,'Faroese','fo','fo_FO',NULL,0,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(671,84,'Fijian','fj','fj_FJ',NULL,0,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(672,84,'Finnish','fi','fi_FI',NULL,0,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(673,84,'French (Canada)','fr','fr_CA',NULL,0,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(674,84,'French (France)','fr','fr_FR',NULL,0,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(675,84,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,0,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(676,84,'Galician','gl','gl_ES',NULL,0,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(677,84,'Georgian','ka','ka_GE',NULL,0,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(678,84,'German','de','de_DE',NULL,0,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(679,84,'German (Swiss)','de','de_CH',NULL,0,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(680,84,'Greek, Modern','el','el_GR',NULL,0,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(681,84,'GuaraniÂ','gn','gn_PY',NULL,0,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(682,84,'Gujarati','gu','gu_IN',NULL,0,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(683,84,'Haitian; Haitian Creole','ht','ht_HT',NULL,0,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(684,84,'Hausa','ha','ha_NG',NULL,0,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(685,84,'Hebrew (modern)','he','he_IL',NULL,0,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(686,84,'Herero','hz','hz_NA',NULL,0,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(687,84,'Hindi','hi','hi_IN',NULL,0,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(688,84,'Hiri Motu','ho','ho_PG',NULL,0,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(689,84,'Hungarian','hu','hu_HU',NULL,0,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(690,84,'Interlingua','ia','ia_XX',NULL,0,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(691,84,'Indonesian','id','id_ID',NULL,0,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(692,84,'Interlingue','ie','ie_XX',NULL,0,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(693,84,'Irish','ga','ga_IE',NULL,0,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(694,84,'Igbo','ig','ig_NG',NULL,0,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(695,84,'Inupiaq','ik','ik_US',NULL,0,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(696,84,'Ido','io','io_XX',NULL,0,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(697,84,'Icelandic','is','is_IS',NULL,0,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(698,84,'Italian','it','it_IT',NULL,0,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(699,84,'Inuktitut','iu','iu_CA',NULL,0,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(700,84,'Japanese','ja','ja_JP',NULL,0,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(701,84,'Javanese','jv','jv_ID',NULL,0,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(702,84,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,0,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(703,84,'Kannada','kn','kn_IN',NULL,0,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(704,84,'Kanuri','kr','kr_NE',NULL,0,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(705,84,'Kashmiri','ks','ks_IN',NULL,0,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(706,84,'Kazakh','kk','kk_KZ',NULL,0,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(707,84,'Khmer','km','km_KH',NULL,0,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(708,84,'Kikuyu, Gikuyu','ki','ki_KE',NULL,0,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(709,84,'Kinyarwanda','rw','rw_RW',NULL,0,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(710,84,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,0,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(711,84,'Komi','kv','kv_RU',NULL,0,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(712,84,'Kongo','kg','kg_CD',NULL,0,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(713,84,'Korean','ko','ko_KR',NULL,0,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(714,84,'Kurdish','ku','ku_IQ',NULL,0,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(715,84,'Kwanyama, Kuanyama','kj','kj_NA',NULL,0,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(716,84,'Latin','la','la_VA',NULL,0,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(717,84,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,0,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(718,84,'Luganda','lg','lg_UG',NULL,0,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(719,84,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,0,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(720,84,'Lingala','ln','ln_CD',NULL,0,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(721,84,'Lao','lo','lo_LA',NULL,0,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(722,84,'Lithuanian','lt','lt_LT',NULL,0,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(723,84,'Luba-Katanga','lu','lu_CD',NULL,0,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(724,84,'Latvian','lv','lv_LV',NULL,0,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(725,84,'Manx','gv','gv_IM',NULL,0,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(726,84,'Macedonian','mk','mk_MK',NULL,0,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(727,84,'Malagasy','mg','mg_MG',NULL,0,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(728,84,'Malay','ms','ms_MY',NULL,0,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(729,84,'Malayalam','ml','ml_IN',NULL,0,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(730,84,'Maltese','mt','mt_MT',NULL,0,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(731,84,'MÄori','mi','mi_NZ',NULL,0,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(732,84,'Marathi','mr','mr_IN',NULL,0,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(733,84,'Marshallese','mh','mh_MH',NULL,0,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(734,84,'Mongolian','mn','mn_MN',NULL,0,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(735,84,'Nauru','na','na_NR',NULL,0,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(736,84,'Navajo, Navaho','nv','nv_US',NULL,0,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(737,84,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,0,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(738,84,'North Ndebele','nd','nd_ZW',NULL,0,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(739,84,'Nepali','ne','ne_NP',NULL,0,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(740,84,'Ndonga','ng','ng_NA',NULL,0,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(741,84,'Norwegian Nynorsk','nn','nn_NO',NULL,0,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(742,84,'Norwegian','no','no_NO',NULL,0,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(743,84,'Nuosu','ii','ii_CN',NULL,0,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(744,84,'South Ndebele','nr','nr_ZA',NULL,0,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(745,84,'Occitan (after 1500)','oc','oc_FR',NULL,0,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(746,84,'Ojibwa','oj','oj_CA',NULL,0,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(747,84,'Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic','cu','cu_BG',NULL,0,0,127,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(748,84,'Oromo','om','om_ET',NULL,0,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(749,84,'Oriya','or','or_IN',NULL,0,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(750,84,'Ossetian, Ossetic','os','os_GE',NULL,0,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(751,84,'Panjabi, Punjabi','pa','pa_IN',NULL,0,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(752,84,'Pali','pi','pi_KH',NULL,0,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(753,84,'Persian (Iran)','fa','fa_IR',NULL,0,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(754,84,'Polish','pl','pl_PL',NULL,0,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(755,84,'Pashto, Pushto','ps','ps_AF',NULL,0,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(756,84,'Portuguese (Brazil)','pt','pt_BR',NULL,0,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(757,84,'Portuguese (Portugal)','pt','pt_PT',NULL,0,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(758,84,'Quechua','qu','qu_PE',NULL,0,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(759,84,'Romansh','rm','rm_CH',NULL,0,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(760,84,'Kirundi','rn','rn_BI',NULL,0,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(761,84,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,0,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(762,84,'Russian','ru','ru_RU',NULL,0,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(763,84,'Sanskrit','sa','sa_IN',NULL,0,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(764,84,'Sardinian','sc','sc_IT',NULL,0,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(765,84,'Sindhi','sd','sd_IN',NULL,0,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(766,84,'Northern Sami','se','se_NO',NULL,0,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(767,84,'Samoan','sm','sm_WS',NULL,0,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(768,84,'Sango','sg','sg_CF',NULL,0,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(769,84,'Serbian','sr','sr_RS',NULL,0,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(770,84,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,0,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(771,84,'Shona','sn','sn_ZW',NULL,0,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(772,84,'Sinhala, Sinhalese','si','si_LK',NULL,0,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(773,84,'Slovak','sk','sk_SK',NULL,0,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(774,84,'Slovene','sl','sl_SI',NULL,0,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(775,84,'Somali','so','so_SO',NULL,0,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(776,84,'Southern Sotho','st','st_ZA',NULL,0,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(777,84,'Spanish; Castilian (Spain)','es','es_ES',NULL,0,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(778,84,'Spanish; Castilian (Mexico)','es','es_MX',NULL,0,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(779,84,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,0,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(780,84,'Sundanese','su','su_ID',NULL,0,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(781,84,'Swahili','sw','sw_TZ',NULL,0,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(782,84,'Swati','ss','ss_ZA',NULL,0,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(783,84,'Swedish','sv','sv_SE',NULL,0,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(784,84,'Tamil','ta','ta_IN',NULL,0,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(785,84,'Telugu','te','te_IN',NULL,0,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(786,84,'Tajik','tg','tg_TJ',NULL,0,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(787,84,'Thai','th','th_TH',NULL,0,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(788,84,'Tigrinya','ti','ti_ET',NULL,0,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(789,84,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,0,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(790,84,'Turkmen','tk','tk_TM',NULL,0,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(791,84,'Tagalog','tl','tl_PH',NULL,0,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(792,84,'Tswana','tn','tn_ZA',NULL,0,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(793,84,'Tonga (Tonga Islands)','to','to_TO',NULL,0,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(794,84,'Turkish','tr','tr_TR',NULL,0,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(795,84,'Tsonga','ts','ts_ZA',NULL,0,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(796,84,'Tatar','tt','tt_RU',NULL,0,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(797,84,'Twi','tw','tw_GH',NULL,0,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(798,84,'Tahitian','ty','ty_PF',NULL,0,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(799,84,'Uighur, Uyghur','ug','ug_CN',NULL,0,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(800,84,'Ukrainian','uk','uk_UA',NULL,0,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(801,84,'Urdu','ur','ur_PK',NULL,0,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(802,84,'Uzbek','uz','uz_UZ',NULL,0,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(803,84,'Venda','ve','ve_ZA',NULL,0,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(804,84,'Vietnamese','vi','vi_VN',NULL,0,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(805,84,'Volapük','vo','vo_XX',NULL,0,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(806,84,'Walloon','wa','wa_BE',NULL,0,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(807,84,'Welsh','cy','cy_GB',NULL,0,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(808,84,'Wolof','wo','wo_SN',NULL,0,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(809,84,'Western Frisian','fy','fy_NL',NULL,0,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(810,84,'Xhosa','xh','xh_ZA',NULL,0,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(811,84,'Yiddish','yi','yi_US',NULL,0,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(812,84,'Yoruba','yo','yo_NG',NULL,0,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(813,84,'Zhuang, Chuang','za','za_CN',NULL,0,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(814,84,'Zulu','zu','zu_ZA',NULL,0,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(815,85,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(816,85,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(817,85,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(818,85,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(819,85,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(820,86,'Cases - Send Copy of an Activity','1','case_activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(821,87,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(822,87,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(823,87,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(824,87,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(825,87,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(826,87,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(827,87,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(828,87,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(829,87,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(830,87,'Personal Campaign Pages - Supporter Status Change Notification','10','pcp_status_change',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(831,87,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(832,87,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(833,87,'Additional Payment Receipt or Refund Notification','13','payment_or_refund_notification',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(834,88,'Events - Registration Confirmation and Receipt (off-line)','1','event_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(835,88,'Events - Registration Confirmation and Receipt (on-line)','2','event_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(836,88,'Events - Receipt only','3','event_registration_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(837,88,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(838,88,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(839,88,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(840,88,'Events - Registration Transferred Notice','7','participant_transferred',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(841,89,'Tell-a-Friend Email','1','friend',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(842,90,'Memberships - Signup and Renewal Receipts (off-line)','1','membership_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(843,90,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(844,90,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(845,90,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(846,91,'Test-drive - Receipt Header','1','test_preview',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(847,92,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(848,92,'Pledges - Payment Reminder','2','pledge_reminder',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(849,93,'Profiles - Admin Notification','1','uf_notify',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(850,94,'Petition - signature added','1','petition_sign',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(851,94,'Petition - need verification','2','petition_confirmation_needed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(852,95,'In Honor of','1','in_honor_of',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(853,95,'In Memory of','2','in_memory_of',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(854,95,'Solicited','3','solicited',NULL,0,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(855,95,'Household','4','household',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(856,95,'Workplace Giving','5','workplace',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(857,95,'Foundation Affiliate','6','foundation_affiliate',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(858,95,'3rd-party Service','7','3rd-party_service',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(859,95,'Donor-advised Fund','8','donor-advised_fund',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(860,95,'Matched Gift','9','matched_gift',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(861,95,'Personal Campaign Page','10','pcp',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(862,95,'Gift','11','gift',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(863,2,'Interview','55','Interview',NULL,0,NULL,55,'Conduct a phone or in person interview.',0,0,1,NULL,NULL,NULL,'fa-comment-o',NULL); /*!40000 ALTER TABLE `civicrm_option_value` ENABLE KEYS */; UNLOCK TABLES; @@ -1026,7 +1026,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant` WRITE; /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */; -INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`) VALUES (1,134,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,57,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,59,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(4,76,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,113,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,177,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(7,70,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,171,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,152,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(10,124,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,1,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,23,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(13,139,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,198,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,20,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(16,119,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,159,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,110,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(19,154,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,180,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,161,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(22,183,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,51,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,146,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(25,74,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(26,30,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,52,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,4,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(29,173,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,27,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,118,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(32,3,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,83,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,151,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(35,188,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,75,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,61,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(38,197,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,121,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,18,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(41,162,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,68,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,7,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(44,12,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,11,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,199,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(47,141,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,164,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,142,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(50,33,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`) VALUES (1,140,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,167,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,95,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(4,103,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,73,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,155,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(7,170,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,56,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,68,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(10,172,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,133,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,31,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(13,57,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,111,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,8,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(16,109,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,195,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,162,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(19,5,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,94,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,41,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(22,54,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,102,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,24,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(25,180,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(26,21,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,19,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,175,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(29,30,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,114,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,6,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(32,44,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,129,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,60,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(35,165,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,120,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,49,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(38,23,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,18,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,200,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(41,99,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,196,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,130,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(44,90,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,98,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,70,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(47,194,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,105,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,110,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(50,106,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -1036,7 +1036,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; -INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,11,45),(2,32,46),(3,28,47),(4,43,48),(5,45,49),(6,44,50),(7,40,51),(8,15,52),(9,12,53),(10,30,54),(11,26,55),(12,50,56),(13,23,57),(14,27,58),(15,2,59),(16,3,60),(17,37,61),(18,42,62),(19,7,63),(20,25,64),(21,36,65),(22,4,66),(23,33,67),(24,18,68),(25,5,69),(26,31,70),(27,16,71),(28,39,72),(29,10,73),(30,1,74),(31,13,75),(32,47,76),(33,49,77),(34,24,78),(35,34,79),(36,9,80),(37,19,81),(38,17,82),(39,21,83),(40,41,84),(41,48,85),(42,8,86),(43,29,87),(44,6,88),(45,20,89),(46,22,90),(47,35,91),(48,38,92),(49,14,93),(50,46,94); +INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,19,45),(2,31,46),(3,15,47),(4,39,48),(5,27,49),(6,26,50),(7,38,51),(8,24,52),(9,29,53),(10,12,54),(11,21,55),(12,32,56),(13,37,57),(14,22,58),(15,8,59),(16,13,60),(17,34,61),(18,9,62),(19,46,63),(20,5,64),(21,44,65),(22,20,66),(23,3,67),(24,45,68),(25,41,69),(26,23,70),(27,4,71),(28,48,72),(29,50,73),(30,16,74),(31,49,75),(32,14,76),(33,30,77),(34,36,78),(35,33,79),(36,43,80),(37,11,81),(38,1,82),(39,6,83),(40,18,84),(41,35,85),(42,2,86),(43,7,87),(44,10,88),(45,28,89),(46,25,90),(47,47,91),(48,17,92),(49,42,93),(50,40,94); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -1065,7 +1065,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_payment_processor_type` WRITE; /*!40000 ALTER TABLE `civicrm_payment_processor_type` DISABLE KEYS */; -INSERT INTO `civicrm_payment_processor_type` (`id`, `name`, `title`, `description`, `is_active`, `is_default`, `user_name_label`, `password_label`, `signature_label`, `subject_label`, `class_name`, `url_site_default`, `url_api_default`, `url_recur_default`, `url_button_default`, `url_site_test_default`, `url_api_test_default`, `url_recur_test_default`, `url_button_test_default`, `billing_mode`, `is_recur`, `payment_type`, `payment_instrument_id`) VALUES (1,'PayPal_Standard','PayPal - Website Payments Standard',NULL,1,0,'Merchant Account Email',NULL,NULL,NULL,'Payment_PayPalImpl','https://www.paypal.com/',NULL,'https://www.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,4,1,1,1),(2,'PayPal','PayPal - Website Payments Pro',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/','https://www.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/','https://www.sandbox.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',3,1,1,1),(3,'PayPal_Express','PayPal - Express',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',2,1,1,1),(4,'AuthNet','Authorize.Net',NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1,1,1),(5,'PayJunction','PayJunction',NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1,1,1),(6,'eWAY','eWAY (Single Currency)',NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0,1,1),(7,'Payment_Express','DPS Payment Express',NULL,0,0,'User ID','Key','Mac Key - pxaccess only',NULL,'Payment_PaymentExpress','https://www.paymentexpress.com/pleaseenteraurl',NULL,NULL,NULL,'https://www.paymentexpress.com/pleaseenteratesturl',NULL,NULL,NULL,4,0,1,1),(8,'Dummy','Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,1),(9,'Elavon','Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0,1,1),(10,'Realex','Realex Payment',NULL,0,0,'Merchant ID','Password',NULL,'Account','Payment_Realex','https://epage.payandshop.com/epage.cgi',NULL,NULL,NULL,'https://epage.payandshop.com/epage-remote.cgi',NULL,NULL,NULL,1,0,1,1),(11,'PayflowPro','PayflowPro',NULL,0,0,'Vendor ID','Password','Partner (merchant)','User','Payment_PayflowPro','https://Payflowpro.paypal.com',NULL,NULL,NULL,'https://pilot-Payflowpro.paypal.com',NULL,NULL,NULL,1,0,1,1),(12,'FirstData','FirstData (aka linkpoint)','FirstData (aka linkpoint)',0,0,'Store name','certificate path',NULL,NULL,'Payment_FirstData','https://secure.linkpt.net',NULL,NULL,NULL,'https://staging.linkpt.net',NULL,NULL,NULL,1,NULL,1,1); +INSERT INTO `civicrm_payment_processor_type` (`id`, `name`, `title`, `description`, `is_active`, `is_default`, `user_name_label`, `password_label`, `signature_label`, `subject_label`, `class_name`, `url_site_default`, `url_api_default`, `url_recur_default`, `url_button_default`, `url_site_test_default`, `url_api_test_default`, `url_recur_test_default`, `url_button_test_default`, `billing_mode`, `is_recur`, `payment_type`, `payment_instrument_id`) VALUES (1,'PayPal_Standard','PayPal - Website Payments Standard',NULL,1,0,'Merchant Account Email',NULL,NULL,NULL,'Payment_PayPalImpl','https://www.paypal.com/',NULL,'https://www.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,4,1,1,1),(2,'PayPal','PayPal - Website Payments Pro',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/','https://www.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/','https://www.sandbox.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',3,1,1,1),(3,'PayPal_Express','PayPal - Express',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',2,1,1,1),(4,'AuthNet','Authorize.Net',NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1,1,1),(5,'PayJunction','PayJunction',NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1,1,1),(6,'eWAY','eWAY (Single Currency)',NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0,1,1),(7,'Dummy','Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,1),(8,'Elavon','Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0,1,1),(9,'Realex','Realex Payment',NULL,0,0,'Merchant ID','Password',NULL,'Account','Payment_Realex','https://epage.payandshop.com/epage.cgi',NULL,NULL,NULL,'https://epage.payandshop.com/epage-remote.cgi',NULL,NULL,NULL,1,0,1,1),(10,'PayflowPro','PayflowPro',NULL,0,0,'Vendor ID','Password','Partner (merchant)','User','Payment_PayflowPro','https://Payflowpro.paypal.com',NULL,NULL,NULL,'https://pilot-Payflowpro.paypal.com',NULL,NULL,NULL,1,0,1,1),(11,'FirstData','FirstData (aka linkpoint)','FirstData (aka linkpoint)',0,0,'Store name','certificate path',NULL,NULL,'Payment_FirstData','https://secure.linkpt.net',NULL,NULL,NULL,'https://staging.linkpt.net',NULL,NULL,NULL,1,NULL,1,1); /*!40000 ALTER TABLE `civicrm_payment_processor_type` ENABLE KEYS */; UNLOCK TABLES; @@ -1084,7 +1084,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_pcp` WRITE; /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */; -INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES (1,177,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); +INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES (1,57,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */; UNLOCK TABLES; @@ -1104,7 +1104,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_phone` WRITE; /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */; -INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,50,1,1,0,NULL,'305-3316',NULL,'3053316',2),(2,50,1,0,0,NULL,'(454) 624-9474',NULL,'4546249474',2),(3,177,1,1,0,NULL,'(362) 578-7116',NULL,'3625787116',1),(4,177,1,0,0,NULL,'422-6088',NULL,'4226088',1),(5,110,1,1,0,NULL,'(316) 717-9504',NULL,'3167179504',1),(6,97,1,1,0,NULL,'322-2980',NULL,'3222980',2),(7,56,1,1,0,NULL,'(498) 465-7043',NULL,'4984657043',2),(8,75,1,1,0,NULL,'681-1655',NULL,'6811655',1),(9,75,1,0,0,NULL,'297-5311',NULL,'2975311',1),(10,172,1,1,0,NULL,'613-8335',NULL,'6138335',2),(11,172,1,0,0,NULL,'877-1400',NULL,'8771400',2),(12,37,1,1,0,NULL,'450-5259',NULL,'4505259',1),(13,37,1,0,0,NULL,'875-2439',NULL,'8752439',1),(14,175,1,1,0,NULL,'(767) 739-1850',NULL,'7677391850',1),(15,175,1,0,0,NULL,'(648) 530-4866',NULL,'6485304866',1),(16,115,1,1,0,NULL,'597-6703',NULL,'5976703',1),(17,115,1,0,0,NULL,'453-6667',NULL,'4536667',2),(18,198,1,1,0,NULL,'(418) 520-9692',NULL,'4185209692',1),(19,53,1,1,0,NULL,'202-6113',NULL,'2026113',2),(20,18,1,1,0,NULL,'(784) 548-4483',NULL,'7845484483',2),(21,18,1,0,0,NULL,'665-4476',NULL,'6654476',2),(22,27,1,1,0,NULL,'(322) 288-9017',NULL,'3222889017',1),(23,27,1,0,0,NULL,'611-2082',NULL,'6112082',2),(24,44,1,1,0,NULL,'642-6320',NULL,'6426320',2),(25,121,1,1,0,NULL,'(551) 657-9639',NULL,'5516579639',1),(26,121,1,0,0,NULL,'(360) 876-7107',NULL,'3608767107',1),(27,47,1,1,0,NULL,'(600) 860-9782',NULL,'6008609782',1),(28,34,1,1,0,NULL,'615-7064',NULL,'6157064',2),(29,34,1,0,0,NULL,'(539) 304-2310',NULL,'5393042310',1),(30,85,1,1,0,NULL,'570-9522',NULL,'5709522',2),(31,85,1,0,0,NULL,'(544) 666-4455',NULL,'5446664455',2),(32,66,1,1,0,NULL,'601-8744',NULL,'6018744',1),(33,66,1,0,0,NULL,'324-6344',NULL,'3246344',2),(34,157,1,1,0,NULL,'481-2758',NULL,'4812758',1),(35,119,1,1,0,NULL,'(894) 517-8754',NULL,'8945178754',2),(36,10,1,1,0,NULL,'(353) 364-7675',NULL,'3533647675',1),(37,10,1,0,0,NULL,'353-4496',NULL,'3534496',2),(38,194,1,1,0,NULL,'636-8863',NULL,'6368863',2),(39,194,1,0,0,NULL,'(486) 294-5858',NULL,'4862945858',1),(40,142,1,1,0,NULL,'(540) 681-3975',NULL,'5406813975',1),(41,61,1,1,0,NULL,'310-2639',NULL,'3102639',1),(42,164,1,1,0,NULL,'(298) 402-2307',NULL,'2984022307',1),(43,41,1,1,0,NULL,'(607) 554-4804',NULL,'6075544804',1),(44,41,1,0,0,NULL,'(736) 463-2556',NULL,'7364632556',2),(45,116,1,1,0,NULL,'(360) 203-8830',NULL,'3602038830',2),(46,116,1,0,0,NULL,'488-9541',NULL,'4889541',1),(47,188,1,1,0,NULL,'547-3970',NULL,'5473970',1),(48,188,1,0,0,NULL,'456-5806',NULL,'4565806',1),(49,16,1,1,0,NULL,'(443) 847-8214',NULL,'4438478214',2),(50,16,1,0,0,NULL,'(228) 278-1640',NULL,'2282781640',1),(51,118,1,1,0,NULL,'668-5760',NULL,'6685760',1),(52,103,1,1,0,NULL,'227-3072',NULL,'2273072',1),(53,103,1,0,0,NULL,'(884) 379-1124',NULL,'8843791124',2),(54,143,1,1,0,NULL,'(700) 237-1525',NULL,'7002371525',1),(55,143,1,0,0,NULL,'554-9948',NULL,'5549948',2),(56,149,1,1,0,NULL,'(845) 446-1134',NULL,'8454461134',2),(57,149,1,0,0,NULL,'845-3918',NULL,'8453918',2),(58,24,1,1,0,NULL,'(577) 825-3615',NULL,'5778253615',1),(59,24,1,0,0,NULL,'539-8740',NULL,'5398740',2),(60,7,1,1,0,NULL,'343-9667',NULL,'3439667',1),(61,145,1,1,0,NULL,'841-3230',NULL,'8413230',1),(62,145,1,0,0,NULL,'515-7549',NULL,'5157549',2),(63,20,1,1,0,NULL,'623-7946',NULL,'6237946',2),(64,112,1,1,0,NULL,'225-6309',NULL,'2256309',1),(65,69,1,1,0,NULL,'223-1980',NULL,'2231980',2),(66,137,1,1,0,NULL,'530-6553',NULL,'5306553',2),(67,12,1,1,0,NULL,'(657) 850-4185',NULL,'6578504185',2),(68,12,1,0,0,NULL,'(463) 664-4121',NULL,'4636644121',2),(69,129,1,1,0,NULL,'807-9775',NULL,'8079775',2),(70,129,1,0,0,NULL,'770-3380',NULL,'7703380',2),(71,81,1,1,0,NULL,'800-2902',NULL,'8002902',2),(72,81,1,0,0,NULL,'(619) 445-9996',NULL,'6194459996',2),(73,30,1,1,0,NULL,'537-9409',NULL,'5379409',2),(74,78,1,1,0,NULL,'(764) 210-7528',NULL,'7642107528',2),(75,117,1,1,0,NULL,'554-7125',NULL,'5547125',2),(76,86,1,1,0,NULL,'(354) 519-9785',NULL,'3545199785',1),(77,196,1,1,0,NULL,'(728) 634-9991',NULL,'7286349991',1),(78,162,1,1,0,NULL,'299-6586',NULL,'2996586',1),(79,162,1,0,0,NULL,'223-8858',NULL,'2238858',1),(80,84,1,1,0,NULL,'(358) 628-7157',NULL,'3586287157',1),(81,13,1,1,0,NULL,'402-4916',NULL,'4024916',1),(82,180,1,1,0,NULL,'235-7892',NULL,'2357892',2),(83,180,1,0,0,NULL,'(569) 576-6938',NULL,'5695766938',2),(84,132,1,1,0,NULL,'264-5696',NULL,'2645696',2),(85,132,1,0,0,NULL,'(642) 874-3824',NULL,'6428743824',1),(86,109,1,1,0,NULL,'(360) 710-9845',NULL,'3607109845',1),(87,11,1,1,0,NULL,'232-9188',NULL,'2329188',1),(88,11,1,0,0,NULL,'490-4431',NULL,'4904431',2),(89,45,1,1,0,NULL,'(253) 293-5624',NULL,'2532935624',2),(90,45,1,0,0,NULL,'(749) 269-6171',NULL,'7492696171',2),(91,67,1,1,0,NULL,'(203) 511-8494',NULL,'2035118494',1),(92,67,1,0,0,NULL,'853-5016',NULL,'8535016',2),(93,6,1,1,0,NULL,'463-7805',NULL,'4637805',1),(94,6,1,0,0,NULL,'(206) 414-1901',NULL,'2064141901',1),(95,168,1,1,0,NULL,'787-6333',NULL,'7876333',2),(96,200,1,1,0,NULL,'(285) 820-6572',NULL,'2858206572',2),(97,124,1,1,0,NULL,'(330) 379-1414',NULL,'3303791414',2),(98,125,1,1,0,NULL,'491-4701',NULL,'4914701',1),(99,98,1,1,0,NULL,'276-6700',NULL,'2766700',2),(100,166,1,1,0,NULL,'(316) 319-8026',NULL,'3163198026',2),(101,166,1,0,0,NULL,'604-4282',NULL,'6044282',1),(102,19,1,1,0,NULL,'(714) 784-2050',NULL,'7147842050',2),(103,19,1,0,0,NULL,'(638) 778-8461',NULL,'6387788461',2),(104,163,1,1,0,NULL,'505-4418',NULL,'5054418',2),(105,83,1,1,0,NULL,'622-7211',NULL,'6227211',1),(106,83,1,0,0,NULL,'765-7929',NULL,'7657929',2),(107,189,1,1,0,NULL,'(699) 586-7204',NULL,'6995867204',2),(108,151,1,1,0,NULL,'398-1869',NULL,'3981869',1),(109,151,1,0,0,NULL,'816-2055',NULL,'8162055',1),(110,77,1,1,0,NULL,'(295) 673-4854',NULL,'2956734854',2),(111,176,1,1,0,NULL,'(406) 613-1410',NULL,'4066131410',1),(112,140,1,1,0,NULL,'(536) 824-3077',NULL,'5368243077',1),(113,140,1,0,0,NULL,'248-4676',NULL,'2484676',1),(114,150,1,1,0,NULL,'(676) 362-3906',NULL,'6763623906',1),(115,150,1,0,0,NULL,'(211) 414-5184',NULL,'2114145184',1),(116,174,1,1,0,NULL,'556-8340',NULL,'5568340',1),(117,73,1,1,0,NULL,'(297) 341-4134',NULL,'2973414134',2),(118,58,1,1,0,NULL,'(788) 692-1707',NULL,'7886921707',1),(119,58,1,0,0,NULL,'760-9748',NULL,'7609748',1),(120,8,1,1,0,NULL,'(730) 482-1283',NULL,'7304821283',2),(121,107,1,1,0,NULL,'663-5760',NULL,'6635760',2),(122,173,1,1,0,NULL,'220-5472',NULL,'2205472',2),(123,59,1,1,0,NULL,'(206) 892-7746',NULL,'2068927746',2),(124,5,1,1,0,NULL,'(344) 493-1760',NULL,'3444931760',2),(125,5,1,0,0,NULL,'597-5896',NULL,'5975896',1),(126,201,1,1,0,NULL,'367-9832',NULL,'3679832',2),(127,201,1,0,0,NULL,'630-6571',NULL,'6306571',2),(128,126,1,1,0,NULL,'(889) 862-9075',NULL,'8898629075',2),(129,96,1,1,0,NULL,'(274) 548-5083',NULL,'2745485083',2),(130,96,1,0,0,NULL,'(742) 299-5522',NULL,'7422995522',2),(131,141,1,1,0,NULL,'(665) 595-4111',NULL,'6655954111',2),(132,141,1,0,0,NULL,'(694) 354-1214',NULL,'6943541214',1),(133,94,1,1,0,NULL,'(724) 717-5992',NULL,'7247175992',2),(134,94,1,0,0,NULL,'(480) 525-6131',NULL,'4805256131',2),(135,153,1,1,0,NULL,'365-1641',NULL,'3651641',2),(136,191,1,1,0,NULL,'(834) 357-4554',NULL,'8343574554',1),(137,191,1,0,0,NULL,'340-2246',NULL,'3402246',1),(138,32,1,1,0,NULL,'247-6126',NULL,'2476126',2),(139,169,1,1,0,NULL,'508-9530',NULL,'5089530',1),(140,169,1,0,0,NULL,'270-2187',NULL,'2702187',2),(141,133,1,1,0,NULL,'784-7803',NULL,'7847803',1),(142,133,1,0,0,NULL,'(753) 411-8302',NULL,'7534118302',2),(143,184,1,1,0,NULL,'664-7649',NULL,'6647649',2),(144,130,1,1,0,NULL,'643-3945',NULL,'6433945',2),(145,130,1,0,0,NULL,'(436) 446-5599',NULL,'4364465599',1),(146,170,1,1,0,NULL,'763-8218',NULL,'7638218',1),(147,170,1,0,0,NULL,'(251) 898-7794',NULL,'2518987794',2),(148,154,1,1,0,NULL,'(681) 776-7426',NULL,'6817767426',2),(149,154,1,0,0,NULL,'721-5091',NULL,'7215091',2),(150,160,1,1,0,NULL,'(321) 545-9727',NULL,'3215459727',2),(151,160,1,0,0,NULL,'(278) 571-3422',NULL,'2785713422',1),(152,100,1,1,0,NULL,'(436) 832-2265',NULL,'4368322265',1),(153,100,1,0,0,NULL,'(368) 422-1857',NULL,'3684221857',2),(154,72,1,1,0,NULL,'(314) 791-4783',NULL,'3147914783',2),(155,72,1,0,0,NULL,'(793) 318-2359',NULL,'7933182359',1),(156,70,1,1,0,NULL,'697-3705',NULL,'6973705',1),(157,195,1,1,0,NULL,'(884) 369-8149',NULL,'8843698149',2),(158,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(159,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(160,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); +INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,24,1,1,0,NULL,'274-9635',NULL,'2749635',2),(2,17,1,1,0,NULL,'(229) 879-2778',NULL,'2298792778',1),(3,17,1,0,0,NULL,'799-7889',NULL,'7997889',2),(4,182,1,1,0,NULL,'(244) 685-2219',NULL,'2446852219',1),(5,182,1,0,0,NULL,'(865) 344-9781',NULL,'8653449781',2),(6,138,1,1,0,NULL,'402-4943',NULL,'4024943',2),(7,53,1,1,0,NULL,'204-2790',NULL,'2042790',2),(8,53,1,0,0,NULL,'766-4872',NULL,'7664872',2),(9,15,1,1,0,NULL,'(668) 853-1518',NULL,'6688531518',2),(10,83,1,1,0,NULL,'241-1379',NULL,'2411379',1),(11,120,1,1,0,NULL,'397-9037',NULL,'3979037',1),(12,120,1,0,0,NULL,'730-9455',NULL,'7309455',1),(13,193,1,1,0,NULL,'(676) 251-4852',NULL,'6762514852',2),(14,162,1,1,0,NULL,'521-3006',NULL,'5213006',2),(15,66,1,1,0,NULL,'530-6693',NULL,'5306693',2),(16,66,1,0,0,NULL,'731-4325',NULL,'7314325',1),(17,92,1,1,0,NULL,'(220) 590-9485',NULL,'2205909485',1),(18,92,1,0,0,NULL,'(203) 368-1646',NULL,'2033681646',1),(19,167,1,1,0,NULL,'(750) 209-2869',NULL,'7502092869',2),(20,167,1,0,0,NULL,'890-9055',NULL,'8909055',2),(21,190,1,1,0,NULL,'(652) 629-9114',NULL,'6526299114',1),(22,190,1,0,0,NULL,'(293) 584-8018',NULL,'2935848018',1),(23,184,1,1,0,NULL,'437-1558',NULL,'4371558',2),(24,67,1,1,0,NULL,'(424) 686-1017',NULL,'4246861017',1),(25,67,1,0,0,NULL,'716-5913',NULL,'7165913',1),(26,183,1,1,0,NULL,'(423) 421-9523',NULL,'4234219523',2),(27,175,1,1,0,NULL,'880-2156',NULL,'8802156',2),(28,129,1,1,0,NULL,'(488) 267-9425',NULL,'4882679425',1),(29,129,1,0,0,NULL,'859-5831',NULL,'8595831',2),(30,197,1,1,0,NULL,'(454) 513-8343',NULL,'4545138343',2),(31,197,1,0,0,NULL,'(553) 619-5071',NULL,'5536195071',2),(32,122,1,1,0,NULL,'718-4550',NULL,'7184550',1),(33,122,1,0,0,NULL,'289-9260',NULL,'2899260',1),(34,7,1,1,0,NULL,'(206) 479-5991',NULL,'2064795991',2),(35,7,1,0,0,NULL,'285-4636',NULL,'2854636',1),(36,154,1,1,0,NULL,'430-8301',NULL,'4308301',1),(37,154,1,0,0,NULL,'(435) 851-5287',NULL,'4358515287',2),(38,51,1,1,0,NULL,'304-7100',NULL,'3047100',2),(39,51,1,0,0,NULL,'238-5124',NULL,'2385124',2),(40,97,1,1,0,NULL,'(814) 212-3197',NULL,'8142123197',1),(41,111,1,1,0,NULL,'756-3086',NULL,'7563086',2),(42,111,1,0,0,NULL,'365-2538',NULL,'3652538',2),(43,143,1,1,0,NULL,'816-4755',NULL,'8164755',2),(44,77,1,1,0,NULL,'(235) 641-2496',NULL,'2356412496',1),(45,77,1,0,0,NULL,'713-4703',NULL,'7134703',1),(46,186,1,1,0,NULL,'474-5007',NULL,'4745007',2),(47,12,1,1,0,NULL,'617-7751',NULL,'6177751',1),(48,8,1,1,0,NULL,'(537) 372-7316',NULL,'5373727316',2),(49,84,1,1,0,NULL,'792-7270',NULL,'7927270',2),(50,84,1,0,0,NULL,'(801) 234-1538',NULL,'8012341538',2),(51,71,1,1,0,NULL,'392-6885',NULL,'3926885',2),(52,71,1,0,0,NULL,'288-3964',NULL,'2883964',2),(53,119,1,1,0,NULL,'446-4383',NULL,'4464383',2),(54,119,1,0,0,NULL,'(596) 657-2384',NULL,'5966572384',2),(55,161,1,1,0,NULL,'635-8492',NULL,'6358492',2),(56,60,1,1,0,NULL,'(691) 530-1922',NULL,'6915301922',1),(57,31,1,1,0,NULL,'(283) 732-1513',NULL,'2837321513',2),(58,55,1,1,0,NULL,'657-5967',NULL,'6575967',1),(59,55,1,0,0,NULL,'272-6026',NULL,'2726026',1),(60,64,1,1,0,NULL,'673-2317',NULL,'6732317',2),(61,64,1,0,0,NULL,'534-1878',NULL,'5341878',2),(62,41,1,1,0,NULL,'460-9430',NULL,'4609430',2),(63,30,1,1,0,NULL,'306-2031',NULL,'3062031',2),(64,2,1,1,0,NULL,'612-2909',NULL,'6122909',1),(65,2,1,0,0,NULL,'(737) 473-7543',NULL,'7374737543',2),(66,118,1,1,0,NULL,'755-9391',NULL,'7559391',1),(67,87,1,1,0,NULL,'(463) 596-6006',NULL,'4635966006',2),(68,87,1,0,0,NULL,'560-2341',NULL,'5602341',1),(69,23,1,1,0,NULL,'(408) 243-9215',NULL,'4082439215',1),(70,5,1,1,0,NULL,'(467) 735-2801',NULL,'4677352801',1),(71,5,1,0,0,NULL,'(585) 618-1985',NULL,'5856181985',2),(72,93,1,1,0,NULL,'774-6122',NULL,'7746122',2),(73,18,1,1,0,NULL,'(859) 599-7380',NULL,'8595997380',1),(74,176,1,1,0,NULL,'(352) 842-5208',NULL,'3528425208',2),(75,80,1,1,0,NULL,'(664) 231-4436',NULL,'6642314436',1),(76,80,1,0,0,NULL,'(274) 257-4985',NULL,'2742574985',1),(77,44,1,1,0,NULL,'881-5788',NULL,'8815788',2),(78,44,1,0,0,NULL,'(866) 667-8364',NULL,'8666678364',1),(79,52,1,1,0,NULL,'(611) 572-3049',NULL,'6115723049',2),(80,165,1,1,0,NULL,'228-4756',NULL,'2284756',1),(81,127,1,1,0,NULL,'555-6328',NULL,'5556328',1),(82,127,1,0,0,NULL,'(327) 478-4987',NULL,'3274784987',1),(83,172,1,1,0,NULL,'(487) 597-4192',NULL,'4875974192',2),(84,172,1,0,0,NULL,'372-7179',NULL,'3727179',1),(85,125,1,1,0,NULL,'216-1481',NULL,'2161481',1),(86,74,1,1,0,NULL,'(492) 296-6332',NULL,'4922966332',1),(87,74,1,0,0,NULL,'287-8009',NULL,'2878009',2),(88,47,1,1,0,NULL,'(425) 785-7087',NULL,'4257857087',2),(89,159,1,1,0,NULL,'(368) 300-4630',NULL,'3683004630',1),(90,102,1,1,0,NULL,'(443) 534-9192',NULL,'4435349192',1),(91,149,1,1,0,NULL,'(802) 411-1496',NULL,'8024111496',1),(92,192,1,1,0,NULL,'(297) 209-2106',NULL,'2972092106',2),(93,192,1,0,0,NULL,'(705) 606-6556',NULL,'7056066556',1),(94,134,1,1,0,NULL,'(632) 400-9500',NULL,'6324009500',1),(95,134,1,0,0,NULL,'(328) 557-6995',NULL,'3285576995',2),(96,100,1,1,0,NULL,'(629) 623-5518',NULL,'6296235518',2),(97,100,1,0,0,NULL,'(787) 824-4620',NULL,'7878244620',2),(98,34,1,1,0,NULL,'(576) 532-4124',NULL,'5765324124',1),(99,113,1,1,0,NULL,'208-4699',NULL,'2084699',1),(100,110,1,1,0,NULL,'(766) 397-6252',NULL,'7663976252',2),(101,110,1,0,0,NULL,'663-2594',NULL,'6632594',2),(102,191,1,1,0,NULL,'(711) 752-3110',NULL,'7117523110',2),(103,191,1,0,0,NULL,'455-8038',NULL,'4558038',2),(104,151,1,1,0,NULL,'496-3771',NULL,'4963771',1),(105,82,1,1,0,NULL,'(281) 214-6022',NULL,'2812146022',1),(106,82,1,0,0,NULL,'(652) 390-7860',NULL,'6523907860',2),(107,196,1,1,0,NULL,'533-5816',NULL,'5335816',1),(108,94,1,1,0,NULL,'(749) 574-5597',NULL,'7495745597',2),(109,188,1,1,0,NULL,'529-8632',NULL,'5298632',2),(110,195,1,1,0,NULL,'(395) 227-9037',NULL,'3952279037',1),(111,28,1,1,0,NULL,'718-8866',NULL,'7188866',2),(112,28,1,0,0,NULL,'814-1318',NULL,'8141318',2),(113,141,1,1,0,NULL,'(783) 818-5891',NULL,'7838185891',2),(114,141,1,0,0,NULL,'898-2730',NULL,'8982730',1),(115,112,1,1,0,NULL,'(558) 458-8429',NULL,'5584588429',2),(116,112,1,0,0,NULL,'(308) 797-1765',NULL,'3087971765',1),(117,152,1,1,0,NULL,'(373) 427-1144',NULL,'3734271144',2),(118,61,1,1,0,NULL,'374-7266',NULL,'3747266',2),(119,108,1,1,0,NULL,'661-5380',NULL,'6615380',1),(120,108,1,0,0,NULL,'(647) 666-4232',NULL,'6476664232',1),(121,54,1,1,0,NULL,'445-1977',NULL,'4451977',2),(122,54,1,0,0,NULL,'405-2942',NULL,'4052942',1),(123,155,1,1,0,NULL,'784-9465',NULL,'7849465',1),(124,103,1,1,0,NULL,'265-9328',NULL,'2659328',2),(125,63,1,1,0,NULL,'(735) 686-1024',NULL,'7356861024',1),(126,63,1,0,0,NULL,'(679) 205-2507',NULL,'6792052507',2),(127,68,1,1,0,NULL,'(214) 665-4847',NULL,'2146654847',1),(128,68,1,0,0,NULL,'256-3774',NULL,'2563774',1),(129,70,1,1,0,NULL,'429-1869',NULL,'4291869',1),(130,70,1,0,0,NULL,'219-2851',NULL,'2192851',1),(131,10,1,1,0,NULL,'716-2365',NULL,'7162365',1),(132,130,1,1,0,NULL,'600-7888',NULL,'6007888',2),(133,140,1,1,0,NULL,'267-9456',NULL,'2679456',1),(134,58,1,1,0,NULL,'(255) 537-6804',NULL,'2555376804',2),(135,58,1,0,0,NULL,'785-9517',NULL,'7859517',2),(136,48,1,1,0,NULL,'(369) 720-9933',NULL,'3697209933',1),(137,135,1,1,0,NULL,'577-3243',NULL,'5773243',2),(138,43,1,1,0,NULL,'(561) 878-3542',NULL,'5618783542',2),(139,20,1,1,0,NULL,'(240) 599-5126',NULL,'2405995126',2),(140,13,1,1,0,NULL,'(896) 730-2208',NULL,'8967302208',2),(141,13,1,0,0,NULL,'891-6610',NULL,'8916610',1),(142,194,1,1,0,NULL,'(582) 263-1870',NULL,'5822631870',2),(143,131,1,1,0,NULL,'209-4992',NULL,'2094992',2),(144,131,1,0,0,NULL,'(357) 393-9592',NULL,'3573939592',2),(145,75,1,1,0,NULL,'297-3631',NULL,'2973631',1),(146,75,1,0,0,NULL,'(735) 516-9375',NULL,'7355169375',1),(147,104,1,1,0,NULL,'(202) 624-1843',NULL,'2026241843',2),(148,153,1,1,0,NULL,'577-2814',NULL,'5772814',2),(149,153,1,0,0,NULL,'(672) 816-3429',NULL,'6728163429',2),(150,39,1,1,0,NULL,'(413) 541-3220',NULL,'4135413220',1),(151,189,1,1,0,NULL,'(562) 845-6038',NULL,'5628456038',2),(152,36,1,1,0,NULL,'359-6033',NULL,'3596033',1),(153,36,1,0,0,NULL,'(574) 836-8694',NULL,'5748368694',1),(154,171,1,1,0,NULL,'(631) 326-9216',NULL,'6313269216',2),(155,25,1,1,0,NULL,'(632) 417-4898',NULL,'6324174898',1),(156,180,1,1,0,NULL,'699-9692',NULL,'6999692',2),(157,158,1,1,0,NULL,'258-5034',NULL,'2585034',1),(158,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(159,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(160,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -1261,10 +1261,20 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship` WRITE; /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */; -INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`) VALUES (1,84,162,1,NULL,NULL,1,NULL,0,0,NULL),(2,13,162,1,NULL,NULL,1,NULL,0,0,NULL),(3,84,3,1,NULL,NULL,1,NULL,0,0,NULL),(4,13,3,1,NULL,NULL,1,NULL,0,0,NULL),(5,13,84,4,NULL,NULL,1,NULL,0,0,NULL),(6,3,90,8,NULL,NULL,1,NULL,0,0,NULL),(7,84,90,8,NULL,NULL,1,NULL,0,0,NULL),(8,13,90,8,NULL,NULL,1,NULL,0,0,NULL),(9,162,90,7,NULL,NULL,1,NULL,0,0,NULL),(10,3,162,2,NULL,NULL,1,NULL,0,0,NULL),(11,165,180,1,NULL,NULL,1,NULL,0,0,NULL),(12,52,180,1,NULL,NULL,1,NULL,0,0,NULL),(13,165,155,1,NULL,NULL,1,NULL,0,0,NULL),(14,52,155,1,NULL,NULL,1,NULL,0,0,NULL),(15,52,165,4,NULL,NULL,1,NULL,0,0,NULL),(16,155,42,8,NULL,NULL,1,NULL,0,0,NULL),(17,165,42,8,NULL,NULL,1,NULL,0,0,NULL),(18,52,42,8,NULL,NULL,1,NULL,0,0,NULL),(19,180,42,7,NULL,NULL,1,NULL,0,0,NULL),(20,155,180,2,NULL,NULL,1,NULL,0,0,NULL),(21,109,132,1,NULL,NULL,1,NULL,0,0,NULL),(22,25,132,1,NULL,NULL,1,NULL,0,0,NULL),(23,109,48,1,NULL,NULL,1,NULL,0,0,NULL),(24,25,48,1,NULL,NULL,1,NULL,0,0,NULL),(25,25,109,4,NULL,NULL,1,NULL,0,0,NULL),(26,48,40,8,NULL,NULL,1,NULL,0,0,NULL),(27,109,40,8,NULL,NULL,1,NULL,0,0,NULL),(28,25,40,8,NULL,NULL,1,NULL,0,0,NULL),(29,132,40,7,NULL,NULL,1,NULL,0,0,NULL),(30,48,132,2,NULL,NULL,1,NULL,0,0,NULL),(31,67,11,1,NULL,NULL,1,NULL,0,0,NULL),(32,6,11,1,NULL,NULL,1,NULL,0,0,NULL),(33,67,45,1,NULL,NULL,1,NULL,0,0,NULL),(34,6,45,1,NULL,NULL,1,NULL,0,0,NULL),(35,6,67,4,NULL,NULL,1,NULL,0,0,NULL),(36,45,2,8,NULL,NULL,1,NULL,0,0,NULL),(37,67,2,8,NULL,NULL,1,NULL,0,0,NULL),(38,6,2,8,NULL,NULL,1,NULL,0,0,NULL),(39,11,2,7,NULL,NULL,1,NULL,0,0,NULL),(40,45,11,2,NULL,NULL,1,NULL,0,0,NULL),(41,200,88,1,NULL,NULL,1,NULL,0,0,NULL),(42,124,88,1,NULL,NULL,1,NULL,0,0,NULL),(43,200,168,1,NULL,NULL,1,NULL,0,0,NULL),(44,124,168,1,NULL,NULL,1,NULL,0,0,NULL),(45,124,200,4,NULL,NULL,1,NULL,0,0,NULL),(46,168,68,8,NULL,NULL,1,NULL,0,0,NULL),(47,200,68,8,NULL,NULL,1,NULL,0,0,NULL),(48,124,68,8,NULL,NULL,1,NULL,0,0,NULL),(49,88,68,7,NULL,NULL,1,NULL,0,0,NULL),(50,168,88,2,NULL,NULL,1,NULL,0,0,NULL),(51,166,125,1,NULL,NULL,1,NULL,0,0,NULL),(52,19,125,1,NULL,NULL,1,NULL,0,0,NULL),(53,166,98,1,NULL,NULL,1,NULL,0,0,NULL),(54,19,98,1,NULL,NULL,1,NULL,0,0,NULL),(55,19,166,4,NULL,NULL,1,NULL,0,0,NULL),(56,98,76,8,NULL,NULL,1,NULL,0,0,NULL),(57,166,76,8,NULL,NULL,1,NULL,0,0,NULL),(58,19,76,8,NULL,NULL,1,NULL,0,0,NULL),(59,125,76,7,NULL,NULL,0,NULL,0,0,NULL),(60,98,125,2,NULL,NULL,0,NULL,0,0,NULL),(61,163,14,1,NULL,NULL,1,NULL,0,0,NULL),(62,83,14,1,NULL,NULL,1,NULL,0,0,NULL),(63,163,54,1,NULL,NULL,1,NULL,0,0,NULL),(64,83,54,1,NULL,NULL,1,NULL,0,0,NULL),(65,83,163,4,NULL,NULL,1,NULL,0,0,NULL),(66,54,122,8,NULL,NULL,1,NULL,0,0,NULL),(67,163,122,8,NULL,NULL,1,NULL,0,0,NULL),(68,83,122,8,NULL,NULL,1,NULL,0,0,NULL),(69,14,122,7,NULL,NULL,0,NULL,0,0,NULL),(70,54,14,2,NULL,NULL,0,NULL,0,0,NULL),(71,151,189,1,NULL,NULL,1,NULL,0,0,NULL),(72,190,189,1,NULL,NULL,1,NULL,0,0,NULL),(73,151,104,1,NULL,NULL,1,NULL,0,0,NULL),(74,190,104,1,NULL,NULL,1,NULL,0,0,NULL),(75,190,151,4,NULL,NULL,1,NULL,0,0,NULL),(76,104,102,8,NULL,NULL,1,NULL,0,0,NULL),(77,151,102,8,NULL,NULL,1,NULL,0,0,NULL),(78,190,102,8,NULL,NULL,1,NULL,0,0,NULL),(79,189,102,7,NULL,NULL,1,NULL,0,0,NULL),(80,104,189,2,NULL,NULL,1,NULL,0,0,NULL),(81,139,77,1,NULL,NULL,1,NULL,0,0,NULL),(82,140,77,1,NULL,NULL,1,NULL,0,0,NULL),(83,139,176,1,NULL,NULL,1,NULL,0,0,NULL),(84,140,176,1,NULL,NULL,1,NULL,0,0,NULL),(85,140,139,4,NULL,NULL,1,NULL,0,0,NULL),(86,176,49,8,NULL,NULL,1,NULL,0,0,NULL),(87,139,49,8,NULL,NULL,1,NULL,0,0,NULL),(88,140,49,8,NULL,NULL,1,NULL,0,0,NULL),(89,77,49,7,NULL,NULL,1,NULL,0,0,NULL),(90,176,77,2,NULL,NULL,1,NULL,0,0,NULL),(91,174,150,1,NULL,NULL,1,NULL,0,0,NULL),(92,73,150,1,NULL,NULL,1,NULL,0,0,NULL),(93,174,193,1,NULL,NULL,1,NULL,0,0,NULL),(94,73,193,1,NULL,NULL,1,NULL,0,0,NULL),(95,73,174,4,NULL,NULL,1,NULL,0,0,NULL),(96,193,38,8,NULL,NULL,1,NULL,0,0,NULL),(97,174,38,8,NULL,NULL,1,NULL,0,0,NULL),(98,73,38,8,NULL,NULL,1,NULL,0,0,NULL),(99,150,38,7,NULL,NULL,0,NULL,0,0,NULL),(100,193,150,2,NULL,NULL,0,NULL,0,0,NULL),(101,107,58,1,NULL,NULL,1,NULL,0,0,NULL),(102,35,58,1,NULL,NULL,1,NULL,0,0,NULL),(103,107,8,1,NULL,NULL,1,NULL,0,0,NULL),(104,35,8,1,NULL,NULL,1,NULL,0,0,NULL),(105,35,107,4,NULL,NULL,1,NULL,0,0,NULL),(106,8,46,8,NULL,NULL,1,NULL,0,0,NULL),(107,107,46,8,NULL,NULL,1,NULL,0,0,NULL),(108,35,46,8,NULL,NULL,1,NULL,0,0,NULL),(109,58,46,7,NULL,NULL,0,NULL,0,0,NULL),(110,8,58,2,NULL,NULL,0,NULL,0,0,NULL),(111,59,173,1,NULL,NULL,1,NULL,0,0,NULL),(112,5,173,1,NULL,NULL,1,NULL,0,0,NULL),(113,59,33,1,NULL,NULL,1,NULL,0,0,NULL),(114,5,33,1,NULL,NULL,1,NULL,0,0,NULL),(115,5,59,4,NULL,NULL,1,NULL,0,0,NULL),(116,33,181,8,NULL,NULL,1,NULL,0,0,NULL),(117,59,181,8,NULL,NULL,1,NULL,0,0,NULL),(118,5,181,8,NULL,NULL,1,NULL,0,0,NULL),(119,173,181,7,NULL,NULL,0,NULL,0,0,NULL),(120,33,173,2,NULL,NULL,0,NULL,0,0,NULL),(121,201,64,1,NULL,NULL,1,NULL,0,0,NULL),(122,126,64,1,NULL,NULL,1,NULL,0,0,NULL),(123,201,87,1,NULL,NULL,1,NULL,0,0,NULL),(124,126,87,1,NULL,NULL,1,NULL,0,0,NULL),(125,126,201,4,NULL,NULL,1,NULL,0,0,NULL),(126,87,57,8,NULL,NULL,1,NULL,0,0,NULL),(127,201,57,8,NULL,NULL,1,NULL,0,0,NULL),(128,126,57,8,NULL,NULL,1,NULL,0,0,NULL),(129,64,57,7,NULL,NULL,1,NULL,0,0,NULL),(130,87,64,2,NULL,NULL,1,NULL,0,0,NULL),(131,94,96,1,NULL,NULL,1,NULL,0,0,NULL),(132,183,96,1,NULL,NULL,1,NULL,0,0,NULL),(133,94,141,1,NULL,NULL,1,NULL,0,0,NULL),(134,183,141,1,NULL,NULL,1,NULL,0,0,NULL),(135,183,94,4,NULL,NULL,1,NULL,0,0,NULL),(136,141,161,8,NULL,NULL,1,NULL,0,0,NULL),(137,94,161,8,NULL,NULL,1,NULL,0,0,NULL),(138,183,161,8,NULL,NULL,1,NULL,0,0,NULL),(139,96,161,7,NULL,NULL,1,NULL,0,0,NULL),(140,141,96,2,NULL,NULL,1,NULL,0,0,NULL),(141,191,153,1,NULL,NULL,1,NULL,0,0,NULL),(142,32,153,1,NULL,NULL,1,NULL,0,0,NULL),(143,191,89,1,NULL,NULL,1,NULL,0,0,NULL),(144,32,89,1,NULL,NULL,1,NULL,0,0,NULL),(145,32,191,4,NULL,NULL,1,NULL,0,0,NULL),(146,89,17,8,NULL,NULL,1,NULL,0,0,NULL),(147,191,17,8,NULL,NULL,1,NULL,0,0,NULL),(148,32,17,8,NULL,NULL,1,NULL,0,0,NULL),(149,153,17,7,NULL,NULL,1,NULL,0,0,NULL),(150,89,153,2,NULL,NULL,1,NULL,0,0,NULL),(151,133,169,1,NULL,NULL,1,NULL,0,0,NULL),(152,4,169,1,NULL,NULL,1,NULL,0,0,NULL),(153,133,186,1,NULL,NULL,1,NULL,0,0,NULL),(154,4,186,1,NULL,NULL,1,NULL,0,0,NULL),(155,4,133,4,NULL,NULL,1,NULL,0,0,NULL),(156,186,187,8,NULL,NULL,1,NULL,0,0,NULL),(157,133,187,8,NULL,NULL,1,NULL,0,0,NULL),(158,4,187,8,NULL,NULL,1,NULL,0,0,NULL),(159,169,187,7,NULL,NULL,1,NULL,0,0,NULL),(160,186,169,2,NULL,NULL,1,NULL,0,0,NULL),(161,184,197,1,NULL,NULL,1,NULL,0,0,NULL),(162,130,197,1,NULL,NULL,1,NULL,0,0,NULL),(163,184,171,1,NULL,NULL,1,NULL,0,0,NULL),(164,130,171,1,NULL,NULL,1,NULL,0,0,NULL),(165,130,184,4,NULL,NULL,1,NULL,0,0,NULL),(166,171,80,8,NULL,NULL,1,NULL,0,0,NULL),(167,184,80,8,NULL,NULL,1,NULL,0,0,NULL),(168,130,80,8,NULL,NULL,1,NULL,0,0,NULL),(169,197,80,7,NULL,NULL,1,NULL,0,0,NULL),(170,171,197,2,NULL,NULL,1,NULL,0,0,NULL),(171,154,170,1,NULL,NULL,1,NULL,0,0,NULL),(172,160,170,1,NULL,NULL,1,NULL,0,0,NULL),(173,154,114,1,NULL,NULL,1,NULL,0,0,NULL),(174,160,114,1,NULL,NULL,1,NULL,0,0,NULL),(175,160,154,4,NULL,NULL,1,NULL,0,0,NULL),(176,114,51,8,NULL,NULL,1,NULL,0,0,NULL),(177,154,51,8,NULL,NULL,1,NULL,0,0,NULL),(178,160,51,8,NULL,NULL,1,NULL,0,0,NULL),(179,170,51,7,NULL,NULL,0,NULL,0,0,NULL),(180,114,170,2,NULL,NULL,0,NULL,0,0,NULL),(181,148,113,1,NULL,NULL,1,NULL,0,0,NULL),(182,179,113,1,NULL,NULL,1,NULL,0,0,NULL),(183,148,100,1,NULL,NULL,1,NULL,0,0,NULL),(184,179,100,1,NULL,NULL,1,NULL,0,0,NULL),(185,179,148,4,NULL,NULL,1,NULL,0,0,NULL),(186,100,131,8,NULL,NULL,1,NULL,0,0,NULL),(187,148,131,8,NULL,NULL,1,NULL,0,0,NULL),(188,179,131,8,NULL,NULL,1,NULL,0,0,NULL),(189,113,131,7,NULL,NULL,1,NULL,0,0,NULL),(190,100,113,2,NULL,NULL,1,NULL,0,0,NULL),(191,195,72,1,NULL,NULL,1,NULL,0,0,NULL),(192,156,72,1,NULL,NULL,1,NULL,0,0,NULL),(193,195,70,1,NULL,NULL,1,NULL,0,0,NULL),(194,156,70,1,NULL,NULL,1,NULL,0,0,NULL),(195,156,195,4,NULL,NULL,1,NULL,0,0,NULL),(196,70,79,8,NULL,NULL,1,NULL,0,0,NULL),(197,195,79,8,NULL,NULL,1,NULL,0,0,NULL),(198,156,79,8,NULL,NULL,1,NULL,0,0,NULL),(199,72,79,7,NULL,NULL,1,NULL,0,0,NULL),(200,70,72,2,NULL,NULL,1,NULL,0,0,NULL),(201,121,23,5,NULL,NULL,1,NULL,0,0,NULL),(202,19,39,5,NULL,NULL,1,NULL,0,0,NULL),(203,26,60,5,NULL,NULL,1,NULL,0,0,NULL),(204,193,63,5,NULL,NULL,1,NULL,0,0,NULL),(205,84,65,5,NULL,NULL,1,NULL,0,0,NULL),(206,160,74,5,NULL,NULL,1,NULL,0,0,NULL),(207,70,95,5,NULL,NULL,1,NULL,0,0,NULL),(208,119,101,5,NULL,NULL,1,NULL,0,0,NULL),(209,29,105,5,NULL,NULL,1,NULL,0,0,NULL),(210,154,111,5,NULL,NULL,1,NULL,0,0,NULL),(211,21,123,5,NULL,NULL,1,NULL,0,0,NULL),(212,194,127,5,NULL,NULL,1,NULL,0,0,NULL),(213,142,144,5,NULL,NULL,1,NULL,0,0,NULL),(214,18,178,5,NULL,NULL,1,NULL,0,0,NULL),(215,106,182,5,NULL,NULL,1,NULL,0,0,NULL),(216,172,192,5,NULL,NULL,1,NULL,0,0,NULL); +INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`) VALUES (1,74,172,1,NULL,NULL,1,NULL,0,0,NULL),(2,47,172,1,NULL,NULL,1,NULL,0,0,NULL),(3,74,125,1,NULL,NULL,1,NULL,0,0,NULL),(4,47,125,1,NULL,NULL,1,NULL,0,0,NULL),(5,47,74,4,NULL,NULL,1,NULL,0,0,NULL),(6,125,11,8,NULL,NULL,1,NULL,0,0,NULL),(7,74,11,8,NULL,NULL,1,NULL,0,0,NULL),(8,47,11,8,NULL,NULL,1,NULL,0,0,NULL),(9,172,11,7,NULL,NULL,0,NULL,0,0,NULL),(10,125,172,2,NULL,NULL,0,NULL,0,0,NULL),(11,126,159,1,NULL,NULL,1,NULL,0,0,NULL),(12,9,159,1,NULL,NULL,1,NULL,0,0,NULL),(13,126,102,1,NULL,NULL,1,NULL,0,0,NULL),(14,9,102,1,NULL,NULL,1,NULL,0,0,NULL),(15,9,126,4,NULL,NULL,1,NULL,0,0,NULL),(16,102,128,8,NULL,NULL,1,NULL,0,0,NULL),(17,126,128,8,NULL,NULL,1,NULL,0,0,NULL),(18,9,128,8,NULL,NULL,1,NULL,0,0,NULL),(19,159,128,7,NULL,NULL,0,NULL,0,0,NULL),(20,102,159,2,NULL,NULL,0,NULL,0,0,NULL),(21,40,198,1,NULL,NULL,1,NULL,0,0,NULL),(22,85,198,1,NULL,NULL,1,NULL,0,0,NULL),(23,40,149,1,NULL,NULL,1,NULL,0,0,NULL),(24,85,149,1,NULL,NULL,1,NULL,0,0,NULL),(25,85,40,4,NULL,NULL,1,NULL,0,0,NULL),(26,149,38,8,NULL,NULL,1,NULL,0,0,NULL),(27,40,38,8,NULL,NULL,1,NULL,0,0,NULL),(28,85,38,8,NULL,NULL,1,NULL,0,0,NULL),(29,198,38,7,NULL,NULL,1,NULL,0,0,NULL),(30,149,198,2,NULL,NULL,1,NULL,0,0,NULL),(31,134,192,1,NULL,NULL,1,NULL,0,0,NULL),(32,100,192,1,NULL,NULL,1,NULL,0,0,NULL),(33,134,170,1,NULL,NULL,1,NULL,0,0,NULL),(34,100,170,1,NULL,NULL,1,NULL,0,0,NULL),(35,100,134,4,NULL,NULL,1,NULL,0,0,NULL),(36,170,136,8,NULL,NULL,1,NULL,0,0,NULL),(37,134,136,8,NULL,NULL,1,NULL,0,0,NULL),(38,100,136,8,NULL,NULL,1,NULL,0,0,NULL),(39,192,136,7,NULL,NULL,0,NULL,0,0,NULL),(40,170,192,2,NULL,NULL,0,NULL,0,0,NULL),(41,59,34,1,NULL,NULL,1,NULL,0,0,NULL),(42,110,34,1,NULL,NULL,1,NULL,0,0,NULL),(43,59,113,1,NULL,NULL,1,NULL,0,0,NULL),(44,110,113,1,NULL,NULL,1,NULL,0,0,NULL),(45,110,59,4,NULL,NULL,1,NULL,0,0,NULL),(46,113,32,8,NULL,NULL,1,NULL,0,0,NULL),(47,59,32,8,NULL,NULL,1,NULL,0,0,NULL),(48,110,32,8,NULL,NULL,1,NULL,0,0,NULL),(49,34,32,7,NULL,NULL,1,NULL,0,0,NULL),(50,113,34,2,NULL,NULL,1,NULL,0,0,NULL),(51,147,191,1,NULL,NULL,1,NULL,0,0,NULL),(52,151,191,1,NULL,NULL,1,NULL,0,0,NULL),(53,147,160,1,NULL,NULL,1,NULL,0,0,NULL),(54,151,160,1,NULL,NULL,1,NULL,0,0,NULL),(55,151,147,4,NULL,NULL,1,NULL,0,0,NULL),(56,160,27,8,NULL,NULL,1,NULL,0,0,NULL),(57,147,27,8,NULL,NULL,1,NULL,0,0,NULL),(58,151,27,8,NULL,NULL,1,NULL,0,0,NULL),(59,191,27,7,NULL,NULL,1,NULL,0,0,NULL),(60,160,191,2,NULL,NULL,1,NULL,0,0,NULL),(61,94,82,1,NULL,NULL,1,NULL,0,0,NULL),(62,188,82,1,NULL,NULL,1,NULL,0,0,NULL),(63,94,196,1,NULL,NULL,1,NULL,0,0,NULL),(64,188,196,1,NULL,NULL,1,NULL,0,0,NULL),(65,188,94,4,NULL,NULL,1,NULL,0,0,NULL),(66,196,116,8,NULL,NULL,1,NULL,0,0,NULL),(67,94,116,8,NULL,NULL,1,NULL,0,0,NULL),(68,188,116,8,NULL,NULL,1,NULL,0,0,NULL),(69,82,116,7,NULL,NULL,0,NULL,0,0,NULL),(70,196,82,2,NULL,NULL,0,NULL,0,0,NULL),(71,28,195,1,NULL,NULL,1,NULL,0,0,NULL),(72,133,195,1,NULL,NULL,1,NULL,0,0,NULL),(73,28,173,1,NULL,NULL,1,NULL,0,0,NULL),(74,133,173,1,NULL,NULL,1,NULL,0,0,NULL),(75,133,28,4,NULL,NULL,1,NULL,0,0,NULL),(76,173,106,8,NULL,NULL,1,NULL,0,0,NULL),(77,28,106,8,NULL,NULL,1,NULL,0,0,NULL),(78,133,106,8,NULL,NULL,1,NULL,0,0,NULL),(79,195,106,7,NULL,NULL,0,NULL,0,0,NULL),(80,173,195,2,NULL,NULL,0,NULL,0,0,NULL),(81,152,141,1,NULL,NULL,1,NULL,0,0,NULL),(82,61,141,1,NULL,NULL,1,NULL,0,0,NULL),(83,152,112,1,NULL,NULL,1,NULL,0,0,NULL),(84,61,112,1,NULL,NULL,1,NULL,0,0,NULL),(85,61,152,4,NULL,NULL,1,NULL,0,0,NULL),(86,112,22,8,NULL,NULL,1,NULL,0,0,NULL),(87,152,22,8,NULL,NULL,1,NULL,0,0,NULL),(88,61,22,8,NULL,NULL,1,NULL,0,0,NULL),(89,141,22,7,NULL,NULL,1,NULL,0,0,NULL),(90,112,141,2,NULL,NULL,1,NULL,0,0,NULL),(91,155,108,1,NULL,NULL,1,NULL,0,0,NULL),(92,29,108,1,NULL,NULL,1,NULL,0,0,NULL),(93,155,54,1,NULL,NULL,1,NULL,0,0,NULL),(94,29,54,1,NULL,NULL,1,NULL,0,0,NULL),(95,29,155,4,NULL,NULL,1,NULL,0,0,NULL),(96,54,115,8,NULL,NULL,1,NULL,0,0,NULL),(97,155,115,8,NULL,NULL,1,NULL,0,0,NULL),(98,29,115,8,NULL,NULL,1,NULL,0,0,NULL),(99,108,115,7,NULL,NULL,1,NULL,0,0,NULL),(100,54,108,2,NULL,NULL,1,NULL,0,0,NULL),(101,63,103,1,NULL,NULL,1,NULL,0,0,NULL),(102,95,103,1,NULL,NULL,1,NULL,0,0,NULL),(103,63,201,1,NULL,NULL,1,NULL,0,0,NULL),(104,95,201,1,NULL,NULL,1,NULL,0,0,NULL),(105,95,63,4,NULL,NULL,1,NULL,0,0,NULL),(106,201,35,8,NULL,NULL,1,NULL,0,0,NULL),(107,63,35,8,NULL,NULL,1,NULL,0,0,NULL),(108,95,35,8,NULL,NULL,1,NULL,0,0,NULL),(109,103,35,7,NULL,NULL,1,NULL,0,0,NULL),(110,201,103,2,NULL,NULL,1,NULL,0,0,NULL),(111,114,107,1,NULL,NULL,1,NULL,0,0,NULL),(112,70,107,1,NULL,NULL,1,NULL,0,0,NULL),(113,114,68,1,NULL,NULL,1,NULL,0,0,NULL),(114,70,68,1,NULL,NULL,1,NULL,0,0,NULL),(115,70,114,4,NULL,NULL,1,NULL,0,0,NULL),(116,68,177,8,NULL,NULL,1,NULL,0,0,NULL),(117,114,177,8,NULL,NULL,1,NULL,0,0,NULL),(118,70,177,8,NULL,NULL,1,NULL,0,0,NULL),(119,107,177,7,NULL,NULL,1,NULL,0,0,NULL),(120,68,107,2,NULL,NULL,1,NULL,0,0,NULL),(121,140,10,1,NULL,NULL,1,NULL,0,0,NULL),(122,58,10,1,NULL,NULL,1,NULL,0,0,NULL),(123,140,130,1,NULL,NULL,1,NULL,0,0,NULL),(124,58,130,1,NULL,NULL,1,NULL,0,0,NULL),(125,58,140,4,NULL,NULL,1,NULL,0,0,NULL),(126,130,150,8,NULL,NULL,1,NULL,0,0,NULL),(127,140,150,8,NULL,NULL,1,NULL,0,0,NULL),(128,58,150,8,NULL,NULL,1,NULL,0,0,NULL),(129,10,150,7,NULL,NULL,1,NULL,0,0,NULL),(130,130,10,2,NULL,NULL,1,NULL,0,0,NULL),(131,78,187,1,NULL,NULL,1,NULL,0,0,NULL),(132,181,187,1,NULL,NULL,1,NULL,0,0,NULL),(133,78,48,1,NULL,NULL,1,NULL,0,0,NULL),(134,181,48,1,NULL,NULL,1,NULL,0,0,NULL),(135,181,78,4,NULL,NULL,1,NULL,0,0,NULL),(136,48,72,8,NULL,NULL,1,NULL,0,0,NULL),(137,78,72,8,NULL,NULL,1,NULL,0,0,NULL),(138,181,72,8,NULL,NULL,1,NULL,0,0,NULL),(139,187,72,7,NULL,NULL,0,NULL,0,0,NULL),(140,48,187,2,NULL,NULL,0,NULL,0,0,NULL),(141,20,135,1,NULL,NULL,1,NULL,0,0,NULL),(142,13,135,1,NULL,NULL,1,NULL,0,0,NULL),(143,20,43,1,NULL,NULL,1,NULL,0,0,NULL),(144,13,43,1,NULL,NULL,1,NULL,0,0,NULL),(145,13,20,4,NULL,NULL,1,NULL,0,0,NULL),(146,43,21,8,NULL,NULL,1,NULL,0,0,NULL),(147,20,21,8,NULL,NULL,1,NULL,0,0,NULL),(148,13,21,8,NULL,NULL,1,NULL,0,0,NULL),(149,135,21,7,NULL,NULL,0,NULL,0,0,NULL),(150,43,135,2,NULL,NULL,0,NULL,0,0,NULL),(151,89,194,1,NULL,NULL,1,NULL,0,0,NULL),(152,75,194,1,NULL,NULL,1,NULL,0,0,NULL),(153,89,131,1,NULL,NULL,1,NULL,0,0,NULL),(154,75,131,1,NULL,NULL,1,NULL,0,0,NULL),(155,75,89,4,NULL,NULL,1,NULL,0,0,NULL),(156,131,19,8,NULL,NULL,1,NULL,0,0,NULL),(157,89,19,8,NULL,NULL,1,NULL,0,0,NULL),(158,75,19,8,NULL,NULL,1,NULL,0,0,NULL),(159,194,19,7,NULL,NULL,0,NULL,0,0,NULL),(160,131,194,2,NULL,NULL,0,NULL,0,0,NULL),(161,121,104,1,NULL,NULL,1,NULL,0,0,NULL),(162,39,104,1,NULL,NULL,1,NULL,0,0,NULL),(163,121,153,1,NULL,NULL,1,NULL,0,0,NULL),(164,39,153,1,NULL,NULL,1,NULL,0,0,NULL),(165,39,121,4,NULL,NULL,1,NULL,0,0,NULL),(166,153,168,8,NULL,NULL,1,NULL,0,0,NULL),(167,121,168,8,NULL,NULL,1,NULL,0,0,NULL),(168,39,168,8,NULL,NULL,1,NULL,0,0,NULL),(169,104,168,7,NULL,NULL,1,NULL,0,0,NULL),(170,153,104,2,NULL,NULL,1,NULL,0,0,NULL),(171,36,42,1,NULL,NULL,1,NULL,0,0,NULL),(172,26,42,1,NULL,NULL,1,NULL,0,0,NULL),(173,36,189,1,NULL,NULL,1,NULL,0,0,NULL),(174,26,189,1,NULL,NULL,1,NULL,0,0,NULL),(175,26,36,4,NULL,NULL,1,NULL,0,0,NULL),(176,189,101,8,NULL,NULL,1,NULL,0,0,NULL),(177,36,101,8,NULL,NULL,1,NULL,0,0,NULL),(178,26,101,8,NULL,NULL,1,NULL,0,0,NULL),(179,42,101,7,NULL,NULL,1,NULL,0,0,NULL),(180,189,42,2,NULL,NULL,1,NULL,0,0,NULL),(181,69,171,1,NULL,NULL,1,NULL,0,0,NULL),(182,109,171,1,NULL,NULL,1,NULL,0,0,NULL),(183,69,200,1,NULL,NULL,1,NULL,0,0,NULL),(184,109,200,1,NULL,NULL,1,NULL,0,0,NULL),(185,109,69,4,NULL,NULL,1,NULL,0,0,NULL),(186,200,98,8,NULL,NULL,1,NULL,0,0,NULL),(187,69,98,8,NULL,NULL,1,NULL,0,0,NULL),(188,109,98,8,NULL,NULL,1,NULL,0,0,NULL),(189,171,98,7,NULL,NULL,1,NULL,0,0,NULL),(190,200,171,2,NULL,NULL,1,NULL,0,0,NULL),(191,158,25,1,NULL,NULL,1,NULL,0,0,NULL),(192,4,25,1,NULL,NULL,1,NULL,0,0,NULL),(193,158,180,1,NULL,NULL,1,NULL,0,0,NULL),(194,4,180,1,NULL,NULL,1,NULL,0,0,NULL),(195,4,158,4,NULL,NULL,1,NULL,0,0,NULL),(196,180,163,8,NULL,NULL,1,NULL,0,0,NULL),(197,158,163,8,NULL,NULL,1,NULL,0,0,NULL),(198,4,163,8,NULL,NULL,1,NULL,0,0,NULL),(199,25,163,7,NULL,NULL,0,NULL,0,0,NULL),(200,180,25,2,NULL,NULL,0,NULL,0,0,NULL),(201,26,14,5,NULL,NULL,1,NULL,0,0,NULL),(202,36,37,5,NULL,NULL,1,NULL,0,0,NULL),(203,20,46,5,NULL,NULL,1,NULL,0,0,NULL),(204,89,50,5,NULL,NULL,1,NULL,0,0,NULL),(205,189,56,5,NULL,NULL,1,NULL,0,0,NULL),(206,29,62,5,NULL,NULL,1,NULL,0,0,NULL),(207,75,73,5,NULL,NULL,1,NULL,0,0,NULL),(208,197,86,5,NULL,NULL,1,NULL,0,0,NULL),(209,120,91,5,NULL,NULL,1,NULL,0,0,NULL),(210,151,105,5,NULL,NULL,1,NULL,0,0,NULL),(211,85,117,5,NULL,NULL,1,NULL,0,0,NULL),(212,34,137,5,NULL,NULL,1,NULL,0,0,NULL),(213,170,142,5,NULL,NULL,1,NULL,0,0,NULL),(214,18,144,5,NULL,NULL,1,NULL,0,0,NULL),(215,104,148,5,NULL,NULL,1,NULL,0,0,NULL),(216,57,157,5,NULL,NULL,1,NULL,0,0,NULL),(217,185,174,5,NULL,NULL,1,NULL,0,0,NULL),(218,186,178,5,NULL,NULL,1,NULL,0,0,NULL); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Dumping data for table `civicrm_relationship_cache` +-- + +LOCK TABLES `civicrm_relationship_cache` WRITE; +/*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */; +INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`) VALUES (1,1,1,'a_b',74,'Child of',172,'Parent of',1,NULL,NULL),(2,1,1,'b_a',172,'Parent of',74,'Child of',1,NULL,NULL),(3,2,1,'a_b',47,'Child of',172,'Parent of',1,NULL,NULL),(4,2,1,'b_a',172,'Parent of',47,'Child of',1,NULL,NULL),(5,3,1,'a_b',74,'Child of',125,'Parent of',1,NULL,NULL),(6,3,1,'b_a',125,'Parent of',74,'Child of',1,NULL,NULL),(7,4,1,'a_b',47,'Child of',125,'Parent of',1,NULL,NULL),(8,4,1,'b_a',125,'Parent of',47,'Child of',1,NULL,NULL),(9,5,4,'a_b',47,'Sibling of',74,'Sibling of',1,NULL,NULL),(10,5,4,'b_a',74,'Sibling of',47,'Sibling of',1,NULL,NULL),(11,6,8,'a_b',125,'Household Member of',11,'Household Member is',1,NULL,NULL),(12,6,8,'b_a',11,'Household Member is',125,'Household Member of',1,NULL,NULL),(13,7,8,'a_b',74,'Household Member of',11,'Household Member is',1,NULL,NULL),(14,7,8,'b_a',11,'Household Member is',74,'Household Member of',1,NULL,NULL),(15,8,8,'a_b',47,'Household Member of',11,'Household Member is',1,NULL,NULL),(16,8,8,'b_a',11,'Household Member is',47,'Household Member of',1,NULL,NULL),(17,9,7,'a_b',172,'Head of Household for',11,'Head of Household is',0,NULL,NULL),(18,9,7,'b_a',11,'Head of Household is',172,'Head of Household for',0,NULL,NULL),(19,10,2,'a_b',125,'Spouse of',172,'Spouse of',0,NULL,NULL),(20,10,2,'b_a',172,'Spouse of',125,'Spouse of',0,NULL,NULL),(21,11,1,'a_b',126,'Child of',159,'Parent of',1,NULL,NULL),(22,11,1,'b_a',159,'Parent of',126,'Child of',1,NULL,NULL),(23,12,1,'a_b',9,'Child of',159,'Parent of',1,NULL,NULL),(24,12,1,'b_a',159,'Parent of',9,'Child of',1,NULL,NULL),(25,13,1,'a_b',126,'Child of',102,'Parent of',1,NULL,NULL),(26,13,1,'b_a',102,'Parent of',126,'Child of',1,NULL,NULL),(27,14,1,'a_b',9,'Child of',102,'Parent of',1,NULL,NULL),(28,14,1,'b_a',102,'Parent of',9,'Child of',1,NULL,NULL),(29,15,4,'a_b',9,'Sibling of',126,'Sibling of',1,NULL,NULL),(30,15,4,'b_a',126,'Sibling of',9,'Sibling of',1,NULL,NULL),(31,16,8,'a_b',102,'Household Member of',128,'Household Member is',1,NULL,NULL),(32,16,8,'b_a',128,'Household Member is',102,'Household Member of',1,NULL,NULL),(33,17,8,'a_b',126,'Household Member of',128,'Household Member is',1,NULL,NULL),(34,17,8,'b_a',128,'Household Member is',126,'Household Member of',1,NULL,NULL),(35,18,8,'a_b',9,'Household Member of',128,'Household Member is',1,NULL,NULL),(36,18,8,'b_a',128,'Household Member is',9,'Household Member of',1,NULL,NULL),(37,19,7,'a_b',159,'Head of Household for',128,'Head of Household is',0,NULL,NULL),(38,19,7,'b_a',128,'Head of Household is',159,'Head of Household for',0,NULL,NULL),(39,20,2,'a_b',102,'Spouse of',159,'Spouse of',0,NULL,NULL),(40,20,2,'b_a',159,'Spouse of',102,'Spouse of',0,NULL,NULL),(41,21,1,'a_b',40,'Child of',198,'Parent of',1,NULL,NULL),(42,21,1,'b_a',198,'Parent of',40,'Child of',1,NULL,NULL),(43,22,1,'a_b',85,'Child of',198,'Parent of',1,NULL,NULL),(44,22,1,'b_a',198,'Parent of',85,'Child of',1,NULL,NULL),(45,23,1,'a_b',40,'Child of',149,'Parent of',1,NULL,NULL),(46,23,1,'b_a',149,'Parent of',40,'Child of',1,NULL,NULL),(47,24,1,'a_b',85,'Child of',149,'Parent of',1,NULL,NULL),(48,24,1,'b_a',149,'Parent of',85,'Child of',1,NULL,NULL),(49,25,4,'a_b',85,'Sibling of',40,'Sibling of',1,NULL,NULL),(50,25,4,'b_a',40,'Sibling of',85,'Sibling of',1,NULL,NULL),(51,26,8,'a_b',149,'Household Member of',38,'Household Member is',1,NULL,NULL),(52,26,8,'b_a',38,'Household Member is',149,'Household Member of',1,NULL,NULL),(53,27,8,'a_b',40,'Household Member of',38,'Household Member is',1,NULL,NULL),(54,27,8,'b_a',38,'Household Member is',40,'Household Member of',1,NULL,NULL),(55,28,8,'a_b',85,'Household Member of',38,'Household Member is',1,NULL,NULL),(56,28,8,'b_a',38,'Household Member is',85,'Household Member of',1,NULL,NULL),(57,29,7,'a_b',198,'Head of Household for',38,'Head of Household is',1,NULL,NULL),(58,29,7,'b_a',38,'Head of Household is',198,'Head of Household for',1,NULL,NULL),(59,30,2,'a_b',149,'Spouse of',198,'Spouse of',1,NULL,NULL),(60,30,2,'b_a',198,'Spouse of',149,'Spouse of',1,NULL,NULL),(61,31,1,'a_b',134,'Child of',192,'Parent of',1,NULL,NULL),(62,31,1,'b_a',192,'Parent of',134,'Child of',1,NULL,NULL),(63,32,1,'a_b',100,'Child of',192,'Parent of',1,NULL,NULL),(64,32,1,'b_a',192,'Parent of',100,'Child of',1,NULL,NULL),(65,33,1,'a_b',134,'Child of',170,'Parent of',1,NULL,NULL),(66,33,1,'b_a',170,'Parent of',134,'Child of',1,NULL,NULL),(67,34,1,'a_b',100,'Child of',170,'Parent of',1,NULL,NULL),(68,34,1,'b_a',170,'Parent of',100,'Child of',1,NULL,NULL),(69,35,4,'a_b',100,'Sibling of',134,'Sibling of',1,NULL,NULL),(70,35,4,'b_a',134,'Sibling of',100,'Sibling of',1,NULL,NULL),(71,36,8,'a_b',170,'Household Member of',136,'Household Member is',1,NULL,NULL),(72,36,8,'b_a',136,'Household Member is',170,'Household Member of',1,NULL,NULL),(73,37,8,'a_b',134,'Household Member of',136,'Household Member is',1,NULL,NULL),(74,37,8,'b_a',136,'Household Member is',134,'Household Member of',1,NULL,NULL),(75,38,8,'a_b',100,'Household Member of',136,'Household Member is',1,NULL,NULL),(76,38,8,'b_a',136,'Household Member is',100,'Household Member of',1,NULL,NULL),(77,39,7,'a_b',192,'Head of Household for',136,'Head of Household is',0,NULL,NULL),(78,39,7,'b_a',136,'Head of Household is',192,'Head of Household for',0,NULL,NULL),(79,40,2,'a_b',170,'Spouse of',192,'Spouse of',0,NULL,NULL),(80,40,2,'b_a',192,'Spouse of',170,'Spouse of',0,NULL,NULL),(81,41,1,'a_b',59,'Child of',34,'Parent of',1,NULL,NULL),(82,41,1,'b_a',34,'Parent of',59,'Child of',1,NULL,NULL),(83,42,1,'a_b',110,'Child of',34,'Parent of',1,NULL,NULL),(84,42,1,'b_a',34,'Parent of',110,'Child of',1,NULL,NULL),(85,43,1,'a_b',59,'Child of',113,'Parent of',1,NULL,NULL),(86,43,1,'b_a',113,'Parent of',59,'Child of',1,NULL,NULL),(87,44,1,'a_b',110,'Child of',113,'Parent of',1,NULL,NULL),(88,44,1,'b_a',113,'Parent of',110,'Child of',1,NULL,NULL),(89,45,4,'a_b',110,'Sibling of',59,'Sibling of',1,NULL,NULL),(90,45,4,'b_a',59,'Sibling of',110,'Sibling of',1,NULL,NULL),(91,46,8,'a_b',113,'Household Member of',32,'Household Member is',1,NULL,NULL),(92,46,8,'b_a',32,'Household Member is',113,'Household Member of',1,NULL,NULL),(93,47,8,'a_b',59,'Household Member of',32,'Household Member is',1,NULL,NULL),(94,47,8,'b_a',32,'Household Member is',59,'Household Member of',1,NULL,NULL),(95,48,8,'a_b',110,'Household Member of',32,'Household Member is',1,NULL,NULL),(96,48,8,'b_a',32,'Household Member is',110,'Household Member of',1,NULL,NULL),(97,49,7,'a_b',34,'Head of Household for',32,'Head of Household is',1,NULL,NULL),(98,49,7,'b_a',32,'Head of Household is',34,'Head of Household for',1,NULL,NULL),(99,50,2,'a_b',113,'Spouse of',34,'Spouse of',1,NULL,NULL),(100,50,2,'b_a',34,'Spouse of',113,'Spouse of',1,NULL,NULL),(101,51,1,'a_b',147,'Child of',191,'Parent of',1,NULL,NULL),(102,51,1,'b_a',191,'Parent of',147,'Child of',1,NULL,NULL),(103,52,1,'a_b',151,'Child of',191,'Parent of',1,NULL,NULL),(104,52,1,'b_a',191,'Parent of',151,'Child of',1,NULL,NULL),(105,53,1,'a_b',147,'Child of',160,'Parent of',1,NULL,NULL),(106,53,1,'b_a',160,'Parent of',147,'Child of',1,NULL,NULL),(107,54,1,'a_b',151,'Child of',160,'Parent of',1,NULL,NULL),(108,54,1,'b_a',160,'Parent of',151,'Child of',1,NULL,NULL),(109,55,4,'a_b',151,'Sibling of',147,'Sibling of',1,NULL,NULL),(110,55,4,'b_a',147,'Sibling of',151,'Sibling of',1,NULL,NULL),(111,56,8,'a_b',160,'Household Member of',27,'Household Member is',1,NULL,NULL),(112,56,8,'b_a',27,'Household Member is',160,'Household Member of',1,NULL,NULL),(113,57,8,'a_b',147,'Household Member of',27,'Household Member is',1,NULL,NULL),(114,57,8,'b_a',27,'Household Member is',147,'Household Member of',1,NULL,NULL),(115,58,8,'a_b',151,'Household Member of',27,'Household Member is',1,NULL,NULL),(116,58,8,'b_a',27,'Household Member is',151,'Household Member of',1,NULL,NULL),(117,59,7,'a_b',191,'Head of Household for',27,'Head of Household is',1,NULL,NULL),(118,59,7,'b_a',27,'Head of Household is',191,'Head of Household for',1,NULL,NULL),(119,60,2,'a_b',160,'Spouse of',191,'Spouse of',1,NULL,NULL),(120,60,2,'b_a',191,'Spouse of',160,'Spouse of',1,NULL,NULL),(121,61,1,'a_b',94,'Child of',82,'Parent of',1,NULL,NULL),(122,61,1,'b_a',82,'Parent of',94,'Child of',1,NULL,NULL),(123,62,1,'a_b',188,'Child of',82,'Parent of',1,NULL,NULL),(124,62,1,'b_a',82,'Parent of',188,'Child of',1,NULL,NULL),(125,63,1,'a_b',94,'Child of',196,'Parent of',1,NULL,NULL),(126,63,1,'b_a',196,'Parent of',94,'Child of',1,NULL,NULL),(127,64,1,'a_b',188,'Child of',196,'Parent of',1,NULL,NULL),(128,64,1,'b_a',196,'Parent of',188,'Child of',1,NULL,NULL),(129,65,4,'a_b',188,'Sibling of',94,'Sibling of',1,NULL,NULL),(130,65,4,'b_a',94,'Sibling of',188,'Sibling of',1,NULL,NULL),(131,66,8,'a_b',196,'Household Member of',116,'Household Member is',1,NULL,NULL),(132,66,8,'b_a',116,'Household Member is',196,'Household Member of',1,NULL,NULL),(133,67,8,'a_b',94,'Household Member of',116,'Household Member is',1,NULL,NULL),(134,67,8,'b_a',116,'Household Member is',94,'Household Member of',1,NULL,NULL),(135,68,8,'a_b',188,'Household Member of',116,'Household Member is',1,NULL,NULL),(136,68,8,'b_a',116,'Household Member is',188,'Household Member of',1,NULL,NULL),(137,69,7,'a_b',82,'Head of Household for',116,'Head of Household is',0,NULL,NULL),(138,69,7,'b_a',116,'Head of Household is',82,'Head of Household for',0,NULL,NULL),(139,70,2,'a_b',196,'Spouse of',82,'Spouse of',0,NULL,NULL),(140,70,2,'b_a',82,'Spouse of',196,'Spouse of',0,NULL,NULL),(141,71,1,'a_b',28,'Child of',195,'Parent of',1,NULL,NULL),(142,71,1,'b_a',195,'Parent of',28,'Child of',1,NULL,NULL),(143,72,1,'a_b',133,'Child of',195,'Parent of',1,NULL,NULL),(144,72,1,'b_a',195,'Parent of',133,'Child of',1,NULL,NULL),(145,73,1,'a_b',28,'Child of',173,'Parent of',1,NULL,NULL),(146,73,1,'b_a',173,'Parent of',28,'Child of',1,NULL,NULL),(147,74,1,'a_b',133,'Child of',173,'Parent of',1,NULL,NULL),(148,74,1,'b_a',173,'Parent of',133,'Child of',1,NULL,NULL),(149,75,4,'a_b',133,'Sibling of',28,'Sibling of',1,NULL,NULL),(150,75,4,'b_a',28,'Sibling of',133,'Sibling of',1,NULL,NULL),(151,76,8,'a_b',173,'Household Member of',106,'Household Member is',1,NULL,NULL),(152,76,8,'b_a',106,'Household Member is',173,'Household Member of',1,NULL,NULL),(153,77,8,'a_b',28,'Household Member of',106,'Household Member is',1,NULL,NULL),(154,77,8,'b_a',106,'Household Member is',28,'Household Member of',1,NULL,NULL),(155,78,8,'a_b',133,'Household Member of',106,'Household Member is',1,NULL,NULL),(156,78,8,'b_a',106,'Household Member is',133,'Household Member of',1,NULL,NULL),(157,79,7,'a_b',195,'Head of Household for',106,'Head of Household is',0,NULL,NULL),(158,79,7,'b_a',106,'Head of Household is',195,'Head of Household for',0,NULL,NULL),(159,80,2,'a_b',173,'Spouse of',195,'Spouse of',0,NULL,NULL),(160,80,2,'b_a',195,'Spouse of',173,'Spouse of',0,NULL,NULL),(161,81,1,'a_b',152,'Child of',141,'Parent of',1,NULL,NULL),(162,81,1,'b_a',141,'Parent of',152,'Child of',1,NULL,NULL),(163,82,1,'a_b',61,'Child of',141,'Parent of',1,NULL,NULL),(164,82,1,'b_a',141,'Parent of',61,'Child of',1,NULL,NULL),(165,83,1,'a_b',152,'Child of',112,'Parent of',1,NULL,NULL),(166,83,1,'b_a',112,'Parent of',152,'Child of',1,NULL,NULL),(167,84,1,'a_b',61,'Child of',112,'Parent of',1,NULL,NULL),(168,84,1,'b_a',112,'Parent of',61,'Child of',1,NULL,NULL),(169,85,4,'a_b',61,'Sibling of',152,'Sibling of',1,NULL,NULL),(170,85,4,'b_a',152,'Sibling of',61,'Sibling of',1,NULL,NULL),(171,86,8,'a_b',112,'Household Member of',22,'Household Member is',1,NULL,NULL),(172,86,8,'b_a',22,'Household Member is',112,'Household Member of',1,NULL,NULL),(173,87,8,'a_b',152,'Household Member of',22,'Household Member is',1,NULL,NULL),(174,87,8,'b_a',22,'Household Member is',152,'Household Member of',1,NULL,NULL),(175,88,8,'a_b',61,'Household Member of',22,'Household Member is',1,NULL,NULL),(176,88,8,'b_a',22,'Household Member is',61,'Household Member of',1,NULL,NULL),(177,89,7,'a_b',141,'Head of Household for',22,'Head of Household is',1,NULL,NULL),(178,89,7,'b_a',22,'Head of Household is',141,'Head of Household for',1,NULL,NULL),(179,90,2,'a_b',112,'Spouse of',141,'Spouse of',1,NULL,NULL),(180,90,2,'b_a',141,'Spouse of',112,'Spouse of',1,NULL,NULL),(181,91,1,'a_b',155,'Child of',108,'Parent of',1,NULL,NULL),(182,91,1,'b_a',108,'Parent of',155,'Child of',1,NULL,NULL),(183,92,1,'a_b',29,'Child of',108,'Parent of',1,NULL,NULL),(184,92,1,'b_a',108,'Parent of',29,'Child of',1,NULL,NULL),(185,93,1,'a_b',155,'Child of',54,'Parent of',1,NULL,NULL),(186,93,1,'b_a',54,'Parent of',155,'Child of',1,NULL,NULL),(187,94,1,'a_b',29,'Child of',54,'Parent of',1,NULL,NULL),(188,94,1,'b_a',54,'Parent of',29,'Child of',1,NULL,NULL),(189,95,4,'a_b',29,'Sibling of',155,'Sibling of',1,NULL,NULL),(190,95,4,'b_a',155,'Sibling of',29,'Sibling of',1,NULL,NULL),(191,96,8,'a_b',54,'Household Member of',115,'Household Member is',1,NULL,NULL),(192,96,8,'b_a',115,'Household Member is',54,'Household Member of',1,NULL,NULL),(193,97,8,'a_b',155,'Household Member of',115,'Household Member is',1,NULL,NULL),(194,97,8,'b_a',115,'Household Member is',155,'Household Member of',1,NULL,NULL),(195,98,8,'a_b',29,'Household Member of',115,'Household Member is',1,NULL,NULL),(196,98,8,'b_a',115,'Household Member is',29,'Household Member of',1,NULL,NULL),(197,99,7,'a_b',108,'Head of Household for',115,'Head of Household is',1,NULL,NULL),(198,99,7,'b_a',115,'Head of Household is',108,'Head of Household for',1,NULL,NULL),(199,100,2,'a_b',54,'Spouse of',108,'Spouse of',1,NULL,NULL),(200,100,2,'b_a',108,'Spouse of',54,'Spouse of',1,NULL,NULL),(201,101,1,'a_b',63,'Child of',103,'Parent of',1,NULL,NULL),(202,101,1,'b_a',103,'Parent of',63,'Child of',1,NULL,NULL),(203,102,1,'a_b',95,'Child of',103,'Parent of',1,NULL,NULL),(204,102,1,'b_a',103,'Parent of',95,'Child of',1,NULL,NULL),(205,103,1,'a_b',63,'Child of',201,'Parent of',1,NULL,NULL),(206,103,1,'b_a',201,'Parent of',63,'Child of',1,NULL,NULL),(207,104,1,'a_b',95,'Child of',201,'Parent of',1,NULL,NULL),(208,104,1,'b_a',201,'Parent of',95,'Child of',1,NULL,NULL),(209,105,4,'a_b',95,'Sibling of',63,'Sibling of',1,NULL,NULL),(210,105,4,'b_a',63,'Sibling of',95,'Sibling of',1,NULL,NULL),(211,106,8,'a_b',201,'Household Member of',35,'Household Member is',1,NULL,NULL),(212,106,8,'b_a',35,'Household Member is',201,'Household Member of',1,NULL,NULL),(213,107,8,'a_b',63,'Household Member of',35,'Household Member is',1,NULL,NULL),(214,107,8,'b_a',35,'Household Member is',63,'Household Member of',1,NULL,NULL),(215,108,8,'a_b',95,'Household Member of',35,'Household Member is',1,NULL,NULL),(216,108,8,'b_a',35,'Household Member is',95,'Household Member of',1,NULL,NULL),(217,109,7,'a_b',103,'Head of Household for',35,'Head of Household is',1,NULL,NULL),(218,109,7,'b_a',35,'Head of Household is',103,'Head of Household for',1,NULL,NULL),(219,110,2,'a_b',201,'Spouse of',103,'Spouse of',1,NULL,NULL),(220,110,2,'b_a',103,'Spouse of',201,'Spouse of',1,NULL,NULL),(221,111,1,'a_b',114,'Child of',107,'Parent of',1,NULL,NULL),(222,111,1,'b_a',107,'Parent of',114,'Child of',1,NULL,NULL),(223,112,1,'a_b',70,'Child of',107,'Parent of',1,NULL,NULL),(224,112,1,'b_a',107,'Parent of',70,'Child of',1,NULL,NULL),(225,113,1,'a_b',114,'Child of',68,'Parent of',1,NULL,NULL),(226,113,1,'b_a',68,'Parent of',114,'Child of',1,NULL,NULL),(227,114,1,'a_b',70,'Child of',68,'Parent of',1,NULL,NULL),(228,114,1,'b_a',68,'Parent of',70,'Child of',1,NULL,NULL),(229,115,4,'a_b',70,'Sibling of',114,'Sibling of',1,NULL,NULL),(230,115,4,'b_a',114,'Sibling of',70,'Sibling of',1,NULL,NULL),(231,116,8,'a_b',68,'Household Member of',177,'Household Member is',1,NULL,NULL),(232,116,8,'b_a',177,'Household Member is',68,'Household Member of',1,NULL,NULL),(233,117,8,'a_b',114,'Household Member of',177,'Household Member is',1,NULL,NULL),(234,117,8,'b_a',177,'Household Member is',114,'Household Member of',1,NULL,NULL),(235,118,8,'a_b',70,'Household Member of',177,'Household Member is',1,NULL,NULL),(236,118,8,'b_a',177,'Household Member is',70,'Household Member of',1,NULL,NULL),(237,119,7,'a_b',107,'Head of Household for',177,'Head of Household is',1,NULL,NULL),(238,119,7,'b_a',177,'Head of Household is',107,'Head of Household for',1,NULL,NULL),(239,120,2,'a_b',68,'Spouse of',107,'Spouse of',1,NULL,NULL),(240,120,2,'b_a',107,'Spouse of',68,'Spouse of',1,NULL,NULL),(241,121,1,'a_b',140,'Child of',10,'Parent of',1,NULL,NULL),(242,121,1,'b_a',10,'Parent of',140,'Child of',1,NULL,NULL),(243,122,1,'a_b',58,'Child of',10,'Parent of',1,NULL,NULL),(244,122,1,'b_a',10,'Parent of',58,'Child of',1,NULL,NULL),(245,123,1,'a_b',140,'Child of',130,'Parent of',1,NULL,NULL),(246,123,1,'b_a',130,'Parent of',140,'Child of',1,NULL,NULL),(247,124,1,'a_b',58,'Child of',130,'Parent of',1,NULL,NULL),(248,124,1,'b_a',130,'Parent of',58,'Child of',1,NULL,NULL),(249,125,4,'a_b',58,'Sibling of',140,'Sibling of',1,NULL,NULL),(250,125,4,'b_a',140,'Sibling of',58,'Sibling of',1,NULL,NULL),(251,126,8,'a_b',130,'Household Member of',150,'Household Member is',1,NULL,NULL),(252,126,8,'b_a',150,'Household Member is',130,'Household Member of',1,NULL,NULL),(253,127,8,'a_b',140,'Household Member of',150,'Household Member is',1,NULL,NULL),(254,127,8,'b_a',150,'Household Member is',140,'Household Member of',1,NULL,NULL),(255,128,8,'a_b',58,'Household Member of',150,'Household Member is',1,NULL,NULL),(256,128,8,'b_a',150,'Household Member is',58,'Household Member of',1,NULL,NULL),(257,129,7,'a_b',10,'Head of Household for',150,'Head of Household is',1,NULL,NULL),(258,129,7,'b_a',150,'Head of Household is',10,'Head of Household for',1,NULL,NULL),(259,130,2,'a_b',130,'Spouse of',10,'Spouse of',1,NULL,NULL),(260,130,2,'b_a',10,'Spouse of',130,'Spouse of',1,NULL,NULL),(261,131,1,'a_b',78,'Child of',187,'Parent of',1,NULL,NULL),(262,131,1,'b_a',187,'Parent of',78,'Child of',1,NULL,NULL),(263,132,1,'a_b',181,'Child of',187,'Parent of',1,NULL,NULL),(264,132,1,'b_a',187,'Parent of',181,'Child of',1,NULL,NULL),(265,133,1,'a_b',78,'Child of',48,'Parent of',1,NULL,NULL),(266,133,1,'b_a',48,'Parent of',78,'Child of',1,NULL,NULL),(267,134,1,'a_b',181,'Child of',48,'Parent of',1,NULL,NULL),(268,134,1,'b_a',48,'Parent of',181,'Child of',1,NULL,NULL),(269,135,4,'a_b',181,'Sibling of',78,'Sibling of',1,NULL,NULL),(270,135,4,'b_a',78,'Sibling of',181,'Sibling of',1,NULL,NULL),(271,136,8,'a_b',48,'Household Member of',72,'Household Member is',1,NULL,NULL),(272,136,8,'b_a',72,'Household Member is',48,'Household Member of',1,NULL,NULL),(273,137,8,'a_b',78,'Household Member of',72,'Household Member is',1,NULL,NULL),(274,137,8,'b_a',72,'Household Member is',78,'Household Member of',1,NULL,NULL),(275,138,8,'a_b',181,'Household Member of',72,'Household Member is',1,NULL,NULL),(276,138,8,'b_a',72,'Household Member is',181,'Household Member of',1,NULL,NULL),(277,139,7,'a_b',187,'Head of Household for',72,'Head of Household is',0,NULL,NULL),(278,139,7,'b_a',72,'Head of Household is',187,'Head of Household for',0,NULL,NULL),(279,140,2,'a_b',48,'Spouse of',187,'Spouse of',0,NULL,NULL),(280,140,2,'b_a',187,'Spouse of',48,'Spouse of',0,NULL,NULL),(281,141,1,'a_b',20,'Child of',135,'Parent of',1,NULL,NULL),(282,141,1,'b_a',135,'Parent of',20,'Child of',1,NULL,NULL),(283,142,1,'a_b',13,'Child of',135,'Parent of',1,NULL,NULL),(284,142,1,'b_a',135,'Parent of',13,'Child of',1,NULL,NULL),(285,143,1,'a_b',20,'Child of',43,'Parent of',1,NULL,NULL),(286,143,1,'b_a',43,'Parent of',20,'Child of',1,NULL,NULL),(287,144,1,'a_b',13,'Child of',43,'Parent of',1,NULL,NULL),(288,144,1,'b_a',43,'Parent of',13,'Child of',1,NULL,NULL),(289,145,4,'a_b',13,'Sibling of',20,'Sibling of',1,NULL,NULL),(290,145,4,'b_a',20,'Sibling of',13,'Sibling of',1,NULL,NULL),(291,146,8,'a_b',43,'Household Member of',21,'Household Member is',1,NULL,NULL),(292,146,8,'b_a',21,'Household Member is',43,'Household Member of',1,NULL,NULL),(293,147,8,'a_b',20,'Household Member of',21,'Household Member is',1,NULL,NULL),(294,147,8,'b_a',21,'Household Member is',20,'Household Member of',1,NULL,NULL),(295,148,8,'a_b',13,'Household Member of',21,'Household Member is',1,NULL,NULL),(296,148,8,'b_a',21,'Household Member is',13,'Household Member of',1,NULL,NULL),(297,149,7,'a_b',135,'Head of Household for',21,'Head of Household is',0,NULL,NULL),(298,149,7,'b_a',21,'Head of Household is',135,'Head of Household for',0,NULL,NULL),(299,150,2,'a_b',43,'Spouse of',135,'Spouse of',0,NULL,NULL),(300,150,2,'b_a',135,'Spouse of',43,'Spouse of',0,NULL,NULL),(301,151,1,'a_b',89,'Child of',194,'Parent of',1,NULL,NULL),(302,151,1,'b_a',194,'Parent of',89,'Child of',1,NULL,NULL),(303,152,1,'a_b',75,'Child of',194,'Parent of',1,NULL,NULL),(304,152,1,'b_a',194,'Parent of',75,'Child of',1,NULL,NULL),(305,153,1,'a_b',89,'Child of',131,'Parent of',1,NULL,NULL),(306,153,1,'b_a',131,'Parent of',89,'Child of',1,NULL,NULL),(307,154,1,'a_b',75,'Child of',131,'Parent of',1,NULL,NULL),(308,154,1,'b_a',131,'Parent of',75,'Child of',1,NULL,NULL),(309,155,4,'a_b',75,'Sibling of',89,'Sibling of',1,NULL,NULL),(310,155,4,'b_a',89,'Sibling of',75,'Sibling of',1,NULL,NULL),(311,156,8,'a_b',131,'Household Member of',19,'Household Member is',1,NULL,NULL),(312,156,8,'b_a',19,'Household Member is',131,'Household Member of',1,NULL,NULL),(313,157,8,'a_b',89,'Household Member of',19,'Household Member is',1,NULL,NULL),(314,157,8,'b_a',19,'Household Member is',89,'Household Member of',1,NULL,NULL),(315,158,8,'a_b',75,'Household Member of',19,'Household Member is',1,NULL,NULL),(316,158,8,'b_a',19,'Household Member is',75,'Household Member of',1,NULL,NULL),(317,159,7,'a_b',194,'Head of Household for',19,'Head of Household is',0,NULL,NULL),(318,159,7,'b_a',19,'Head of Household is',194,'Head of Household for',0,NULL,NULL),(319,160,2,'a_b',131,'Spouse of',194,'Spouse of',0,NULL,NULL),(320,160,2,'b_a',194,'Spouse of',131,'Spouse of',0,NULL,NULL),(321,161,1,'a_b',121,'Child of',104,'Parent of',1,NULL,NULL),(322,161,1,'b_a',104,'Parent of',121,'Child of',1,NULL,NULL),(323,162,1,'a_b',39,'Child of',104,'Parent of',1,NULL,NULL),(324,162,1,'b_a',104,'Parent of',39,'Child of',1,NULL,NULL),(325,163,1,'a_b',121,'Child of',153,'Parent of',1,NULL,NULL),(326,163,1,'b_a',153,'Parent of',121,'Child of',1,NULL,NULL),(327,164,1,'a_b',39,'Child of',153,'Parent of',1,NULL,NULL),(328,164,1,'b_a',153,'Parent of',39,'Child of',1,NULL,NULL),(329,165,4,'a_b',39,'Sibling of',121,'Sibling of',1,NULL,NULL),(330,165,4,'b_a',121,'Sibling of',39,'Sibling of',1,NULL,NULL),(331,166,8,'a_b',153,'Household Member of',168,'Household Member is',1,NULL,NULL),(332,166,8,'b_a',168,'Household Member is',153,'Household Member of',1,NULL,NULL),(333,167,8,'a_b',121,'Household Member of',168,'Household Member is',1,NULL,NULL),(334,167,8,'b_a',168,'Household Member is',121,'Household Member of',1,NULL,NULL),(335,168,8,'a_b',39,'Household Member of',168,'Household Member is',1,NULL,NULL),(336,168,8,'b_a',168,'Household Member is',39,'Household Member of',1,NULL,NULL),(337,169,7,'a_b',104,'Head of Household for',168,'Head of Household is',1,NULL,NULL),(338,169,7,'b_a',168,'Head of Household is',104,'Head of Household for',1,NULL,NULL),(339,170,2,'a_b',153,'Spouse of',104,'Spouse of',1,NULL,NULL),(340,170,2,'b_a',104,'Spouse of',153,'Spouse of',1,NULL,NULL),(341,171,1,'a_b',36,'Child of',42,'Parent of',1,NULL,NULL),(342,171,1,'b_a',42,'Parent of',36,'Child of',1,NULL,NULL),(343,172,1,'a_b',26,'Child of',42,'Parent of',1,NULL,NULL),(344,172,1,'b_a',42,'Parent of',26,'Child of',1,NULL,NULL),(345,173,1,'a_b',36,'Child of',189,'Parent of',1,NULL,NULL),(346,173,1,'b_a',189,'Parent of',36,'Child of',1,NULL,NULL),(347,174,1,'a_b',26,'Child of',189,'Parent of',1,NULL,NULL),(348,174,1,'b_a',189,'Parent of',26,'Child of',1,NULL,NULL),(349,175,4,'a_b',26,'Sibling of',36,'Sibling of',1,NULL,NULL),(350,175,4,'b_a',36,'Sibling of',26,'Sibling of',1,NULL,NULL),(351,176,8,'a_b',189,'Household Member of',101,'Household Member is',1,NULL,NULL),(352,176,8,'b_a',101,'Household Member is',189,'Household Member of',1,NULL,NULL),(353,177,8,'a_b',36,'Household Member of',101,'Household Member is',1,NULL,NULL),(354,177,8,'b_a',101,'Household Member is',36,'Household Member of',1,NULL,NULL),(355,178,8,'a_b',26,'Household Member of',101,'Household Member is',1,NULL,NULL),(356,178,8,'b_a',101,'Household Member is',26,'Household Member of',1,NULL,NULL),(357,179,7,'a_b',42,'Head of Household for',101,'Head of Household is',1,NULL,NULL),(358,179,7,'b_a',101,'Head of Household is',42,'Head of Household for',1,NULL,NULL),(359,180,2,'a_b',189,'Spouse of',42,'Spouse of',1,NULL,NULL),(360,180,2,'b_a',42,'Spouse of',189,'Spouse of',1,NULL,NULL),(361,181,1,'a_b',69,'Child of',171,'Parent of',1,NULL,NULL),(362,181,1,'b_a',171,'Parent of',69,'Child of',1,NULL,NULL),(363,182,1,'a_b',109,'Child of',171,'Parent of',1,NULL,NULL),(364,182,1,'b_a',171,'Parent of',109,'Child of',1,NULL,NULL),(365,183,1,'a_b',69,'Child of',200,'Parent of',1,NULL,NULL),(366,183,1,'b_a',200,'Parent of',69,'Child of',1,NULL,NULL),(367,184,1,'a_b',109,'Child of',200,'Parent of',1,NULL,NULL),(368,184,1,'b_a',200,'Parent of',109,'Child of',1,NULL,NULL),(369,185,4,'a_b',109,'Sibling of',69,'Sibling of',1,NULL,NULL),(370,185,4,'b_a',69,'Sibling of',109,'Sibling of',1,NULL,NULL),(371,186,8,'a_b',200,'Household Member of',98,'Household Member is',1,NULL,NULL),(372,186,8,'b_a',98,'Household Member is',200,'Household Member of',1,NULL,NULL),(373,187,8,'a_b',69,'Household Member of',98,'Household Member is',1,NULL,NULL),(374,187,8,'b_a',98,'Household Member is',69,'Household Member of',1,NULL,NULL),(375,188,8,'a_b',109,'Household Member of',98,'Household Member is',1,NULL,NULL),(376,188,8,'b_a',98,'Household Member is',109,'Household Member of',1,NULL,NULL),(377,189,7,'a_b',171,'Head of Household for',98,'Head of Household is',1,NULL,NULL),(378,189,7,'b_a',98,'Head of Household is',171,'Head of Household for',1,NULL,NULL),(379,190,2,'a_b',200,'Spouse of',171,'Spouse of',1,NULL,NULL),(380,190,2,'b_a',171,'Spouse of',200,'Spouse of',1,NULL,NULL),(381,191,1,'a_b',158,'Child of',25,'Parent of',1,NULL,NULL),(382,191,1,'b_a',25,'Parent of',158,'Child of',1,NULL,NULL),(383,192,1,'a_b',4,'Child of',25,'Parent of',1,NULL,NULL),(384,192,1,'b_a',25,'Parent of',4,'Child of',1,NULL,NULL),(385,193,1,'a_b',158,'Child of',180,'Parent of',1,NULL,NULL),(386,193,1,'b_a',180,'Parent of',158,'Child of',1,NULL,NULL),(387,194,1,'a_b',4,'Child of',180,'Parent of',1,NULL,NULL),(388,194,1,'b_a',180,'Parent of',4,'Child of',1,NULL,NULL),(389,195,4,'a_b',4,'Sibling of',158,'Sibling of',1,NULL,NULL),(390,195,4,'b_a',158,'Sibling of',4,'Sibling of',1,NULL,NULL),(391,196,8,'a_b',180,'Household Member of',163,'Household Member is',1,NULL,NULL),(392,196,8,'b_a',163,'Household Member is',180,'Household Member of',1,NULL,NULL),(393,197,8,'a_b',158,'Household Member of',163,'Household Member is',1,NULL,NULL),(394,197,8,'b_a',163,'Household Member is',158,'Household Member of',1,NULL,NULL),(395,198,8,'a_b',4,'Household Member of',163,'Household Member is',1,NULL,NULL),(396,198,8,'b_a',163,'Household Member is',4,'Household Member of',1,NULL,NULL),(397,199,7,'a_b',25,'Head of Household for',163,'Head of Household is',0,NULL,NULL),(398,199,7,'b_a',163,'Head of Household is',25,'Head of Household for',0,NULL,NULL),(399,200,2,'a_b',180,'Spouse of',25,'Spouse of',0,NULL,NULL),(400,200,2,'b_a',25,'Spouse of',180,'Spouse of',0,NULL,NULL),(401,201,5,'a_b',26,'Employee of',14,'Employer of',1,NULL,NULL),(402,201,5,'b_a',14,'Employer of',26,'Employee of',1,NULL,NULL),(403,202,5,'a_b',36,'Employee of',37,'Employer of',1,NULL,NULL),(404,202,5,'b_a',37,'Employer of',36,'Employee of',1,NULL,NULL),(405,203,5,'a_b',20,'Employee of',46,'Employer of',1,NULL,NULL),(406,203,5,'b_a',46,'Employer of',20,'Employee of',1,NULL,NULL),(407,204,5,'a_b',89,'Employee of',50,'Employer of',1,NULL,NULL),(408,204,5,'b_a',50,'Employer of',89,'Employee of',1,NULL,NULL),(409,205,5,'a_b',189,'Employee of',56,'Employer of',1,NULL,NULL),(410,205,5,'b_a',56,'Employer of',189,'Employee of',1,NULL,NULL),(411,206,5,'a_b',29,'Employee of',62,'Employer of',1,NULL,NULL),(412,206,5,'b_a',62,'Employer of',29,'Employee of',1,NULL,NULL),(413,207,5,'a_b',75,'Employee of',73,'Employer of',1,NULL,NULL),(414,207,5,'b_a',73,'Employer of',75,'Employee of',1,NULL,NULL),(415,208,5,'a_b',197,'Employee of',86,'Employer of',1,NULL,NULL),(416,208,5,'b_a',86,'Employer of',197,'Employee of',1,NULL,NULL),(417,209,5,'a_b',120,'Employee of',91,'Employer of',1,NULL,NULL),(418,209,5,'b_a',91,'Employer of',120,'Employee of',1,NULL,NULL),(419,210,5,'a_b',151,'Employee of',105,'Employer of',1,NULL,NULL),(420,210,5,'b_a',105,'Employer of',151,'Employee of',1,NULL,NULL),(421,211,5,'a_b',85,'Employee of',117,'Employer of',1,NULL,NULL),(422,211,5,'b_a',117,'Employer of',85,'Employee of',1,NULL,NULL),(423,212,5,'a_b',34,'Employee of',137,'Employer of',1,NULL,NULL),(424,212,5,'b_a',137,'Employer of',34,'Employee of',1,NULL,NULL),(425,213,5,'a_b',170,'Employee of',142,'Employer of',1,NULL,NULL),(426,213,5,'b_a',142,'Employer of',170,'Employee of',1,NULL,NULL),(427,214,5,'a_b',18,'Employee of',144,'Employer of',1,NULL,NULL),(428,214,5,'b_a',144,'Employer of',18,'Employee of',1,NULL,NULL),(429,215,5,'a_b',104,'Employee of',148,'Employer of',1,NULL,NULL),(430,215,5,'b_a',148,'Employer of',104,'Employee of',1,NULL,NULL),(431,216,5,'a_b',57,'Employee of',157,'Employer of',1,NULL,NULL),(432,216,5,'b_a',157,'Employer of',57,'Employee of',1,NULL,NULL),(433,217,5,'a_b',185,'Employee of',174,'Employer of',1,NULL,NULL),(434,217,5,'b_a',174,'Employer of',185,'Employee of',1,NULL,NULL),(435,218,5,'a_b',186,'Employee of',178,'Employer of',1,NULL,NULL),(436,218,5,'b_a',178,'Employer of',186,'Employee of',1,NULL,NULL); +/*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Dumping data for table `civicrm_relationship_type` -- @@ -1337,7 +1347,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_subscription_history` WRITE; /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */; -INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,50,2,'2020-05-13 14:53:48','Email','Added',NULL),(2,43,2,'2020-04-25 08:07:17','Admin','Added',NULL),(3,71,2,'2019-12-05 08:41:06','Email','Added',NULL),(4,177,2,'2020-01-24 06:40:14','Admin','Added',NULL),(5,110,2,'2020-04-02 11:48:17','Email','Added',NULL),(6,97,2,'2019-09-18 14:11:28','Admin','Added',NULL),(7,56,2,'2019-11-07 19:22:32','Admin','Added',NULL),(8,75,2,'2020-05-19 07:43:11','Admin','Added',NULL),(9,91,2,'2020-01-12 20:41:30','Admin','Added',NULL),(10,172,2,'2020-01-26 23:36:11','Email','Added',NULL),(11,37,2,'2019-09-26 19:43:21','Email','Added',NULL),(12,175,2,'2019-12-18 01:13:06','Email','Added',NULL),(13,15,2,'2019-12-12 12:08:24','Email','Added',NULL),(14,106,2,'2019-08-13 15:31:19','Email','Added',NULL),(15,115,2,'2019-10-25 19:36:36','Admin','Added',NULL),(16,147,2,'2019-10-06 03:04:07','Admin','Added',NULL),(17,198,2,'2019-09-02 22:34:44','Email','Added',NULL),(18,53,2,'2019-11-26 21:03:47','Email','Added',NULL),(19,99,2,'2019-09-10 22:14:27','Admin','Added',NULL),(20,146,2,'2020-02-21 01:19:57','Email','Added',NULL),(21,22,2,'2019-10-08 10:33:26','Admin','Added',NULL),(22,18,2,'2020-01-23 21:30:25','Email','Added',NULL),(23,108,2,'2020-03-26 08:34:08','Email','Added',NULL),(24,27,2,'2019-07-24 20:48:50','Admin','Added',NULL),(25,26,2,'2019-10-10 04:18:02','Email','Added',NULL),(26,92,2,'2019-09-14 04:18:10','Email','Added',NULL),(27,44,2,'2019-10-07 17:54:01','Admin','Added',NULL),(28,121,2,'2019-06-17 15:50:50','Admin','Added',NULL),(29,47,2,'2020-06-03 16:46:48','Admin','Added',NULL),(30,138,2,'2019-08-20 09:45:06','Email','Added',NULL),(31,34,2,'2019-10-13 23:53:58','Email','Added',NULL),(32,85,2,'2020-05-30 16:55:27','Admin','Added',NULL),(33,66,2,'2019-06-15 19:00:37','Admin','Added',NULL),(34,157,2,'2020-04-23 19:15:35','Admin','Added',NULL),(35,119,2,'2019-07-24 01:32:41','Admin','Added',NULL),(36,10,2,'2020-05-18 05:33:25','Email','Added',NULL),(37,159,2,'2020-01-20 22:08:22','Admin','Added',NULL),(38,194,2,'2019-08-23 13:13:22','Email','Added',NULL),(39,142,2,'2020-04-08 21:37:01','Email','Added',NULL),(40,61,2,'2020-03-10 17:34:44','Email','Added',NULL),(41,164,2,'2019-11-24 19:32:02','Email','Added',NULL),(42,134,2,'2019-07-06 20:16:56','Email','Added',NULL),(43,41,2,'2019-12-12 16:46:00','Admin','Added',NULL),(44,116,2,'2019-08-23 02:06:59','Admin','Added',NULL),(45,188,2,'2019-06-26 20:49:22','Email','Added',NULL),(46,120,2,'2020-04-19 10:11:06','Admin','Added',NULL),(47,16,2,'2020-05-14 05:05:59','Email','Added',NULL),(48,29,2,'2020-05-27 19:44:18','Email','Added',NULL),(49,128,2,'2020-03-18 13:14:49','Email','Added',NULL),(50,118,2,'2020-01-20 16:50:23','Email','Added',NULL),(51,103,2,'2020-01-29 13:06:47','Admin','Added',NULL),(52,143,2,'2019-08-06 06:47:09','Admin','Added',NULL),(53,149,2,'2019-10-15 16:39:59','Admin','Added',NULL),(54,136,2,'2020-03-11 04:03:13','Email','Added',NULL),(55,24,2,'2019-07-10 08:02:57','Email','Added',NULL),(56,36,2,'2019-08-22 00:56:45','Admin','Added',NULL),(57,7,2,'2020-02-24 20:30:37','Email','Added',NULL),(58,167,2,'2020-01-23 23:25:37','Admin','Added',NULL),(59,28,2,'2019-08-14 03:07:08','Email','Added',NULL),(60,145,2,'2020-02-04 15:15:13','Email','Added',NULL),(61,158,3,'2019-08-28 18:49:52','Admin','Added',NULL),(62,20,3,'2019-12-21 01:23:38','Email','Added',NULL),(63,199,3,'2020-04-24 14:05:33','Admin','Added',NULL),(64,112,3,'2019-12-31 06:31:48','Admin','Added',NULL),(65,93,3,'2019-09-05 23:32:40','Admin','Added',NULL),(66,69,3,'2019-07-23 03:20:42','Email','Added',NULL),(67,21,3,'2020-05-23 11:13:45','Admin','Added',NULL),(68,137,3,'2019-07-07 18:28:15','Admin','Added',NULL),(69,152,3,'2019-10-25 17:27:58','Admin','Added',NULL),(70,12,3,'2019-10-30 05:31:45','Email','Added',NULL),(71,129,3,'2019-10-16 21:40:00','Admin','Added',NULL),(72,81,3,'2020-03-21 22:25:15','Admin','Added',NULL),(73,185,3,'2019-08-26 12:30:47','Admin','Added',NULL),(74,30,3,'2019-06-14 16:15:18','Email','Added',NULL),(75,62,3,'2019-10-14 11:20:27','Admin','Added',NULL),(76,50,4,'2020-02-19 14:53:47','Email','Added',NULL),(77,75,4,'2019-09-22 19:15:11','Admin','Added',NULL),(78,115,4,'2019-11-10 22:22:54','Email','Added',NULL),(79,18,4,'2019-09-10 04:03:22','Admin','Added',NULL),(80,47,4,'2019-09-15 10:32:19','Email','Added',NULL),(81,10,4,'2019-09-14 09:37:32','Email','Added',NULL),(82,41,4,'2020-05-09 02:24:04','Email','Added',NULL),(83,118,4,'2019-12-18 12:17:55','Admin','Added',NULL); +INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,169,2,'2019-11-20 21:26:21','Admin','Added',NULL),(2,24,2,'2019-12-23 11:52:30','Email','Added',NULL),(3,124,2,'2019-11-18 09:34:53','Email','Added',NULL),(4,57,2,'2019-09-21 08:05:46','Admin','Added',NULL),(5,17,2,'2019-11-27 11:47:55','Email','Added',NULL),(6,182,2,'2020-03-12 13:17:00','Email','Added',NULL),(7,99,2,'2019-08-04 20:42:42','Email','Added',NULL),(8,138,2,'2020-07-14 02:26:21','Email','Added',NULL),(9,81,2,'2020-02-17 20:51:29','Email','Added',NULL),(10,53,2,'2019-12-12 16:46:40','Email','Added',NULL),(11,15,2,'2020-06-08 11:55:39','Email','Added',NULL),(12,33,2,'2019-12-02 00:17:20','Email','Added',NULL),(13,179,2,'2019-09-18 20:51:54','Admin','Added',NULL),(14,83,2,'2020-02-21 16:59:13','Email','Added',NULL),(15,164,2,'2019-09-04 18:42:28','Email','Added',NULL),(16,146,2,'2019-08-16 17:31:30','Admin','Added',NULL),(17,120,2,'2019-10-25 00:35:51','Admin','Added',NULL),(18,193,2,'2020-05-08 16:05:56','Email','Added',NULL),(19,76,2,'2019-08-18 21:58:45','Email','Added',NULL),(20,162,2,'2019-08-25 15:21:21','Email','Added',NULL),(21,66,2,'2019-08-21 12:54:54','Admin','Added',NULL),(22,92,2,'2019-08-30 06:33:41','Admin','Added',NULL),(23,167,2,'2020-03-26 10:25:26','Email','Added',NULL),(24,65,2,'2020-04-21 20:54:05','Admin','Added',NULL),(25,190,2,'2019-09-11 17:19:20','Email','Added',NULL),(26,184,2,'2019-12-21 22:09:38','Email','Added',NULL),(27,67,2,'2019-08-13 13:10:41','Email','Added',NULL),(28,185,2,'2020-05-16 21:14:47','Admin','Added',NULL),(29,183,2,'2020-06-23 07:14:06','Email','Added',NULL),(30,175,2,'2019-12-09 11:30:16','Admin','Added',NULL),(31,129,2,'2020-03-06 02:22:27','Email','Added',NULL),(32,197,2,'2019-08-28 11:28:01','Email','Added',NULL),(33,122,2,'2019-09-12 07:55:23','Email','Added',NULL),(34,7,2,'2019-11-13 02:54:04','Admin','Added',NULL),(35,154,2,'2019-08-30 21:35:11','Email','Added',NULL),(36,51,2,'2020-03-13 22:09:33','Email','Added',NULL),(37,97,2,'2020-01-04 06:55:30','Email','Added',NULL),(38,111,2,'2020-04-21 03:12:40','Admin','Added',NULL),(39,143,2,'2019-11-15 07:26:31','Email','Added',NULL),(40,77,2,'2020-04-10 22:45:14','Email','Added',NULL),(41,186,2,'2020-05-11 19:35:51','Admin','Added',NULL),(42,12,2,'2020-02-20 08:29:05','Admin','Added',NULL),(43,8,2,'2020-01-17 21:34:08','Admin','Added',NULL),(44,84,2,'2020-05-11 14:40:31','Email','Added',NULL),(45,71,2,'2019-12-18 13:22:22','Admin','Added',NULL),(46,3,2,'2020-06-23 16:06:41','Email','Added',NULL),(47,123,2,'2020-04-15 15:26:58','Admin','Added',NULL),(48,119,2,'2020-02-11 11:16:39','Admin','Added',NULL),(49,161,2,'2019-09-14 18:37:42','Admin','Added',NULL),(50,145,2,'2020-05-23 07:34:56','Email','Added',NULL),(51,60,2,'2019-08-22 10:28:33','Email','Added',NULL),(52,31,2,'2019-11-13 10:56:38','Email','Added',NULL),(53,55,2,'2020-02-13 23:43:08','Admin','Added',NULL),(54,88,2,'2019-12-24 11:11:02','Email','Added',NULL),(55,64,2,'2020-02-03 07:32:36','Admin','Added',NULL),(56,41,2,'2019-08-08 18:06:57','Email','Added',NULL),(57,30,2,'2020-04-26 23:17:36','Email','Added',NULL),(58,2,2,'2020-01-16 00:51:51','Email','Added',NULL),(59,156,2,'2019-11-24 19:05:36','Email','Added',NULL),(60,118,2,'2020-05-08 22:41:55','Admin','Added',NULL),(61,87,3,'2020-02-12 19:47:53','Email','Added',NULL),(62,49,3,'2019-11-24 14:21:59','Email','Added',NULL),(63,23,3,'2020-03-20 02:01:17','Email','Added',NULL),(64,5,3,'2020-02-12 06:13:02','Email','Added',NULL),(65,93,3,'2020-03-26 23:29:51','Admin','Added',NULL),(66,18,3,'2019-09-26 12:23:17','Email','Added',NULL),(67,6,3,'2019-09-19 13:40:19','Admin','Added',NULL),(68,199,3,'2020-04-23 00:44:59','Email','Added',NULL),(69,176,3,'2020-02-29 17:05:30','Email','Added',NULL),(70,132,3,'2020-02-17 15:44:05','Admin','Added',NULL),(71,80,3,'2020-03-01 11:59:37','Email','Added',NULL),(72,45,3,'2020-01-23 09:13:35','Admin','Added',NULL),(73,44,3,'2019-08-22 22:38:26','Admin','Added',NULL),(74,96,3,'2020-07-20 11:43:21','Email','Added',NULL),(75,166,3,'2019-10-22 19:46:03','Email','Added',NULL),(76,169,4,'2020-04-20 15:35:07','Email','Added',NULL),(77,138,4,'2019-09-14 05:27:21','Admin','Added',NULL),(78,164,4,'2019-12-21 08:53:52','Email','Added',NULL),(79,92,4,'2019-11-08 12:12:13','Email','Added',NULL),(80,183,4,'2020-02-20 08:24:27','Email','Added',NULL),(81,51,4,'2020-05-18 10:54:03','Admin','Added',NULL),(82,8,4,'2019-08-23 17:30:49','Admin','Added',NULL),(83,145,4,'2020-06-15 07:19:20','Email','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -1433,7 +1443,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_website` WRITE; /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */; -INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,74,'http://urbanpeacefund.org',1),(2,111,'http://sierrapeaceinitiative.org',1),(3,23,'http://creativeeducation.org',1),(4,65,'http://indiahomahealthcollective.org',1),(5,82,'http://pineassociation.org',1),(6,123,'http://mlkingeducation.org',1),(7,55,'http://mainarts.org',1),(8,144,'http://urbaninitiative.org',1),(9,63,'http://nyhealthsystems.org',1),(10,178,'http://wisconsinwellness.org',1),(11,101,'http://spactionservices.org',1),(12,135,'http://austinhealth.org',1),(13,39,'http://farmingtonservices.org',1),(14,60,'http://paluxyenvironmental.org',1),(15,182,'http://statespartnership.org',1),(16,105,'http://unitedtechnology.org',1); +INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,174,'http://northpointdevelopmentschool.org',1),(2,105,'http://urbanculture.org',1),(3,144,'http://globalempowerment.org',1),(4,148,'http://dallaspartnership.org',1),(5,90,'http://rebeccafellowship.org',1),(6,86,'http://beechdevelopmenttrust.org',1),(7,56,'http://kentuckyinitiative.org',1),(8,137,'http://aptossustainability.org',1),(9,14,'http://bltechnologyfund.org',1),(10,178,'http://sierrasoftwaresolutions.org',1),(11,117,'http://maincollective.org',1),(12,157,'http://moxahaladevelopmentalliance.org',1),(13,91,'http://greenpoetry.org',1),(14,79,'http://ogdensburgpoetry.org',1),(15,37,'http://urbanactionschool.org',1),(16,46,'http://greeninitiative.org',1),(17,50,'http://collegehealthassociation.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -1465,7 +1475,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2020-06-10 14:45:54 +-- Dump completed on 2020-07-24 15:34:05 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | @@ -1559,8 +1569,8 @@ INSERT INTO `civicrm_option_value` (`option_group_id`, `label`, `value`, `name`, DROP TABLE IF EXISTS `civicrm_value_donor_information_3`; CREATE TABLE IF NOT EXISTS `civicrm_value_donor_information_3` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Default MySQL primary key', `entity_id` int(10) unsigned NOT NULL COMMENT 'Table that this extends', `known_areas_of_interest_5` text COLLATE utf8_unicode_ci, `how_long_have_you_been_a_donor_6` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_entity_id` (`entity_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); SELECT @dp := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 0; SELECT @dpTest := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 1; diff --git a/civicrm/templates/CRM/ACL/Form/ACL.tpl b/civicrm/templates/CRM/ACL/Form/ACL.tpl index fbecd9fce887313c0e3e9a2e1ad50ac66b0c044b..5c8bf2cc6dcd679662b4f4c7540c8b0295e1d7d5 100644 --- a/civicrm/templates/CRM/ACL/Form/ACL.tpl +++ b/civicrm/templates/CRM/ACL/Form/ACL.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-acl-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Delete will remove this permission from the specified ACL Role.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl b/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl index f905c4d5835e7c937f839306668f33b9b908d6c0..764ebe85bdfc2908d1829366c2b16e7be3d29fc2 100644 --- a/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl +++ b/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl @@ -14,7 +14,7 @@ {if $action eq 8} <div class="messages status no-popup"> <dl> - <dt><div class="icon inform-icon"></div></dt> + <dt>{icon icon="fa-info-circle"}{/icon}</dt> <dd> {ts}WARNING: Delete will remove this permission from the specified ACL Role.{/ts} {ts}Do you want to continue?{/ts} </dd> diff --git a/civicrm/templates/CRM/ACL/Form/EntityRole.tpl b/civicrm/templates/CRM/ACL/Form/EntityRole.tpl index 75bf26e6a2d2f1047c540239b450d75b8301081f..a2a8799c982baddf239a2be986f3dbffcb0e11c5 100644 --- a/civicrm/templates/CRM/ACL/Form/EntityRole.tpl +++ b/civicrm/templates/CRM/ACL/Form/EntityRole.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will remove this ACL Role Assignment.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl index 19eaaefeb2d5b9bf9e190a92a343390806bf201a..1a4c04c1730a223a5612e5454f4fa7f2fc4315e9 100644 --- a/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Activity/Form/Selector.tpl b/civicrm/templates/CRM/Activity/Form/Selector.tpl index cbd8d1c3a37ef1fcd0888a17fcd9a96252519c02..ab1e4f6e10c917753d235fae9399f143012deb22 100644 --- a/civicrm/templates/CRM/Activity/Form/Selector.tpl +++ b/civicrm/templates/CRM/Activity/Form/Selector.tpl @@ -14,8 +14,8 @@ {strip} <table class="selector row-highlight"> - <thead> - <tr class="sticky"> + <thead class="sticky"> + <tr> {if !$single and $context eq 'Search' } <th scope="col" title="Select Rows">{$form.toggleSelect.html}</th> {/if} diff --git a/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl b/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl index fa8c71b91547227fbbd7718f0b0c680eaefb60c9..d467db4b42a7da700b889196471407e494809d71 100644 --- a/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-activity_delete-form-block"> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to delete the selected Activities?{/ts}</p> <p>{include file="CRM/Activity/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Activity/Form/Task/Print.tpl b/civicrm/templates/CRM/Activity/Form/Task/Print.tpl index 7fd288217c7d480ad1e43e417b5df9c84ef8bfd3..d71d4408c463355897145535e0c61b6abb628bf6 100644 --- a/civicrm/templates/CRM/Activity/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Activity/Form/Task/Print.tpl @@ -67,7 +67,7 @@ {include file="CRM/common/formButtons.tpl" location="bottom"} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl index 8456ac24b4c72644b01d4188c615922e5ee38de0..4f1d28038a95885f65f5344840af35857e82d448 100644 --- a/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl @@ -37,7 +37,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl b/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl index 8fb1f85f2b9370cd38d23467500c66cc48c2c7b1..14318c6eb741d6f4fac2a1da973d669e6af2735c 100644 --- a/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl @@ -47,7 +47,7 @@ q="action=view&reset=1&id=`$row.activity_id`&cid=`$row.contact_id`&context=dashb {/strip} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no scheduled activities assigned to you.{/ts} </div> diff --git a/civicrm/templates/CRM/Admin/Form/ContactType.tpl b/civicrm/templates/CRM/Admin/Form/ContactType.tpl index ed5b54c53c595dfb6409bf18273715b3efea269e..90c1962d33c9aa4c0497d39604013d17e1283ee3 100644 --- a/civicrm/templates/CRM/Admin/Form/ContactType.tpl +++ b/civicrm/templates/CRM/Admin/Form/ContactType.tpl @@ -12,7 +12,7 @@ <div class="crm-block crm-form-block crm-contact-type-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts}{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/Extensions.tpl b/civicrm/templates/CRM/Admin/Form/Extensions.tpl index bf114f4f699dbbeda7466a3016054b1c1d5ca0dc..6b9345faa6e08a64f4ecaa8d50b4af893e498e1d 100644 --- a/civicrm/templates/CRM/Admin/Form/Extensions.tpl +++ b/civicrm/templates/CRM/Admin/Form/Extensions.tpl @@ -12,20 +12,20 @@ <div class="crm-block crm-form-block crm-admin-optionvalue-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> - {ts}WARNING: Uninstalling this extension might result in the loss of all records which use the extension.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone. Please review the extension information below before you make final decision.{/ts} {ts}Do you want to continue?{/ts} + {icon icon="fa-info-circle"}{/icon} + {ts}WARNING: Uninstalling this extension might result in the loss of all records which use the extension.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone. Please review the extension information below before you make final decision.{/ts} {ts}Do you want to continue?{/ts} </div> {/if} {if $action eq 1} - <div class="messages status no-popup"> - <div class="icon inform-icon"></div> - {ts}Installing this extension will provide you with new functionality. Please make sure that the extension you're installing comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} + <div class="messages status no-popup"> + {icon icon="fa-info-circle"}{/icon} + {ts}Installing this extension will provide you with new functionality. Please make sure that the extension you're installing comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} </div> {/if} {if $action eq 2} - <div class="messages status no-popup"> - <div class="icon inform-icon"></div> - {ts}Downloading this extension will provide you with new functionality. Please make sure that the extension you're installing or upgrading comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} + <div class="messages status no-popup"> + {icon icon="fa-info-circle"}{/icon} + {ts}Downloading this extension will provide you with new functionality. Please make sure that the extension you're installing or upgrading comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} </div> {/if} {if $action eq 8 or $action eq 1 or $action eq 2} diff --git a/civicrm/templates/CRM/Admin/Form/Job.tpl b/civicrm/templates/CRM/Admin/Form/Job.tpl index 0fb95d4655da5cd1081b3a9733f16f1fcde2ec15..a4b78dda1d5fb5995d09160cceadfe745f0abc67 100644 --- a/civicrm/templates/CRM/Admin/Form/Job.tpl +++ b/civicrm/templates/CRM/Admin/Form/Job.tpl @@ -14,12 +14,12 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this Scheduled Job will cause some important site functionality to stop working.{/ts} {ts}Do you want to continue?{/ts} </div> {elseif $action eq 4} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$jobName}Are you sure you would like to execute %1 job?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl b/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl index c370eabac61061901a980c65dfaf7f4eeb290791..d5bcc2a96b98548ecad14ee5f98e47205d3cf984 100644 --- a/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl +++ b/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl @@ -28,12 +28,12 @@ <div class="crm-block crm-form-block crm-labelFormat-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$formatName}WARNING: You are about to delete the Label Format titled <strong>%1</strong>.{/ts} {ts}Do you want to continue?{/ts} </div> {elseif $action eq 16384} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$formatName}Are you sure you would like to make a copy of the Label Format titled <strong>%1</strong>?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/LocationType.tpl b/civicrm/templates/CRM/Admin/Form/LocationType.tpl index 9e11f776654b294c573568ed96f8d587cae3e585..26895130804f0129a6b5fb05e34ce1b328cc37d3 100644 --- a/civicrm/templates/CRM/Admin/Form/LocationType.tpl +++ b/civicrm/templates/CRM/Admin/Form/LocationType.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all location type records which use the option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/MailSettings.tpl b/civicrm/templates/CRM/Admin/Form/MailSettings.tpl index ee8987a22bafcc320e9846e06b026a86c2b6c956..361ffe09e187932ba91ed2b4adee24be4970f7a0 100644 --- a/civicrm/templates/CRM/Admin/Form/MailSettings.tpl +++ b/civicrm/templates/CRM/Admin/Form/MailSettings.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of mail settings data.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> diff --git a/civicrm/templates/CRM/Admin/Form/Mapping.tpl b/civicrm/templates/CRM/Admin/Form/Mapping.tpl index af99fa96a286833095c77cd94921381e4f6ba660..b943bfd881d81b5f8ca4ad8323906b4ca97003f3 100644 --- a/civicrm/templates/CRM/Admin/Form/Mapping.tpl +++ b/civicrm/templates/CRM/Admin/Form/Mapping.tpl @@ -27,7 +27,7 @@ </table> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$mappingName}WARNING: Are you sure you want to delete mapping '<b>%1</b>'?{/ts} {ts}This action cannot be undone.{/ts} </div> <br /> diff --git a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl index 28430b69e21c87b8445798cfd35dea1f2bcde8c6..537e567516e9712620e7fb1d0b43a12d2d79e72e 100644 --- a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl +++ b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl @@ -22,7 +22,7 @@ <div class="form-item" id="message_templates"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$msg_title|escape}Do you want to delete the message template '%1'?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl b/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl index 60715a5e959061d758d8bded0fa4c6826c6d943f..13f6ddee5bef07efc42a76ed8a8210bc6ce9c29b 100644 --- a/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl +++ b/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option gruop will result in the loss of all records which use the option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/Options.tpl b/civicrm/templates/CRM/Admin/Form/Options.tpl index 2a566c9b653ada3c07fbfc7953d4d1af84b3e8e0..fa435bd63eaaf71844717e17d47193b9ac99754a 100644 --- a/civicrm/templates/CRM/Admin/Form/Options.tpl +++ b/civicrm/templates/CRM/Admin/Form/Options.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$gLabel}WARNING: Deleting this option will result in the loss of all %1 related records which use the option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl b/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl index a6c81f9b0d0b4dfbbcd40c0d5fbb5653ec93de91..6b159db7b2eddd562a9b8997bedb7080512ec326 100644 --- a/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl +++ b/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl @@ -15,7 +15,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this Participant Status will remove all of its settings.{/ts} {ts}Do you want to continue?{/ts} </div> <div>{include file="CRM/common/formButtons.tpl"} diff --git a/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl b/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl index 016fd7d846cf910121c819d0623cfa4e523e686a..67464d00e998a9b788325f1e042c2689ca1813c1 100644 --- a/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl +++ b/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl @@ -14,7 +14,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage|escape} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl b/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl index ccb4a69705501f947ec4b3d23048885060dc9105..3807b2e9b21a1b404504ca1d1e02d015049aa446 100644 --- a/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl +++ b/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl b/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl index 623c0252549c56621ec24049aa18da099bd1afe4..7b6386d5d1756c0f34967c5a97a0bb3ecf4d4571 100644 --- a/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl +++ b/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl @@ -30,7 +30,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$formatName}WARNING: You are about to delete the PDF Page Format titled <strong>%1</strong>.{/ts}<p>{ts}This will remove the format from all Message Templates that use it. Do you want to continue?{/ts}</p> </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl index 0807cfffd2a4bd316ef572405b55a16ab451b656..b8bb250a0f46aeb146da0fbccb7bd6a3452c6c3a 100644 --- a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl @@ -13,7 +13,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$reminderName}WARNING: You are about to delete the Reminder titled <strong>%1</strong>.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl index 7a1c237412173a802f2bc5200254a3d3b6e737c4..5c785c8c8b8fc130336eb99b1a1996d9f5b352b3 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="help"> - {ts}In addition to the settings on this screen, there are a number of settings you can add to your sites's settings file (civicrm.settings.php) to provide additional debugging information.{/ts} {docURL page="Debugging for developers" resource="wiki"} + {ts}In addition to the settings on this screen, there are a number of settings you can add to your sites's settings file (civicrm.settings.php) to provide additional debugging information.{/ts} {docURL page="dev/tools/debugging/#changing-file-based-settings"} </div> <div class="crm-block crm-form-block crm-debugging-form-block"> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl index 87318f8cc397d69ae8b69110e67886d61430a9d8..b73060be9600a8172be20fd3d883254577eac084 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl @@ -7,9 +7,8 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} -{capture assign=docLink}{docURL page="CiviMail Mailer Settings" text="CiviMail Mailer Settings and Optimization" resource="wiki"}{/capture} <div class="help"> - {ts 1=$docLink}These settings are used to configure mailer properties for the optional CiviMail component and may allow you to significantly optimize performance. Please read the %1 documentation, and make sure you understand it before modifying default values. (These settings are NOT used for the built-in 'Email - send now' feature).{/ts} + {ts}These settings are used to configure mailer properties for the optional CiviMail component and may allow you to significantly optimize performance. Please read the documentation, and make sure you understand it before modifying default values. (These settings are NOT used for the built-in 'Email - send now' feature).{/ts} {docURL page="sysadmin/setup/civimail/outbound"} </div> <div class="crm-block crm-form-block crm-mail-form-block"> {include file='CRM/Admin/Form/Setting/SettingForm.tpl'} diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl index 68ace19f261d974b8db8f2e75acdb617dd86e916..00b453ce21285485517fd8c7ffc56f067808daca 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl @@ -31,10 +31,14 @@ <td> {$form.logging.html}<br /> {if $validTriggerPermission} - <p class="description">{ts}If enabled, all actions will be logged with a complete record of changes.{/ts}</p> + {if $isMultilingual} + <p class="description">{ts}Logging is not supported in multilingual environments.{/ts}</p> + {else} + <p class="description">{ts}If enabled, all actions will be logged with a complete record of changes.{/ts}</p> + {/if} {else} <p class="description">{ts}In order to use this functionality, the installation's database user must have privileges to create triggers (in MySQL 5.0 – and in MySQL 5.1 if binary logging is enabled – this means the SUPER privilege). This install either does not seem to have the required privilege enabled.{/ts} {ts}This functionality cannot be enabled on multilingual installations.{/ts}</p> - {/if} + {/if} </td> </tr> <tr class="crm-miscellaneous-form-block-doNotAttachPDFReceipt"> diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl index 69b5c652c7a60f70301f8f498b3a125cd881c395..98c6597244160d147eabbb1fc158f4c713f579fb 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl @@ -40,7 +40,7 @@ <tr class="crm-path-form-block-customTemplateDir"> <td class="label">{$form.customTemplateDir.label}</td> <td>{$form.customTemplateDir.html|crmAddClass:'huge40'}<br /> - <span class="description">{ts}Path where site specific templates are stored if any. This directory is searched first if set. Custom JavaScript code can be added to templates by creating files named <em>templateFile.extra.tpl</em>.{/ts} {docURL page="Customize Built-in Screens" resource="wiki"}</span><br /> + <span class="description">{ts}Path where site specific templates are stored if any. This directory is searched first if set. Custom JavaScript code can be added to templates by creating files named <em>templateFile.extra.tpl</em>.{/ts} {docURL page="sysadmin/setup/directories"}</span><br /> <span class="description">{ts}CiviCase configuration files can also be stored in this custom path.{/ts} {docURL page="user/case-management/set-up"}</span> </td> </tr> diff --git a/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl b/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl index 72d50d871f44896f38635c926d41fe82148f615b..b7a091b84706773bcbfc13dadb00be9a37e57095 100644 --- a/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl +++ b/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl @@ -56,7 +56,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/event/add' q="action=add&is_template=1&reset=1"}{/capture} {ts 1=$crmURL}There are no Event Templates present. You can <a href='%1'>add one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl b/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl index 3e025ac6a39f3fee5be02985dac82542566e15c9..04df4239eb70290014817202e78249079a68d000 100644 --- a/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl +++ b/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl @@ -41,7 +41,7 @@ Depends: CRM/common/enableDisableApi.tpl and CRM/common/jsortable.tpl </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no extensions to display. Please click "Refresh" to update information about available extensions.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl b/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl index 1afe59b4f25045ea44c5617c8c4ed2960193eb81..c400f940b5d3f6a3e47d918714d53116e092ee66 100644 --- a/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl +++ b/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl @@ -1,7 +1,7 @@ <div class="crm-content-block crm-block"> {foreach from=$extAddNewReqs item=req} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$req.title}<br/> {$req.message} </div> diff --git a/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl b/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl index e23977a984ecee21407fb4235e106a3c246d1482..88875c8573ee805c7b93d12fcea959cd6bc1fdd7 100644 --- a/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl +++ b/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl @@ -45,7 +45,7 @@ Depends: CRM/common/enableDisableApi.tpl and CRM/common/jsortable.tpl </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1="https://civicrm.org/extensions"}There are no extensions to display. Click the "Add New" tab to browse and install extensions posted on the <a href="%1">public CiviCRM Extensions Directory</a>. If you have downloaded extensions manually and don't see them here, try clicking the "Refresh" button.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/Job.tpl b/civicrm/templates/CRM/Admin/Page/Job.tpl index cb2d310b7c79c87a85b3a02fb4b322bac321a9bd..2738a86b94f33031bdb68587b7a753853cd605f6 100644 --- a/civicrm/templates/CRM/Admin/Page/Job.tpl +++ b/civicrm/templates/CRM/Admin/Page/Job.tpl @@ -63,7 +63,7 @@ </div> {elseif $action ne 1} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no jobs configured.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/Admin/Page/JobLog.tpl b/civicrm/templates/CRM/Admin/Page/JobLog.tpl index 12b1b687b778d8174d5a7df13a4bf8b775fa4a28..367b0f5b1b113bd9d63029dcd56bc8dcb12cd4da 100644 --- a/civicrm/templates/CRM/Admin/Page/JobLog.tpl +++ b/civicrm/templates/CRM/Admin/Page/JobLog.tpl @@ -49,7 +49,7 @@ </div> {elseif $action ne 1} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $jobId} {ts}This scheduled job does not have any log entries.{/ts} {else} diff --git a/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl b/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl index d2dd488eea672277a83b3552d3aff4dbce9deab2..e2ddf676bda4a38a86b589499821f5a5c982302a 100644 --- a/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl +++ b/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl @@ -68,7 +68,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/admin/labelFormats' q="action=add&reset=1"}{/capture} {ts 1=$crmURL}There are no Label Formats configured. You can<a href='%1'>add one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp b/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp index 458672890850a798a259d981002d44bda2da7913..dce28aeeafe0fd45a33c00164f6482e66be49931 100644 --- a/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp +++ b/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp @@ -10,7 +10,7 @@ {capture assign=tokenDocLink}{docURL page="user/common-workflows/tokens-and-mail-merge"}{/capture} {capture assign=schedRemindersDocLink}{docURL page="user/email/scheduled-reminders/"}{/capture} {capture assign=schedRemURL}{crmURL p='civicrm/admin/scheduleReminders' q="reset=1"}{/capture} -{capture assign=upgradeTemplatesDocLink}{docURL page="Updating System Workflow Message Templates after Upgrades - method 1 - kdiff" resource="wiki"}{/capture} +{capture assign=upgradeTemplatesDocLink}{docURL page="sysadmin/upgrade/#updating-system-workflow-message-templates"}{/capture} {htxt id="id-intro-title"} {ts}Message Templates{/ts} {/htxt} diff --git a/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl b/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl index 2d704fdd963e7ea6b05c3d55b62f3366183821a6..b60355dede5c249e9e019fda75ca156a4cd1332b 100644 --- a/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl +++ b/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl @@ -147,7 +147,7 @@ {if empty( $template_row) } <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$crmURL}There are no User-driven Message Templates entered. You can <a href='%1'>add one</a>.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/Options.hlp b/civicrm/templates/CRM/Admin/Page/Options.hlp index c11452fc4439ced5166f0b6fa0a623b08d89dbd5..7f7018192de14e09e9022300515c7cce7cbb7aa7 100644 --- a/civicrm/templates/CRM/Admin/Page/Options.hlp +++ b/civicrm/templates/CRM/Admin/Page/Options.hlp @@ -11,9 +11,8 @@ {ts}Activity Types{/ts} {/htxt} {htxt id='id-activity-types'} - {capture assign=docLink}{docURL page="CiviCRM Public APIs" text="API Documentation" resource="wiki"}{/capture} <p>{ts}Activities are 'interactions with contacts' which you want to record and track. CiviCRM has several reserved (e.g. 'built-in') activity types (meetings, phone calls, emails sent). Create additional 'activity types' here if you need to record other types of activities. For example, you might want to add 'Job Interview', or 'Site Audit', etc.{/ts}</p> {capture assign=crmURL}{crmURL p='civicrm/admin/custom/group' q='reset=1'}{/capture} <p>{ts 1=$crmURL}Subject, location, date/time and description fields are provided for all activity types. You can add custom fields for tracking additional information about activities <a href='%1'>here</a>.{/ts}</p> - <p>{ts 1=$docLink}Scheduled and Completed Activities are searchable by type and/or activity date using 'Advanced Search'. Other applications may record activities for CiviCRM contacts using our APIs. For more information, refer to the online %1.{/ts}</p> + <p>{ts}Scheduled and Completed Activities are searchable by type and/or activity date using 'Advanced Search'. Other applications may record activities for CiviCRM contacts using our APIs.{/ts} {docURL page="dev/api"} </p> {/htxt} diff --git a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp index 96722905bde575e1044ac411f078fe9376ade11d..3568576d615db169534d1903365fa445a7f4196a 100644 --- a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp +++ b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp @@ -14,10 +14,10 @@ <p>{ts}Refer to the following documentation:{/ts}</p> <ul> <li>{docURL page="user/contributions/payment-processors" text="Payment processor overview"}</li> - <li>{docURL page="Payment Processors" text="Processor comparison and setup guide" resource="wiki"}</li> + <li>{docURL page="sysadmin/setup/payment-processors" text="Processor comparison and setup guide"}</li> </ul> <p>{ts}If you're not sure which processor to use - we recommend reviewing terms, limitations and coverage areas on each processor's website before proceeding.{/ts}</p> -<p>{ts 1="https://civicrm.org/extensions?tid_4[]=125"}If your desired processor is not in the list, check the <a href="%1">Extensions Directory</a> for more payment processors you can download. If you still can't find it, consider partnering with a developer and contributing a new extension.{/ts}</p> +<p>{ts 1="https://civicrm.org/extensions?field_extension_civi_use_target_id=125"}If your desired processor is not in the list, check the <a href="%1">Extensions Directory</a> for more payment processors you can download. If you still can't find it, consider partnering with a developer and contributing a new extension.{/ts}</p> {/htxt} {htxt id='AuthNet-live-user-name'} @@ -202,18 +202,6 @@ <br />{ts 1='<strong>https://www.eway.com.au/gateway_cvn/xmlpayment.asp</strong>'}Use %1 unless otherwise advised by eWAY.{/ts} {/htxt} -{htxt id='Payment_Express-test-user-name'} {ts}Payment Express UserID (Development account):{/ts} -{ts}This is the development user name provided to you by DPS/Payment Express.{/ts} -{ts 1='4111111111111111' 2='76'}The test Credit Card number is %1 - this is the only credit card number that will work on the test gateway. The test Total Amount can be any amount except one that ends in a value of .%2 (e.g. $10.%2) - all amounts ending in .%2 will return a failed response.{/ts} -{/htxt} - -{htxt id='Payment_Express-test-url-site'} {ts}This is the URL for accessing the DPS/Payment Express payment site. If you have been given a MAC key please fill in the Mac Key field, and use https://sec.paymentexpress.com/pxpay/pxpay.aspx for the Site URL. Otherwise use https://sec.paymentexpress.com/pxpay/pxaccess.aspx for the Site URL.{/ts} {/htxt} - -{htxt id='Payment_Express-live-user-name'} {ts}Payment Express UserID (LIVE account):{/ts} -{ts}This is the live user name provided to you by DPS/Payment Express.{/ts}{/htxt} - -{htxt id='Payment_Express-live-url-site'} {ts}This is the URL for accessing the DPS/Payment Express payment site. If you have been given a MAC key please fill in the Mac Key field, and use https://sec.paymentexpress.com/pxpay/pxpay.aspx for the Site URL. Otherwise use https://sec.paymentexpress.com/pxpay/pxaccess.aspx for the Site URL.{/ts} {/htxt} - {htxt id='Elavon-live-user-name'} <p>{ts}This is the LIVE <strong>Elavon Merchant ID</strong> associated with your Elavon account.{/ts}</p> {/htxt} diff --git a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl index ba6d55da20f0a335cea327f70853104b13596bc2..2323dffa9c2d1cde2b50d9fd88425b18bf89d891 100644 --- a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl +++ b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl @@ -58,7 +58,7 @@ </div> {elseif $action ne 1} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no Payment Processors entered.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl b/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl index 1b419c5752bdd62eabb55d024a971e9ac2eb8849..063a160ff1d127689e289a86e95bc1d273607fc9 100644 --- a/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl +++ b/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl @@ -60,7 +60,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl index b5c9506544026c8e68ced7975cdf8efd08f8d988..0e004c2c88a9b8745597a8c4dd913670ecee56bb 100644 --- a/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl @@ -29,7 +29,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Badge/Form/Layout.tpl b/civicrm/templates/CRM/Badge/Form/Layout.tpl index 3aeda9184fc8fece5461cd7729b77bcab7ca6a32..00805e2e238157c8b109d83ed7fc94b28e12137b 100644 --- a/civicrm/templates/CRM/Badge/Form/Layout.tpl +++ b/civicrm/templates/CRM/Badge/Form/Layout.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Batch/Form/Batch.tpl b/civicrm/templates/CRM/Batch/Form/Batch.tpl index 56e8d5bd9dd5f15987d55859417aa356fc1cb52d..df8b0720894ea63a1079e846e8bfba3c000e2d3a 100644 --- a/civicrm/templates/CRM/Batch/Form/Batch.tpl +++ b/civicrm/templates/CRM/Batch/Form/Batch.tpl @@ -19,7 +19,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this batch will result in the loss of all data entered for the batch.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Campaign/Form/Campaign.tpl b/civicrm/templates/CRM/Campaign/Form/Campaign.tpl index ba17c99e82d9d8a762011cbedf29f67716c05434..a56b9df3b71cce2bc1052a2b7612a32605173149 100644 --- a/civicrm/templates/CRM/Campaign/Form/Campaign.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Campaign.tpl @@ -14,7 +14,7 @@ <table class="form-layout"> <tr> <td colspan="2"> - <div class="status"><div class="icon inform-icon"></div> {ts}Are you sure you want to delete this Campaign?{/ts}</div> + <div class="status">{icon icon="fa-info-circle"}{/icon}{ts}Are you sure you want to delete this Campaign?{/ts}</div> </td> </tr> </table> diff --git a/civicrm/templates/CRM/Campaign/Form/Gotv.tpl b/civicrm/templates/CRM/Campaign/Form/Gotv.tpl index daa157e60d6be4ea5bc5b417928110f6d8f313c4..c11c028724167c8742ee29bda33d27d555b6d373 100644 --- a/civicrm/templates/CRM/Campaign/Form/Gotv.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Gotv.tpl @@ -10,7 +10,7 @@ {if $errorMessages} <div class="messages status crm-error no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <ul> {foreach from=$errorMessages item=errorMsg} <li>{ts}{$errorMsg}{/ts}</li> diff --git a/civicrm/templates/CRM/Campaign/Form/Petition.tpl b/civicrm/templates/CRM/Campaign/Form/Petition.tpl index 2220c9d1f90e22d0dbf72e3a09cac9265be71239..8b60e03238d63fa662cdb989b3e5d95717addb2b 100644 --- a/civicrm/templates/CRM/Campaign/Form/Petition.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Petition.tpl @@ -15,7 +15,7 @@ <tr> <td colspan="2"> <div class="status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this Petition?{/ts}</div> </td> </tr> diff --git a/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl b/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl index ec68d2770f9ab8ebe5d9172a6f8d5a8b5947f63f..f9fc2a79d46e75486e4c4d393c987cf8d5e543ee 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl @@ -10,7 +10,7 @@ {if !$hasCampaigns} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl index 0b2ef45f212c5faec6f7872eabcd7467bd432fa9..bfeb44999d3b46c066594b02a12be90754abbf22 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl b/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl index 35414668910eb632810b12329866e5d553edae60..afb84dde628a2237a9bec38de489e8727ef39d22 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl @@ -10,7 +10,7 @@ {if !$hasPetitions} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl b/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl index 09a53a4ecea0fb293d4327f6d1ba3b51a0dff730..324f403a040cc20e491dc5ce219e7efa935ef2d7 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl @@ -10,7 +10,7 @@ {if !$hasSurveys} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl b/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl index 1510b7bb4d6c4f98d302bcf5c794be7d1d8216bb..9c879e40983cbcec14b6405eb3b5ef8519466882 100644 --- a/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl @@ -11,7 +11,7 @@ <table class="form-layout"> <tr> <td colspan="2"> - <div class="status"><div class="icon inform-icon"></div> {ts 1=$surveyTitle}Are you sure you want to delete the %1 survey?{/ts}</div> + <div class="status">{icon icon="fa-info-circle"}{/icon}{ts 1=$surveyTitle}Are you sure you want to delete the %1 survey?{/ts}</div> </td> </tr> </table> diff --git a/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl b/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl index 081559ef2603cf3824fc64f75cfb2481a34f8f16..b861552d1f4e71539b9354480d8521416a98a194 100644 --- a/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl @@ -49,7 +49,7 @@ <tr class="crm-campaign-survey-main-form-block-release_frequency"> <td class="label">{$form.release_frequency.label}</td> <td class="view-value">{$form.release_frequency.html} - <div class="description">{ts}Reserved respondents are released if they haven't been surveyed within this number of days. The Respondent Processor script must be run periodically to release respondents.{/ts} {docURL page="Managing Scheduled Jobs" resource="wiki"}</div> </td> + <div class="description">{ts}Reserved respondents are released if they haven't been surveyed within this number of days. The Respondent Processor script must be run periodically to release respondents.{/ts} {docURL page="user/initial-set-up/scheduled-jobs"}</div> </td> </tr> <tr class="crm-campaign-survey-main-form-block-is_active"> <td class="label">{$form.is_active.label}</td> diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl index 9c927d7b4cc295242060c07da56debdf731fc616..2987636b71467589ec7c8c2c009494a67db313d6 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl @@ -9,7 +9,7 @@ *} {if $votingTab and $errorMessages} <div class='messages status'> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <ul> {foreach from=$errorMessages item=errorMsg} <li>{ts}{$errorMsg}{/ts}</li> diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl index fd17756a31a0812f8b253a6076481b960fa82545..9c7023da1e96065f419dc256225c0844ab60ca1d 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl @@ -21,7 +21,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"/> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl index cd992494304b95d29e5795b4ec0ac5985c7bac88..618af12e3fdbd21a414302eb30d49ca5e7912175 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl @@ -16,7 +16,7 @@ <tr class="crm-campaign-task-release-form-block-surveytitle"> <td colspan=2> <div class="status"> - <div class="icon inform-icon"></div> {ts 1=$surveyTitle}Do you want to release respondents for '%1' ?{/ts} + {icon icon="fa-info-circle"}{/icon}{ts 1=$surveyTitle}Do you want to release respondents for '%1' ?{/ts} </div> </td> </tr> diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl index a4ccaf412ea1a87671e22ba2c827faf57a3826ef..38fe35ac7e2b6c375cf954a1595a46df2e3ef6b5 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl @@ -16,7 +16,7 @@ <tr class="crm-campaign-task-reserve-form-block-surveytitle"> <td colspan=2> <div class="status"> - <div class="icon inform-icon"></div> {ts 1=$surveyTitle}Do you want to reserve respondents for '%1' ?{/ts} + {icon icon="fa-info-circle"}{/icon}{ts 1=$surveyTitle}Do you want to reserve respondents for '%1' ?{/ts} </div> </td> </tr> diff --git a/civicrm/templates/CRM/Campaign/Page/Petition.tpl b/civicrm/templates/CRM/Campaign/Page/Petition.tpl index 595c8582e74ca29c6a3c38d6b8b62c2b0b5fb006..160ae236ed7e7144a98d205fcc43b342010e37d0 100644 --- a/civicrm/templates/CRM/Campaign/Page/Petition.tpl +++ b/civicrm/templates/CRM/Campaign/Page/Petition.tpl @@ -50,7 +50,7 @@ {else} <div class="status"> - <div class="icon inform-icon"></div> {ts}None found.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}None found.{/ts} </div> {/if} <div class="action-link"> diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl index b207cf1d0354a53e788ef2addc55e0a066caec91..193b0aa4ff46260b0fa5f15f3e5e347de31c8167 100644 --- a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl +++ b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $success} {ts 1=$display_name 2=$email}<strong>%1 - your email address '%2' has been successfully verified.</strong>{/ts} {else} diff --git a/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl b/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl index 6f1308bc10618615fc56e2baeff81bace0dba055..c7ac2f45889af7f8ec5c776b3a3d834d2a2d9d73 100644 --- a/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl +++ b/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl @@ -47,8 +47,8 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"> - {ts p=$addSurveyType.0 q=$addSurveyType.1}There are no survey types entered. You can <a href='%1'>add one</a>.{/ts}</div> + {icon icon="fa-info-circle"}{/icon} + {ts p=$addSurveyType.0 q=$addSurveyType.1}There are no survey types entered. You can <a href='%1'>add one</a>.{/ts} </div> {/if} {/if} diff --git a/civicrm/templates/CRM/Campaign/Page/Vote.tpl b/civicrm/templates/CRM/Campaign/Page/Vote.tpl index ff305b93c9838220ea9f71c8319f835f02963ed8..b4a4a13db76d4036a31439804cc28d197f3dd6fc 100644 --- a/civicrm/templates/CRM/Campaign/Page/Vote.tpl +++ b/civicrm/templates/CRM/Campaign/Page/Vote.tpl @@ -33,7 +33,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You are not authorized to access this page.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Case/Form/Case.tpl b/civicrm/templates/CRM/Case/Form/Case.tpl index d96b5cb26b7fd7a514acee464d8eb1570b66a554..2edb838293da536e1f3bc278184d46f57f0ac272 100644 --- a/civicrm/templates/CRM/Case/Form/Case.tpl +++ b/civicrm/templates/CRM/Case/Form/Case.tpl @@ -20,7 +20,7 @@ <h3>{if $action eq 8}{ts}Delete Case{/ts}{elseif $action eq 32768}{ts}Restore Case{/ts}{/if}</h3> {if $action eq 8 or $action eq 32768 } <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts}Click Delete to move this case and all associated activities to the Trash.{/ts} {else} diff --git a/civicrm/templates/CRM/Case/Form/EditClient.tpl b/civicrm/templates/CRM/Case/Form/EditClient.tpl index d1108cc1a4a9468313072a0265eea630711d2831..fea5368eb1b0dccea664b555bb75b13197257fb1 100644 --- a/civicrm/templates/CRM/Case/Form/EditClient.tpl +++ b/civicrm/templates/CRM/Case/Form/EditClient.tpl @@ -10,7 +10,7 @@ {* template for assigning the current case to another client*} <div class="crm-block crm-form-block crm-case-editclient-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts 1=$currentClientName}This is case is currently assigned to %1.{/ts} + {icon icon="fa-info-circle"}{/icon} {ts 1=$currentClientName}This is case is currently assigned to %1.{/ts} </div> <div class="crm-form-block"> <table class="form-layout-compressed"> diff --git a/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl index 05bfa282cea5fbb86bcee54ba249f393cd906ad7..f3924aa8797ccc789dbb8966be5fd17c006c4614 100644 --- a/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Case/Form/Task/Delete.tpl b/civicrm/templates/CRM/Case/Form/Task/Delete.tpl index d94f86eb03cd384ab7ae7019821f6ec55652ce64..e24d21d749dc14df00c04a377876b17a5e9c5efb 100644 --- a/civicrm/templates/CRM/Case/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contribution deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete the selected cases? This will move the case(s) and all associated activities to the Trash.{/ts}<br/> <p>{include file="CRM/Case/Form/Task.tpl"}</p> diff --git a/civicrm/templates/CRM/Case/Form/Task/Print.tpl b/civicrm/templates/CRM/Case/Form/Task/Print.tpl index 31b56ebd7d6b01cea813d0c07ea83d4a429caafc..e15d076c6fe012b8a51ce977342a1f2614e935c9 100644 --- a/civicrm/templates/CRM/Case/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/Print.tpl @@ -46,7 +46,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Case/Form/Task/Restore.tpl b/civicrm/templates/CRM/Case/Form/Task/Restore.tpl index 88f3f554564061c2e7153f09cc7f7d79c385c3e6..790eb360dd3c81937d8c3e4dde948fb09277a693 100644 --- a/civicrm/templates/CRM/Case/Form/Task/Restore.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/Restore.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contribution deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to restore the selected cases? This operation will retrieve the case(s) and all associated activities from Trash.{/ts}</p> <p>{include file="CRM/Case/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl index b146b79927ef0242e5680013be49ce359c579068..cff2cc5fb09855f0cf2ec5a7d47add753452e0df 100644 --- a/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl @@ -30,7 +30,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Case/Page/ConfigureError.tpl b/civicrm/templates/CRM/Case/Page/ConfigureError.tpl index 762ca73196e3d3ae44cca3c1a6ea579b57d3db0f..b2c69e68b767d314e3e4609ae71a5d85889e90a2 100644 --- a/civicrm/templates/CRM/Case/Page/ConfigureError.tpl +++ b/civicrm/templates/CRM/Case/Page/ConfigureError.tpl @@ -12,7 +12,7 @@ {capture assign=docLink}{docURL page="user/case-management/set-up" text="CiviCase Setup documentation"}{/capture} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts}You need to setup and load Case and Activity configuration files before you can begin using the CiviCase component.{/ts}</strong> {ts 1=$docLink}Refer to the %1 to learn about this process.{/ts} </div> diff --git a/civicrm/templates/CRM/Case/Page/Tab.tpl b/civicrm/templates/CRM/Case/Page/Tab.tpl index 047fd3dc379b92a4b5e4a276e6d63526f5c8ea56..66ec5e72b0a7fdbbf534e8a4d299d7e50332c660 100644 --- a/civicrm/templates/CRM/Case/Page/Tab.tpl +++ b/civicrm/templates/CRM/Case/Page/Tab.tpl @@ -12,7 +12,7 @@ {elseif $redirectToCaseAdmin} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts}Oops, It looks like there are no active case types.{/ts}</strong> {if call_user_func(array('CRM_Core_Permission','check'), ' administer CiviCase')} {capture assign=adminCaseTypeURL}{crmURL p='civicrm/a/#/caseType'} @@ -52,7 +52,7 @@ {include file="CRM/Case/Form/Selector.tpl"} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no case records for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl index 0181f55f956f7b38638a57a67e82555dcb03cf07..f83b4cb7bfb7a54a4416551e81a7c9b82b595e1e 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl @@ -23,7 +23,7 @@ {if $blockId gt 1}<fieldset><legend>{ts}Supplemental Address{/ts}</legend>{/if} <table class="form-layout-compressed crm-edit-address-form"> {if $masterAddress.$blockId gt 0 } - <tr><td><div class="message status"><div class="icon inform-icon"></div> {ts 1=$masterAddress.$blockId}This address is shared with %1 contact record(s). Modifying this address will automatically update the shared address for these contacts.{/ts}</div></td></tr> + <tr><td><div class="message status">{icon icon="fa-info-circle"}{/icon} {ts 1=$masterAddress.$blockId}This address is shared with %1 contact record(s). Modifying this address will automatically update the shared address for these contacts.{/ts}</div></td></tr> {/if} {if $className eq 'CRM_Contact_Form_Contact'} diff --git a/civicrm/templates/CRM/Contact/Form/Merge.tpl b/civicrm/templates/CRM/Contact/Form/Merge.tpl index 6c2902a06bb1eee8f53c4d7b7b73229caa9b6d9c..dce608c1b8e501b951d3f09ece4b112cb996539b 100644 --- a/civicrm/templates/CRM/Contact/Form/Merge.tpl +++ b/civicrm/templates/CRM/Contact/Form/Merge.tpl @@ -13,13 +13,13 @@ </div> <div class="message status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts}WARNING: The duplicate contact record WILL BE DELETED after the merge is complete.{/ts}</strong> </div> {if $user} <div class="message status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts 1=$config->userFramework}WARNING: There are %1 user accounts associated with both the original and duplicate contacts. Ensure that the %1 user you want to retain is on the right - if necessary use the 'Flip between original and duplicate contacts.' option at top to swap the positions of the two records before doing the merge. The user record associated with the duplicate contact will not be deleted, but will be unlinked from the associated contact record (which will be deleted). You will need to manually delete that user (click on the link to open the %1 user account in new screen). You may need to give thought to how you handle any content or contents associated with that user.{/ts}</strong> diff --git a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl index 7306bf6b38fd3dc671fb38c86b56e91a3e36406c..8c1a39568ca322e2bda5edc37e65c3503adc0e7f 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl @@ -10,7 +10,7 @@ <div class="advanced-search-fields basic-fields form-layout"> {foreach from=$basicSearchFields item=fieldSpec} {assign var=field value=$form[$fieldSpec.name]} - {if $field} + {if $field && !in_array($fieldSpec.name, array('first_name', 'last_name'))} <div class="search-field {$fieldSpec.class|escape}"> {if $fieldSpec.template} {include file=$fieldSpec.template} diff --git a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl index cdda1797a99fddfc4383cc558889ec8c6d2d7b5b..9f5e98e57e10bfbd048e43361cdad15d5bdb4d79 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl @@ -11,16 +11,16 @@ <script type="text/javascript"> CRM.$(function($) { function showIndivFldsSearch() { - $('#sortnameselect').hide(); - $('#indivfldselect').show(); + $('#sortnameselect').css('visibility', 'hidden').css('position','absolute'); + $('#indivfldselect').css('visibility', 'visible').css('position','static'); $('#sort_name').val(''); $('#first_name').removeClass('big').addClass('eight'); $('#last_name').removeClass('big').addClass('eight'); return false; } function showSortNameSearch() { - $('#indivfldselect').hide(); - $('#sortnameselect').show(); + $('#indivfldselect').css('visibility', 'hidden').css('position','absolute'); + $('#sortnameselect').css('visibility', 'visible').css('position','static'); $('#first_name').val(''); $('#last_name').val(''); return false; diff --git a/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl b/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl index 6a9308dbde9ceec2080357b0404879370e70094b..d27e0e76973a68cfde31b4fa1a29ff1e9836e979 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* Custom searches. Default template for NO MATCHES on submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill} {ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} diff --git a/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl index 87e236eb97f745f4342dbd8bff5202a2dbd3b96f..c880ac595279cc174e98e3c4747ce4a5dd5ba060 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request or viewing an empty group. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $context EQ 'smog'} {capture assign=crmURL}{crmURL q="context=amtg&amtgID=`$group.id`&reset=1"}{/capture}{ts 1=$group.title 2=$crmURL}%1 has no contacts which match your search criteria. You can <a href='%2'>add contacts here.</a>{/ts} {else} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl b/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl index b24a66566fbacf456980f6ef221cc2a7d32d9f56..436464f40e34b17c4c47b789a0244a533e3541b2 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of contact deletes *} <div class="crm-block crm-form-block crm-contact-task-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $restore} {ts}Are you sure you want to restore the selected contact(s)? The contact(s) and all related data will be fully restored.{/ts} {elseif $trash} diff --git a/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl b/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl index cd912f92c688bd22135ac4581254599fc7bdc181..d75f2365138bebfe1d7c9513a766a544b3cea026 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl @@ -44,12 +44,14 @@ </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> <div id="editMessageDetails" class="section"> - <div id="updateDetails" class="section" > - {$form.updateTemplate.html} {$form.updateTemplate.label} - </div> - <div class="section"> - {$form.saveTemplate.html} {$form.saveTemplate.label} - </div> + {if call_user_func(array('CRM_Core_Permission','check'), 'edit message templates') } + <div id="updateDetails" class="section" > + {$form.updateTemplate.html} {$form.updateTemplate.label} + </div> + <div class="section"> + {$form.saveTemplate.html} {$form.saveTemplate.label} + </div> + {/if} </div> <div id="saveDetails" class="section"> diff --git a/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl b/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl index bea1556df673eff06b24fb03abe23f8a3b6de73a..2808e89f3a02e49882c0812cdcb6b5d7c01f1bdf 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl @@ -38,7 +38,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Print.tpl b/civicrm/templates/CRM/Contact/Form/Task/Print.tpl index 6b2966928996de50d6d7cef81b9a7c38c2eb73ee..b91d92ce9f60ef8685cc8c5a46846fcf3b4edc34 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/Print.tpl @@ -103,7 +103,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl b/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl index 2b2534f8abb19423d6a13014213afdab1ba71f43..e2f019db575d167bd4991f8d450a2a71bdb6341c 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-unhold-form-block"> <div class="spacer"></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to unhold email of selected contact(s)?.{/ts} {ts}This action cannot be undone.{/ts}</p> <p>{include file="CRM/Contact/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl b/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl index 42312a195dcf27dc7897b90ee61b647f8c042025..5009af8a195864f0a7d63f91d6995ab94a5a49a0 100644 --- a/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl +++ b/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl @@ -70,7 +70,7 @@ <span class="description"> {ts}This option is not recommended for large imports. Use the command-line geocoding script instead.{/ts} </span> - {docURL page="Managing Scheduled Jobs" resource="wiki"} + {docURL page="user/initial-set-up/scheduled-jobs"} </td> </tr> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp b/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp index 91987733b5d02f3348271ebd2f5a934619e36df6..86f030bb40cfa5209c0e77e3971788243604cd74 100644 --- a/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp +++ b/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp @@ -14,7 +14,7 @@ <p> {ts}These are developed and contributed by members of the CiviCRM community. Consider adding any custom searches which you use often to your Search menu (from Administer > Customize Data and Screens > Navigation Menu). As new custom searches become available they can be viewed (and installed if useful) from Administer > System Settings > Manage Extensions.{/ts} </p> -<p>{docURL page="Create a Custom-Search Extension" resource="wiki"}</p> +<p>{docURL page="dev/extensions/civix/#generate-search"}</p> </p> <p> {ts}NOTE: Some of these searches may rely on specific site configurations - and may not work as expected on your site.{/ts} diff --git a/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl b/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl index 1cc375c9d49f3dff8e9324f9d3785be2f4f03b8a..e1248deb55eb0a00fc19ff88132aa33312ced18c 100644 --- a/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl @@ -10,7 +10,7 @@ <div class="section-shown"> {if !$groupSmart AND !$groupParent} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This contact does not currently belong to any smart groups.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Delete.tpl b/civicrm/templates/CRM/Contact/Page/View/Delete.tpl index 14a773024077f2ef9e586bec7ad6fdc333d53f76..5b8c5115776ef71135a80470174500b8fb20c11d 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Delete.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contact deletes *} <div class="messages status no-popup"> -<div class="icon inform-icon"></div> +{icon icon="fa-info-circle"}{/icon} <p>{ts 1=$displayName}Are you sure you want to delete the contact record and all related information for <strong>%1</strong>?{/ts}</p> <p>{ts}This action cannot be undone.{/ts}</p> </div> diff --git a/civicrm/templates/CRM/Contact/Page/View/Group.tpl b/civicrm/templates/CRM/Contact/Page/View/Group.tpl index ba78dff8db0a9916b7f0d979d74fcc96e80b090a..bc3343b56c7c4e8eac599f0fae2bedfa419a04ee 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Group.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Group.tpl @@ -30,7 +30,7 @@ </table> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This contact does not belong to any groups.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl b/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl index 77bfdf27bb1f017b93789e3752449a0401fc88c2..4e5162643a982b5cc45826068a7c210b145dde1c 100644 --- a/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl @@ -10,7 +10,7 @@ <div class="view-content view-contact-groups"> {if $groupCount eq 0} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This contact does not currently belong to any groups.{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contact/Page/View/Log.tpl b/civicrm/templates/CRM/Contact/Page/View/Log.tpl index 3849b211956aa669d05f3a114b95645da549d7b5..11b21f7555341d8866b46bb5f76c666e9f2ab1fd 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Log.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Log.tpl @@ -27,7 +27,7 @@ </table> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Note.tpl b/civicrm/templates/CRM/Contact/Page/View/Note.tpl index 6e8c11ab7f8a34cdee08f591558f9134341cff6d..8cdf82cfd7a035174b9f72992c6d9461d0432d4e 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Note.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Note.tpl @@ -240,7 +240,7 @@ </div> {elseif ($action eq 16)} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no Notes for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Summary.js b/civicrm/templates/CRM/Contact/Page/View/Summary.js index 95c2abe55801689d173cf086104881466b71dbc5..1d57d9992ccee5e955bd5c1089ea3d17dc5f965d 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Summary.js +++ b/civicrm/templates/CRM/Contact/Page/View/Summary.js @@ -61,10 +61,14 @@ function reloadBlock(el) { return $(el).each(function() { var data = $(this).data('edit-params'); - data.snippet = data.reset = 1; - data.class_name = data.class_name.replace('Form', 'Page'); - data.type = 'page'; - $(this).closest('.crm-summary-block').load(CRM.url('civicrm/ajax/inline', data), function() {$(this).trigger('crmLoad');}); + if (data) { + data.snippet = data.reset = 1; + data.class_name = data.class_name.replace('Form', 'Page'); + data.type = 'page'; + $(this).closest('.crm-summary-block').load(CRM.url('civicrm/ajax/inline', data), function() { + $(this).trigger('crmLoad'); + }); + } }); } @@ -192,7 +196,7 @@ document.title = $('title').html().replace(oldName, contactName); oldName = contactName; } - $('#contactname-block').load(refreshTitle); + $('#contactname-block').on('load', refreshTitle); refreshTitle(); var clicking; diff --git a/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl b/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl index 94d8cd08e700d9e56e0e806f0bbf7c5a315e2e71..7306c342a0b63f3123693cec32e2147b58153663 100644 --- a/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl @@ -16,7 +16,7 @@ <div class="view-content"> {if $groupCount eq 0 } <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You are not currently subscribed to any Groups.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl b/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl index 95204a53968d6d1ccc201d87db1ed8115f41f225..004070019d2e8b5de18fd03f11db47d343f7f036 100644 --- a/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl +++ b/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl @@ -13,7 +13,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: If you delete this option, contributors will not be able to use this credit card type on your Online Contribution pages.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl index 08a41ddfa144d94084910f592fd714860c4a1fc5..40049945e7227d721490a436e576f6b12ce649cc 100644 --- a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl +++ b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl @@ -20,7 +20,7 @@ {if !$email} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}You will not be able to send an automatic email receipt for this payment because there is no email address recorded for this contact. If you want a receipt to be sent when this payment is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the payment.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}You will not be able to send an automatic email receipt for this payment because there is no email address recorded for this contact. If you want a receipt to be sent when this payment is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the payment.{/ts} </div> {/if} {if $newCredit AND $contributionMode EQ null} diff --git a/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl b/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl index c193513b621c196485a25791a05b835b89032e9b..d93037432aa57888bda2938715b00af2efce69a4 100644 --- a/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl +++ b/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-auto-renew-membership-cancellation"> <div class="help"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$cancelRecurDetailText} {if $cancelRecurNotSupportedText} <div class="status-warning">{$cancelRecurNotSupportedText}</div> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl index f3674420c14f564fe6499fb0f41158fb4cc5bab8..9ab874819b1f2142bb6439e31c633bd49f0ad8bb 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl @@ -33,13 +33,13 @@ {if !$email and $action neq 8 and $context neq 'standalone'} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}You will not be able to send an automatic email receipt for this contribution because there is no email address recorded for this contact. If you want a receipt to be sent when this contribution is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the contribution.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}You will not be able to send an automatic email receipt for this contribution because there is no email address recorded for this contact. If you want a receipt to be sent when this contribution is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the contribution.{/ts} </div> {/if} {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this contribution will result in the loss of the associated financial transactions (if any).{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index 0b6a9443bb633358a9cd5aa5907cb1eaafbb0bb5..d6ef535aae41dce7ebae78138fd04839be917618 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -56,6 +56,11 @@ </div> {/if} + {if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') } + {capture assign="buttonTitle"}{ts}Configure Contribution Page{/ts}{/capture} + {crmButton target="_blank" p="civicrm/admin/contribute/settings" q="reset=1&action=update&id=`$contributionPageID`" fb=1 title="$buttonTitle" icon="fa-wrench"}{ts}Configure{/ts}{/crmButton} + <div class='clear'></div> + {/if} {include file="CRM/common/TrackingFields.tpl"} <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block"> @@ -333,15 +338,27 @@ var isRecur = cj('input[id="is_recur"]:checked'); var allowAutoRenew = {/literal}'{$allowAutoRenewMembership}'{literal}; var quickConfig = {/literal}{$quickConfig}{literal}; - if ( allowAutoRenew && cj("#auto_renew") && quickConfig) { + if (allowAutoRenew && cj("#auto_renew") && quickConfig) { showHideAutoRenew(null); } + + var frequencyUnit = cj('#frequency_unit'); + var frequencyInerval = cj('#frequency_interval'); + var installments = cj('#installments'); + isDisabled = false; + if (isRecur.val() > 0) { cj('#recurHelp').show(); + frequencyUnit.prop('disabled', false).addClass('required'); + frequencyInerval.prop('disabled', false).addClass('required'); + installments.prop('disabled', false); cj('#amount_sum_label').text('{/literal}{ts escape='js'}Regular amount{/ts}{literal}'); } else { cj('#recurHelp').hide(); + frequencyUnit.prop('disabled', true).removeClass('required'); + frequencyInerval.prop('disabled', true).removeClass('required'); + installments.prop('disabled', true); cj('#amount_sum_label').text('{/literal}{ts escape='js'}Total Amount{/ts}{literal}'); } } diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl index eb0b41ccc97389a59bef36f7712fd103dfda85a8..3d282628fa6e1072ab9e6ecbbb128a47b6fb8e65 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl @@ -21,7 +21,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to remove this premium product from this Contribution page?{/ts} </div> {elseif $action eq 1024} diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl index 496907832785ef4cb81d591001c40476481ffa8a..8be7d88e7b2d33784fa4ab9692fb3a77a72c5d11 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl @@ -177,9 +177,9 @@ <tr id="minMaxFields" class="crm-contribution-form-block-minMaxFields"><td> </td><td> <table class="form-layout-compressed"> <tr class="crm-contribution-form-block-min_amount"><th scope="row" class="label">{$form.min_amount.label}</th> - <td>{$form.min_amount.html|crmMoney}</td></tr> + <td>{$form.min_amount.html}</td></tr> <tr class="crm-contribution-form-block-max_amount"><th scope="row" class="label">{$form.max_amount.label}</th> - <td>{$form.max_amount.html|crmMoney}<br /> + <td>{$form.max_amount.html}<br /> <span class="description">{ts 1=5|crmMoney}If you have chosen to <strong>Allow Other Amounts</strong>, you can use the fields above to control minimum and/or maximum acceptable values (e.g. don't allow contribution amounts less than %1).{/ts}</span></td></tr> </table> </td></tr> @@ -194,7 +194,7 @@ <tr class="columnheader" ><th scope="column">{ts}Contribution Label{/ts}</th><th scope="column">{ts}Amount{/ts}</th><th scope="column">{ts}Default?{/ts}<br />{$form.default.0.html}</th></tr> {section name=loop start=1 loop=11} {assign var=idx value=$smarty.section.loop.index} - <tr><td class="even-row">{$form.label.$idx.html}</td><td>{$form.value.$idx.html|crmMoney}</td><td class="even-row">{$form.default.$idx.html}</td></tr> + <tr><td class="even-row">{$form.label.$idx.html}</td><td>{$form.value.$idx.html}</td><td class="even-row">{$form.default.$idx.html}</td></tr> {/section} </table> </fieldset> diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl index bffeb24bfaffe49e4074a4310cf03d6656887ac7..98544852fb0cca2747f23deab17bb667adbff758 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl @@ -9,7 +9,7 @@ *} {* this template is used for confirmation of delete for a group *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $relatedContributions} {ts 1=$title}You cannot delete this Contribution Page because it has already been used to submit a contribution or membership payment. It is recommended that your disable the page instead of deleting it, to preserve the integrity of your contribution records. If you do want to completely delete this contribution page, you first need to search for and delete all of the contribution transactions associated with this page in CiviContribute.{/ts} {else} diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl index 2f8eb100310c18730d1a6586fed2653094a59261..9ae6af80260c697be87ceb83ac07eda5bc8f9df9 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl @@ -11,7 +11,7 @@ <h3>{ts}Configure Widget{/ts}</h3> {if $showStatus} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}It looks like you may have posted and / or distributed the flash version of the Contribution widget. We won't be supporting the flash version in next release. You should try and get all sites using the flash widget to update to the improved HTML widget code below as soon as possible.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl b/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl index 415206b4f3f1051f076eec8627c8154fc618992b..c688678b938ccf5211d6739ca794950337440290 100644 --- a/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-contribution-manage_premiums-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this premium?{/ts} {ts}This action cannot be undone.{/ts} {ts}This will also remove the premium from any contribution pages that currently include it.{/ts} </div> {elseif $action eq 1024} diff --git a/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl b/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl index 8ca432991eefa9a793d513c765029f1c4a79b9ee..9ebac095e2639c84e164af8db946e3ea66f9b1c3 100644 --- a/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl +++ b/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a group *} <fieldset><legend>{ts}Delete Campaign Page {/ts}</legend> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}Are you sure you want to delete Campaign Page '%1'?{/ts}<br /> {ts}This action cannot be undone.{/ts} </div> diff --git a/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl b/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl index 4b43f2b097189a7126126fdd197c22a6877f5650..113c9483c0a6d980e826c0475b32e9fbe3197afb 100644 --- a/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl +++ b/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all contribution records which use this option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl index 8b8cea760be105559184d383c58d7a110f8b5bfd..8ce4069f415fa46b2711f282c157ffa968efe38f 100644 --- a/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl index bd63906c08decb97e324bccc458e39ca0f44dc11..0b4dfc49aaf51560b857f3189fdf8f7c57e7a476 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contribution deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to delete the selected contributions? This delete operation cannot be undone and will delete all transactions and activity associated with these contributions.{/ts}</p> <p>{include file="CRM/Contribute/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl index 7fb22b7d123ea75ad5f19dc9905d810e95caa36c..9f3dde88890e677c073220468e56780eb4634a16 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {include file="CRM/Contribute/Form/Task.tpl"} </div> {if $selectedOutput ne 'email'} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl b/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl index eebec04694b3b2edc40588fc5c49568b7d6119d4..ca5b3e1228a0dc580eef5311464280d0850475af 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {include file="CRM/Contribute/Form/Task.tpl"} </div> <div class="help"> diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl index b4c4deda2f20626a7e6a0be0d6b6ca74f9832632..6625f15eaa67a619a476b004ef361dc230228d96 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl @@ -52,7 +52,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"/> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl index 2fa8f7d0ad3f1d94627bd417ef320696fa659101..a14a183b17747d6640f09e8ac445f48a06a5c7ee 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl @@ -32,7 +32,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl index 635c4890d754714b33b4f0cd98b697a7a999e0e6..9d16b90aeb7f2741d9e6b1c8932c838042a6ef8d 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl @@ -8,50 +8,49 @@ +--------------------------------------------------------------------+ *} <div class="form-item crm-block crm-form-block crm-contribution-form-block"> -<div class="help"> - {ts}Use this form to record received payments for 'pay later' online contributions, membership signups and event registrations. You can use the Transaction ID field to record account+check number, bank transfer identifier, or other unique payment identifier.{/ts} -</div> -<fieldset> - <legend>{ts}Update Contribution Status{/ts}</legend> - <table class="form-layout-compressed"> - <tr class="crm-contribution-form-block-contribution_status_id"><td class="label">{$form.contribution_status_id.label}</td><td class="html-adjust">{$form.contribution_status_id.html}<br /> - <span class="description">{ts}Assign the selected status to all contributions listed below.{/ts}</td></tr> - <tr class="crm-contribution-form-block-is_email_receipt"><td class="label">{$form.is_email_receipt.label}</td> - <td class="html-adjust">{$form.is_email_receipt.html}<br /> - <span class="description">{ts}When checked CiviCRM will send an e-mail receipt to the donor. Leave unchecked when you don't want to send an e-mail.{/ts} - </td> - </tr> - </table> -<table> -<tr class="columnheader"> - <th>{ts}Name{/ts}</th> - <th class="right">{ts}Amount{/ts} </th> - <th>{ts}Source{/ts}</th> - <th>{ts}Fee Amount{/ts}</th> - <th>{ts}Payment Method{/ts}</th> - <th>{ts}Check{/ts} #</th> - <th>{ts}Transaction ID{/ts}</th> - <th>{ts}Transaction Date{/ts}</th> -</tr> + <h3>{ts}Record payments for contributions{/ts}</h3> + <div class="help"> + <p>{ts}Use this form to record received payments for "pay later" online contributions, membership signups and event registrations. You can use the Transaction ID field to record account+check number, bank transfer identifier, or other unique payment identifier.{/ts}</p> + <p>{ts}The contribution status will be updated as appropriate. To update contribution statuses directly, return to the search results and select "Update multiple contributions".{/ts}</p> + </div> + + <table class="form-layout-compressed"> + <tr class="crm-contribution-form-block-is_email_receipt"> + <td class="label">{$form.is_email_receipt.label}</td> + <td class="html-adjust">{$form.is_email_receipt.html}<br /> + <span class="description">{ts}When checked CiviCRM will send an e-mail receipt to the donor. Leave unchecked when you don't want to send an e-mail.{/ts}</span> + </td> + </tr> + </table> + <table> + <tr class="columnheader"> + <th>{ts}Name{/ts}</th> + <th class="right">{ts}Amount{/ts} </th> + <th>{ts}Source{/ts}</th> + <th>{ts}Fee Amount{/ts}</th> + <th>{ts}Payment Method{/ts}</th> + <th>{ts}Check{/ts} #</th> + <th>{ts}Transaction ID{/ts}</th> + <th>{ts}Transaction Date{/ts}</th> + </tr> -{foreach from=$rows item=row} -<tr class="{cycle values="odd-row,even-row"}"> - <td>{$row.display_name}</td> - <td class="right nowrap">{$row.amount|crmMoney} </td> - <td>{$row.source}</td> - {assign var="element_name" value="fee_amount_"|cat:$row.contribution_id} - <td>{$form.$element_name.html}</td> - {assign var="element_name" value="payment_instrument_id_"|cat:$row.contribution_id} - <td class="form-text four">{$form.$element_name.html}</td> - {assign var="element_name" value="check_number_"|cat:$row.contribution_id} - <td class="form-text four">{$form.$element_name.html|crmAddClass:four}</td> - {assign var="element_name" value="trxn_id_"|cat:$row.contribution_id} - <td>{$form.$element_name.html|crmAddClass:eight}</td> - {assign var="element_name" value="trxn_date_"|cat:$row.contribution_id} - <td>{$form.$element_name.html}</td> -</tr> -{/foreach} -</table> + {foreach from=$rows item=row} + <tr class="{cycle values="odd-row,even-row"}"> + <td>{$row.display_name}</td> + <td class="right nowrap">{$row.amount|crmMoney} </td> + <td>{$row.source}</td> + {assign var="element_name" value="fee_amount_"|cat:$row.contribution_id} + <td>{$form.$element_name.html}</td> + {assign var="element_name" value="payment_instrument_id_"|cat:$row.contribution_id} + <td class="form-text four">{$form.$element_name.html}</td> + {assign var="element_name" value="check_number_"|cat:$row.contribution_id} + <td class="form-text four">{$form.$element_name.html|crmAddClass:four}</td> + {assign var="element_name" value="trxn_id_"|cat:$row.contribution_id} + <td>{$form.$element_name.html|crmAddClass:eight}</td> + {assign var="element_name" value="trxn_date_"|cat:$row.contribution_id} + <td>{$form.$element_name.html}</td> + </tr> + {/foreach} + </table> <div class="crm-submit-buttons">{$form.buttons.html}</div> -</fieldset> </div> diff --git a/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl b/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl index 8c819d0f108807b5a507367bf6f92d49eb31dc56..72d13b28f657097772141073e89f490ab3d5390d 100644 --- a/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl +++ b/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="help"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $mode eq 'auto_renew'} {ts}Use this form to update the credit card and billing name and address used with the auto-renewal option for your {$membershipType} membership.{/ts} {else} diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl index a4665f8026cb79b6f82f65c670ce145e7ea74d11..f39728a087a2a14f2f3ae0398a016b6d9f2138ef 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl @@ -99,7 +99,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$newPageURL}No contribution pages have been created yet. Click <a accesskey="N" href='%1'>here</a> to create a new contribution page.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl index 16873b7b8359a1b22a46b997f1c05aa5593e09c4..8867ffe409e5252411cc57152c822281f549bb47 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl @@ -36,7 +36,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No contributions have been recorded for this recurring contribution.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl index fd1b6befbdce88f6e367341505cf7885b9d8faa0..25103e624d3c19f593748c6cff1b573ae89cbdff 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl @@ -49,7 +49,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl b/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl index 919e854cb0eed4a0f4e521e62eaef04c5ee62fcd..43e62b4ebf042bf8d855259f950241e4de7a4291 100644 --- a/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl +++ b/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl @@ -40,7 +40,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You do not have any active Personal Campaign pages.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/Premium.tpl b/civicrm/templates/CRM/Contribute/Page/Premium.tpl index 3737acf5ae1650792317e466867776d82f7b51c2..5dd5aa91579ac900fe81be5a085fc269365f2abf 100644 --- a/civicrm/templates/CRM/Contribute/Page/Premium.tpl +++ b/civicrm/templates/CRM/Contribute/Page/Premium.tpl @@ -51,11 +51,11 @@ {if $showForm eq false} <div class="messages status no-popup"> {if $products ne null } - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/addProductToPage' q="reset=1&action=update&id=$id"}{/capture} {ts 1=$crmURL}There are no premiums offered on this contribution page yet. You can <a href='%1'>add one</a>.{/ts} {else} - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$managePremiumsURL}There are no active premiums for your site. You can <a href='%1'>create and/or enable premiums here</a>.{/ts} {/if} </div> diff --git a/civicrm/templates/CRM/Contribute/Page/Tab.tpl b/civicrm/templates/CRM/Contribute/Page/Tab.tpl index 8e17896d6080b2fa6fa17adb6be6d99a82d94414..e6b2ce8d71b1b3a0ea94e134ecf369105f0eca11 100644 --- a/civicrm/templates/CRM/Contribute/Page/Tab.tpl +++ b/civicrm/templates/CRM/Contribute/Page/Tab.tpl @@ -63,7 +63,7 @@ {include file="CRM/Contribute/Form/Selector.tpl"} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No contributions have been recorded from this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl b/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl index 29ae828479a8da79ab473e73a0af67d16471e652..0520ebc1a300c60db90d00034a93b8ffb92a9f4c 100644 --- a/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl @@ -71,7 +71,7 @@ {/if} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no contributions on record for you.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Core/Form/EntityForm.tpl b/civicrm/templates/CRM/Core/Form/EntityForm.tpl index a14bd7686c90a7889c9c2e5a512e7857ea6db409..903eb96bb3ea9a19edaefbeac0b3830d52a74eb5 100644 --- a/civicrm/templates/CRM/Core/Form/EntityForm.tpl +++ b/civicrm/templates/CRM/Core/Form/EntityForm.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage|escape} </div> {else} diff --git a/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl b/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl index d3ddb9aef6f859c74731956f650384d40af3eaff..e87067ea84472e86d4ecdc61b52161eab91c1548 100644 --- a/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl +++ b/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl @@ -9,7 +9,7 @@ *} <div class="crm-block crm-form-block crm-custom-field-form-block"> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> - <div class='status'><div class="icon inform-icon"></div> + <div class='status'>{icon icon="fa-info-circle"}{/icon} {ts}Warning: This functionality is currently in beta stage. Consider backing up your database before using it. Click "Cancel" to return to the "edit custom field" form without making changes.{/ts} </div> <table class="form-layout"> diff --git a/civicrm/templates/CRM/Custom/Form/DeleteField.tpl b/civicrm/templates/CRM/Custom/Form/DeleteField.tpl index 60a3e2ee3158703c0d6eca9a89fce8f87d207114..fbb546d19a5a6d7e530a998ff9750f0991da8ff7 100644 --- a/civicrm/templates/CRM/Custom/Form/DeleteField.tpl +++ b/civicrm/templates/CRM/Custom/Form/DeleteField.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a Fields *} <div class="crm-block crm-form-block crm-custom-deletefield-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}WARNING: Deleting this custom field will result in the loss of all '%1' data. Any Profile form and listings field(s) linked with '%1' will also be deleted.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> diff --git a/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl b/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl index 7507bc1d55c9251f7e0d07b9093cd6daec15d083..9bd7c6fdb5026daf91a6444b10b38e646058bbdc 100644 --- a/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl +++ b/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl @@ -11,7 +11,7 @@ <fieldset><legend>{ts}Delete Attached File{/ts}</legend> <div class="status"> <dl> - <dt><div class="icon inform-icon"></div></dt> + <dt>{icon icon="fa-info-circle"}{/icon}</dt> <dd> {ts}WARNING: Are you sure you want to delete the attached file?{/ts} </dd> diff --git a/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl b/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl index e6f4831401ef363e8e13200d701e147ceb619223..cd77148e29b58b8cf431bc180470c3373faeb5c3 100644 --- a/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl +++ b/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl @@ -14,7 +14,7 @@ {include file="CRM/common/formButtons.tpl" location="top"} </div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}WARNING: Deleting this custom field set will result in the loss of all '%1' data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons"> diff --git a/civicrm/templates/CRM/Custom/Form/Field.tpl b/civicrm/templates/CRM/Custom/Form/Field.tpl index 41700a80d683b2538a066c2308a4657681a3471b..fe0d6914825e81fb2c0f43c2b6d0fee0bebc26c5 100644 --- a/civicrm/templates/CRM/Custom/Form/Field.tpl +++ b/civicrm/templates/CRM/Custom/Form/Field.tpl @@ -77,7 +77,7 @@ {$form.filter.html} <span><a class="crm-hover-button toggle-contact-ref-mode" href="#Group">{ts}Filter by Group{/ts}</a></span> <br /> - <span class="description">{ts}Filter contact search results for this field using Contact get API parameters. EXAMPLE: To list Students in group 3:{/ts} "action=get&group=3&contact_sub_type=Student" {docURL page="Using the API" resource="wiki"}</span> + <span class="description">{ts}Filter contact search results for this field using Contact get API parameters. EXAMPLE: To list Students in group 3:{/ts} "action=get&group=3&contact_sub_type=Student" {docURL page="dev/api"}</span> </td> </tr> <tr class="crm-custom-field-form-block-options_per_line" id="optionsPerLine" {if $action neq 2 && ($form.data_type.value.0.0 >= 4 && $form.data_type.value.1.0 neq 'CheckBox' || $form.data_type.value.1.0 neq 'Radio' )}class="hiddenElement"{/if}> diff --git a/civicrm/templates/CRM/Custom/Form/Option.tpl b/civicrm/templates/CRM/Custom/Form/Option.tpl index 5a1fb626aae5a7a5a76c4e35361e1bd289b65d82..f45cb95e8b42e121663b734ca2c34bb3de861661 100644 --- a/civicrm/templates/CRM/Custom/Form/Option.tpl +++ b/civicrm/templates/CRM/Custom/Form/Option.tpl @@ -14,7 +14,7 @@ {/if} {* $action ne view *} {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this custom field option will result in the loss of all related data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Custom/Page/Option.tpl b/civicrm/templates/CRM/Custom/Page/Option.tpl index 41b49ac784904ad6e6fca788dcbcc08ee15e53bc..2aec75a532bf5bb088d958ddcdb3b44fcfab7e32 100644 --- a/civicrm/templates/CRM/Custom/Page/Option.tpl +++ b/civicrm/templates/CRM/Custom/Page/Option.tpl @@ -12,7 +12,7 @@ {else} {if $reusedNames} <div class="message status"> - <div class="icon inform-icon"></div> {ts 1=$reusedNames}These Multiple Choice Options are shared by the following custom fields: %1{/ts} + {icon icon="fa-info-circle"}{/icon} {ts 1=$reusedNames}These Multiple Choice Options are shared by the following custom fields: %1{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl index 16d33ff2dea2497459703acd1769ee86d48df5d0..be40890a773f602767492aa060b32652fd824901 100644 --- a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl +++ b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl @@ -60,7 +60,7 @@ {/foreach} {if !$feeds} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Sorry but we are not able to provide this at the moment.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl index 4ef9efa2be2d425d5c543eab2004635823fa06a5..55030635957ad5a36211d0f687abe3d57a29944f 100644 --- a/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl +++ b/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl @@ -13,7 +13,7 @@ {include file="CRM/common/formButtons.tpl" location="top"} </div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <div> {if $isTemplate} {ts}Warning: Deleting this event template will also delete associated Event Registration Page and Event Fee configurations.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} diff --git a/civicrm/templates/CRM/Event/Form/Participant.tpl b/civicrm/templates/CRM/Event/Form/Participant.tpl index 069ad4e2872acd2eecae19c08de7bf340df9b210..bf8a4c4fdfd6104daf6ae7b8444ac378a923371e 100644 --- a/civicrm/templates/CRM/Event/Form/Participant.tpl +++ b/civicrm/templates/CRM/Event/Form/Participant.tpl @@ -196,7 +196,7 @@ {if $action eq 8} {* If action is Delete *} <div class="crm-participant-form-block-delete messages status no-popup"> <div class="crm-content"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this registration will result in the loss of related payment records (if any).{/ts} {ts}Do you want to continue?{/ts} </div> {if $additionalParticipant} diff --git a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl index cc2ccfdb340629eed94cdac7fa3597984f06aa6a..cc4dedfac3bdbf272ab63416c0eae0b9c5c39561 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl @@ -7,6 +7,11 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} +{if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') } + {capture assign="buttonTitle"}{ts}Configure Event{/ts}{/capture} + {crmButton target="_blank" p="civicrm/event/manage/settings" q="reset=1&action=update&id=`$event.id`" fb=1 title="$buttonTitle" icon="fa-wrench"}{ts}Configure{/ts}{/crmButton} + <div class='clear'></div> +{/if} {* Callback snippet: Load payment processor *} {if $action & 1024} {include file="CRM/Event/Form/Registration/PreviewHeader.tpl"} @@ -55,7 +60,7 @@ {$form.additional_participants.html}{if $contact_id || $contact_id == NULL}{ts}(including yourself){/ts}{/if} <br/> <span - class="description">{ts}Fill in your registration information on this page. If you are registering additional people, you will be able to enter their registration information after you complete this page and click "Continue".{/ts}</span> + class="description">{ts}Fill in your registration information on this page. If you are registering additional people, you will be able to enter their registration information after you complete this page and click "Review your registration".{/ts}</span> </div> <div class="clear"></div> </div> diff --git a/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl index d71c6369d308036edd6850b3634722ac5889b18e..593f14522c56558e0cd4c25a08c4caa67bca288e 100644 --- a/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl b/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl index acf605096e97aca744cba5b23b8b3e139cb00e3c..d7badca1f97da7350545e6ce3e308a60de4de10b 100644 --- a/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl @@ -10,7 +10,7 @@ {* Confirmation of Cancel Registration *} <div class="crm-block crm-form-block crm-event-cancel-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <div> <p>{ts}Are you sure you want to set status to Cancelled for the selected participants?{/ts}</p> <p>{include file="CRM/Event/Form/Task.tpl"}</p> diff --git a/civicrm/templates/CRM/Event/Form/Task/Delete.tpl b/civicrm/templates/CRM/Event/Form/Task/Delete.tpl index eb35a19794c60a416cfbb08becb2e4701d9ed997..b99fa017eebdad3b4e24b2e6a9c0c35c3b5d3781 100644 --- a/civicrm/templates/CRM/Event/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of participation deletes *} <div class="crm-block crm-form-block crm-event-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <div> <p>{ts}Are you sure you want to delete the selected participations? This delete operation cannot be undone and will delete all transactions and activity associated with these participations.{/ts}</p> <p>{include file="CRM/Event/Form/Task.tpl"}</p> diff --git a/civicrm/templates/CRM/Event/Form/Task/Print.tpl b/civicrm/templates/CRM/Event/Form/Task/Print.tpl index f80be344b95081e6e75b2cb18cdfc395aee8856b..013cf6fd28a31913babfee65ee6192a90f474b71 100644 --- a/civicrm/templates/CRM/Event/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/Print.tpl @@ -59,6 +59,6 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}There are no records selected for Print.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl index 339070156c7245981650eb9ee68dd1fb1c80f05d..9cfdab00089337a72adc283cbecf25afade2b3fc 100644 --- a/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl @@ -31,6 +31,6 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}There are no records selected.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/DashBoard.tpl b/civicrm/templates/CRM/Event/Page/DashBoard.tpl index b5db9cad5ec587cfcd92b90f003643aa2e409f4b..3ca364f0932997f9ecea62b8a6ca470eb91f2a6c 100644 --- a/civicrm/templates/CRM/Event/Page/DashBoard.tpl +++ b/civicrm/templates/CRM/Event/Page/DashBoard.tpl @@ -124,7 +124,7 @@ <br /> <div class="messages status no-popup"> <table> - <tr><div class="icon inform-icon"></div></tr> + <tr>{icon icon="fa-info-circle"}{/icon}</tr> <tr> {ts}There are no active Events to display.{/ts} {ts 1=$newEventURL}You can <a href="%1">Create a New Event</a> now.{/ts} diff --git a/civicrm/templates/CRM/Event/Page/List.tpl b/civicrm/templates/CRM/Event/Page/List.tpl index 4cbf20b541d3734812f51880f39a0e87fb6880bd..e4578b1d49270d2e39f2f17287b20f967545d16d 100644 --- a/civicrm/templates/CRM/Event/Page/List.tpl +++ b/civicrm/templates/CRM/Event/Page/List.tpl @@ -10,10 +10,8 @@ {* Displays current and upcoming public Events Listing as an HTML page. *} {include file="CRM/common/jsortable.tpl"} <div class="crm-section crm-event-list"> - {if $eventCartEnabled} - <a href="{crmURL p='civicrm/event/view_cart' }" class="button crm-shoppingcart-button"><i class="crm-i fa-shopping-cart" aria-hidden="true"></i> {ts}View Cart{/ts}</a> - <a href="{crmURL p='civicrm/event/cart_checkout'}" class="button crm-check-out-button"><i class="crm-i fa-credit-card" aria-hidden="true"></i> {ts}Checkout{/ts}</a> - {/if} + {crmRegion name="crm-event-list-pre"} + {/crmRegion} <table id="options" class="display"> <thead> @@ -48,4 +46,7 @@ </tr> {/foreach} </table> + + {crmRegion name="crm-event-list-post"} + {/crmRegion} </div> diff --git a/civicrm/templates/CRM/Event/Page/ManageEvent.tpl b/civicrm/templates/CRM/Event/Page/ManageEvent.tpl index 0f4a98d4aa2c8c71928c862c8b78f55b03208dac..099221a5af288465bd88a18be0a10b031fb85c18 100644 --- a/civicrm/templates/CRM/Event/Page/ManageEvent.tpl +++ b/civicrm/templates/CRM/Event/Page/ManageEvent.tpl @@ -137,7 +137,7 @@ {else} {if $isSearch eq 1} <div class="status messages"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=browseURL}{crmURL p='civicrm/event/manage' q="reset=1"}{/capture} {ts}No available Events match your search criteria. Suggestions:{/ts} <div class="spacer"></div> @@ -151,7 +151,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$newEventURL}There are no events scheduled for the date range. You can <a href='%1'>add one</a>.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl b/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl index ec1fde1a1263629ed1421c2db0816004a41704c5..695f53bebe4f618c3fa5646e8fcd5987bc9c4518 100644 --- a/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl +++ b/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl @@ -33,7 +33,7 @@ {else} <div class='spacer'></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no participants registered for this event.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl index 362f678fa71e3963b9658c1c7420950b7ba2ddcc..0626d6d15df44420c55447be33505b40070c39e3 100644 --- a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl +++ b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl @@ -34,7 +34,7 @@ {else} <div class='spacer'></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no participants registered for this event.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl index 6e875175c9567ff028d44266f896570be066442f..650dee0deab9e51f73aff9ada02a4589c0cf7111 100644 --- a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl +++ b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl @@ -35,7 +35,7 @@ {else} <div class='spacer'></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no participants registered for this event.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/Tab.tpl b/civicrm/templates/CRM/Event/Page/Tab.tpl index a85621d558f0e5a091d1558faeccb3f11e2c58e4..56f95044a633532ee2713850e8fd3ecc5201b072 100644 --- a/civicrm/templates/CRM/Event/Page/Tab.tpl +++ b/civicrm/templates/CRM/Event/Page/Tab.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> <table class="form-layout"> - <tr><div class="icon inform-icon"></div> + <tr>{icon icon="fa-info-circle"}{/icon} {ts}No event registrations have been recorded for this contact.{/ts} </tr> </table> diff --git a/civicrm/templates/CRM/Event/Page/UserDashboard.tpl b/civicrm/templates/CRM/Event/Page/UserDashboard.tpl index 037ab085a4271d00dda42da81b0918e8910c5b32..5da7e3a430f51d51e5a8ebeb4e8c5090335cd1bc 100644 --- a/civicrm/templates/CRM/Event/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Event/Page/UserDashboard.tpl @@ -50,7 +50,7 @@ {/strip} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You are not registered for any current or upcoming Events.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Financial/Form/Export.tpl b/civicrm/templates/CRM/Financial/Form/Export.tpl index 5b974eb2a6408bfed68d79d5a7ea124a26a18a36..4b1bf47f1d5c1e62323bd5fd8428a0de6af04499 100644 --- a/civicrm/templates/CRM/Financial/Form/Export.tpl +++ b/civicrm/templates/CRM/Financial/Form/Export.tpl @@ -10,7 +10,7 @@ {* Confirmation of Export Batch(s) *} <h3>{ts}Export Batch{/ts}</h3> <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Warning: You will not be able to reopen or change the batch after it is exported. Are you sure you want to export?{/ts} </div> <div class="crm-block crm-form-block crm-export_batch-form-block"> diff --git a/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl b/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl index efa70c635e6e844d97d06f21ecccec3cfbbcf222..87026e64e22e175d1887fc6c255f09ad1ec28115 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-contribution_type-form-block crm-financial_type-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: You cannot delete a {$delName} Financial Account if it is currently used by any Financial Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl b/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl index 55a48bcee18153521a9e15e179993bd2465e1b91..6dbaef87879069f7024c9f0ddceb1b59d46cbdf9 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-financial_type-form-block"> {if $action eq 8} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: You cannot delete a financial type if it is currently used by any Contributions, Contribution Pages or Membership Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl b/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl index 0ed2b3d5a6fe70af0458ad1a7f0176136880fd7e..498460aa74cb7f28965fe6ef546600f592154f79 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-financial_type-form-block"> {if $action eq 8} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: You cannot delete a financial type if it is currently used by any Contributions, Contribution Pages or Membership Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone. Unbalanced transactions may be created if you delete this account.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl b/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl index 711003614e412ec271a9f225603afbaaf6b01d59..646255fe294fe5129eaaec8a56a7a58659fef539 100644 --- a/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl +++ b/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl @@ -69,7 +69,7 @@ </div> {else} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL q="action=add&reset=1"}{/capture} {ts 1=$crmURL}There are no Financial Account entered. You can <a href='%1'>add one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Financial/Page/FinancialType.tpl b/civicrm/templates/CRM/Financial/Page/FinancialType.tpl index 59851127e8888886df24c45793e3d36ee52cd302..d42ca6f53b05634eb307abe9b3888a5438e9022f 100644 --- a/civicrm/templates/CRM/Financial/Page/FinancialType.tpl +++ b/civicrm/templates/CRM/Financial/Page/FinancialType.tpl @@ -53,7 +53,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl b/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl index 59732c8231b503aea7b116cb2fcf5f43b856ea45..5bc79434833235354eaf17a03d86fe4b585afe1c 100644 --- a/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl +++ b/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl @@ -56,7 +56,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL q="action=add&reset=1&aid=$aid"}{/capture} {ts 1=$crmURL}There are no financial accounts assigned to this financial type. You can <a href='%1'>assign one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Grant/Form/Grant.tpl b/civicrm/templates/CRM/Grant/Form/Grant.tpl index 7361b97e3cb3b43678bfb9f16123ea9749a5b63a..6fa4d9f9ac1f5aa423c08dd957056003d1f34cdc 100644 --- a/civicrm/templates/CRM/Grant/Form/Grant.tpl +++ b/civicrm/templates/CRM/Grant/Form/Grant.tpl @@ -12,7 +12,7 @@ <div class="crm-block crm-form-block crm-grant-form-block"> {if $action eq 8} <div class="messages status"> - <p><div class="icon inform-icon"></div> + <p>{icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this Grant?{/ts} {ts}This action cannot be undone.{/ts}</p> <p>{include file="CRM/Grant/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl index dafc9136269acca7be644e5d443442fa2df2ab32..5237c908d6c3254547b08d4c2e209f80b6b88cd2 100644 --- a/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl b/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl index 3016c073f9a55fc004d0c3665915b61632ca9046..85f3168b06616895e3f11805c6d416f0f76523e7 100644 --- a/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of Grant delete *} <div class="crm-block crm-form-block crm-grant-task-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete the selected Grants? This delete operation cannot be undone and will delete all transactions associated with these grants.{/ts} <p>{include file="CRM/Grant/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Grant/Form/Task/Print.tpl b/civicrm/templates/CRM/Grant/Form/Task/Print.tpl index 43e7f35ddb91782138c488394386b2a5411df356..98e16d5d4a4c0d408b3efc2247818a3f9c498ae4 100644 --- a/civicrm/templates/CRM/Grant/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Grant/Form/Task/Print.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl index 6520e0845c75499fac49b571a8f69918f55ebc57..144ad174ca59449da14e34b38f9cc0b319058bc2 100644 --- a/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl @@ -28,7 +28,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Grant/Page/Tab.tpl b/civicrm/templates/CRM/Grant/Page/Tab.tpl index 8ad006617459c11d839729310a1004e34fe7f8bb..bbebe0592e9c97fc958d82d8d59f66eac626f2ba 100644 --- a/civicrm/templates/CRM/Grant/Page/Tab.tpl +++ b/civicrm/templates/CRM/Grant/Page/Tab.tpl @@ -35,7 +35,7 @@ {include file="CRM/Grant/Form/Selector.tpl"} {else} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No grants have been recorded for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Logging/ReportDetail.tpl b/civicrm/templates/CRM/Logging/ReportDetail.tpl index 63b3e7c1a0dd58e3c2eb66d8947f49ed3c045e49..9f647186b761a351a2ebd816601718365e5110b8 100644 --- a/civicrm/templates/CRM/Logging/ReportDetail.tpl +++ b/civicrm/templates/CRM/Logging/ReportDetail.tpl @@ -12,7 +12,7 @@ {if $raw} <div class="status"> <dl> - <dt><div class="icon inform-icon"></div></dt> + <dt>{icon icon="fa-info-circle"}{/icon}</dt> <dd> {ts}WARNING: Are you sure you want to revert the below changes?{/ts} </dd> @@ -27,7 +27,7 @@ {/if} {else} <div class='messages status'> - <div class='icon inform-icon'></div> {ts}This report can not be displayed because there are no relevant entries in the logging tables.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}This report can not be displayed because there are no relevant entries in the logging tables.{/ts} </div> {/if} {if $layout neq 'overlay'} diff --git a/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl b/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl index 8929ddeda687a8269d9ae3d6fa7bbd214fe9b85c..06634d7c978eba292679c6cdc02a762ab8f9194c 100644 --- a/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl +++ b/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl @@ -54,8 +54,26 @@ var isMailing = false; {/if} {literal} +/** + * Checks if both the Save Template and Update Template fields exist. + * These fields will not exist if user does not have the edit message + * templates permission. + * + * @param {String} prefix + */ +function manageTemplateFieldsExists(prefix) { + var saveTemplate = document.getElementsByName(prefix + "saveTemplate"); + var updateTemplate = document.getElementsByName(prefix + "updateTemplate"); + + return saveTemplate.length > 0 && updateTemplate.length > 0; +} + function showSaveUpdateChkBox(prefix) { prefix = prefix || ''; + if (!manageTemplateFieldsExists(prefix)) { + document.getElementById(prefix + "saveDetails").style.display = "none"; + return; + } if (document.getElementById(prefix + "template") == null) { if (document.getElementsByName(prefix + "saveTemplate")[0].checked){ document.getElementById(prefix + "saveDetails").style.display = "block"; @@ -89,9 +107,11 @@ function showSaveUpdateChkBox(prefix) { } function selectValue( val, prefix) { - document.getElementsByName(prefix + "saveTemplate")[0].checked = false; - document.getElementsByName(prefix + "updateTemplate")[0].checked = false; - showSaveUpdateChkBox(prefix); + if (manageTemplateFieldsExists(prefix)) { + document.getElementsByName(prefix + "saveTemplate")[0].checked = false; + document.getElementsByName(prefix + "updateTemplate")[0].checked = false; + showSaveUpdateChkBox(prefix); + } if ( !val ) { if (document.getElementById("subject").length) { document.getElementById("subject").value =""; @@ -180,6 +200,9 @@ if ( isMailing ) { function verify(select, prefix) { prefix = prefix || ''; + if (!manageTemplateFieldsExists(prefix)) { + return; + } if (document.getElementsByName(prefix + "saveTemplate")[0].checked == false) { document.getElementById(prefix + "saveDetails").style.display = "none"; } diff --git a/civicrm/templates/CRM/Mailing/Form/Settings.hlp b/civicrm/templates/CRM/Mailing/Form/Settings.hlp index bb82ab94fc52fb77f1adbca166d84ae04889962d..99d515ee397dbe92bcbc577f0fb0d0bff1e517c6 100644 --- a/civicrm/templates/CRM/Mailing/Form/Settings.hlp +++ b/civicrm/templates/CRM/Mailing/Form/Settings.hlp @@ -21,4 +21,8 @@ </p><p> {ts}"user and user admin" only means that only users that received the mailing or administrators can view the content of this email as a web page; the recipients will have to log in to be able to view the message{/ts} <p></p> +{htxt id="mailing-sync-interval-title"} + {ts}Sync Interval{/ts} +{ts}"civimail_sync_interval" specifies how frequently CiviMail records which emails it has sent. A value of 1 means that it updates the database with every email sent, but this may have a performance hit.{/ts}: +<p></p> {/htxt} diff --git a/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl b/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl index b5a7c10110de11a3befda293f14c107b4be2b6b2..de38e6e8f6613bad6c1f879be47c8a22b6485165 100644 --- a/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"/> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Mailing/Page/Browse.tpl b/civicrm/templates/CRM/Mailing/Page/Browse.tpl index 7abb827f0a99bf96a1fa70c661219981e12f8b30..448cd77bdb467fe9bfc1ad6a6dd811c2a1e1e2e8 100644 --- a/civicrm/templates/CRM/Mailing/Page/Browse.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Browse.tpl @@ -97,7 +97,7 @@ {/if} <div class="status messages"> <table class="form-layout"> - <tr><div class="icon inform-icon"></div> + <tr>{icon icon="fa-info-circle"}{/icon} {ts 1=$componentName}No %1 match your search criteria. Suggestions:{/ts} </tr> <div class="spacer"></div> @@ -111,7 +111,7 @@ {elseif $unscheduled} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p=$newMassUrl q='reset=1'}{/capture} {ts 1=$componentName}There are no Unscheduled %1.{/ts} {if $showLinks}{ts 1=$crmURL}You can <a href='%1'>create and send one</a>.{/ts}{/if} @@ -119,13 +119,13 @@ {elseif $archived} <div class="messages status no-popup"> - <div class="icon inform-icon"></div>  + {icon icon="fa-info-circle"}{/icon}  {capture assign=crmURL}{crmURL p='civicrm/mailing/browse/scheduled' q='scheduled=true&reset=1'}{$qVal}{/capture} {ts 1=$crmURL 2=$componentName}There are no Archived %2. You can archive %2 from <a href='%1'>Scheduled or Sent %2</a>.{/ts} </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p=$newMassUrl q='reset=1'}{/capture} {capture assign=archiveURL}{crmURL p='civicrm/mailing/browse/archived' q='reset=1'}{$qVal}{/capture} {ts 1=$componentName}There are no Scheduled or Sent %1.{/ts} diff --git a/civicrm/templates/CRM/Mailing/Page/Confirm.tpl b/civicrm/templates/CRM/Mailing/Page/Confirm.tpl index d84fca88fe5f75ee967add290ae265f1f4ea2737..d466cf7d42385739ecd09af30e6aa7125fb67a88 100644 --- a/civicrm/templates/CRM/Mailing/Page/Confirm.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Confirm.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $success} {ts 1=$display_name 2=$email 3=$group}<strong>%1 (%2)</strong> has been successfully subscribed to the <strong>%3</strong> mailing list.{/ts} {else} diff --git a/civicrm/templates/CRM/Mailing/Page/Event.tpl b/civicrm/templates/CRM/Mailing/Page/Event.tpl index 7c66c8be0e2fe428a738c63a11c7e57de73db8c5..4636f96d5e1217fa3cbdff9fec5afa6e359c11ea 100644 --- a/civicrm/templates/CRM/Mailing/Page/Event.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Event.tpl @@ -39,7 +39,7 @@ {/strip} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}There are currently no %1.{/ts} </div> diff --git a/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl b/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl index 95a6fd117543e3d7f651c47fe47781d4ef732979..47b413d078af6abc0ca1c9be8b891d9131b45b19 100644 --- a/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl @@ -9,7 +9,7 @@ *} {if $confirm} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <label>{$display_name} ({$email})</label> {ts}has been successfully resubscribed.{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Member/Form/Membership.tpl b/civicrm/templates/CRM/Member/Form/Membership.tpl index 36e5d8678f75780173fe9f4a2622ccd4e8460475..78d49280a15ef5b0c24f276b1524429db063b8b8 100644 --- a/civicrm/templates/CRM/Member/Form/Membership.tpl +++ b/civicrm/templates/CRM/Member/Form/Membership.tpl @@ -10,7 +10,7 @@ {* this template is used for adding/editing/deleting memberships for a contact *} {if $isRecur} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}This membership is set to renew automatically {if $endDate}on {$endDate|crmDate}{/if}. Please be aware that any changes that you make here may not be reflected in the payment processor. Please ensure that you alter the related subscription at the payment processor.{/ts}</p> {if $cancelAutoRenew}<p>{ts 1=$cancelAutoRenew}To stop the automatic renewal: <a href="%1">Cancel auto-renew</a> @@ -42,7 +42,7 @@ {/if} {if !$emailExists and $action neq 8 and $context neq 'standalone'} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}You will not be able to send an automatic email receipt for this Membership because there is no email address recorded for this contact. If you want a receipt to be sent when this Membership is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the Membership.{/ts}</p> </div> {/if} @@ -65,7 +65,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage} </div> {else} diff --git a/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl b/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl index bfaf1acc9298f6e4f2121bd0abc9b773b968be88..73b1b6850a4b8570057736960de48ec954459562 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl @@ -15,7 +15,7 @@ {/if} {if !$email} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}You will not be able to send an automatic email receipt for this Renew Membership because there is no email address recorded for this contact. If you want a receipt to be sent when this Membership is recorded, click Cancel and then click Edit from the Summary tab to add an email address before Renewal the Membership.{/ts}</p> </div> {/if} @@ -29,7 +29,7 @@ {if $action eq 32768} {if $cancelAutoRenew} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts 1=$cancelAutoRenew}This membership is set to renew automatically {if $renewalDate}on {$renewalDate|crmDate}{/if}. You will need to cancel the auto-renew option if you want to modify the Membership Type, End Date or Membership Status. <a href="%1">Click here</a> if you want to cancel the automatic renewal option.{/ts}</p> diff --git a/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl b/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl index 0ae925ddfd37edba051a55c811b29775c703ed10..0994cd02517c4d90a47cb50e339076acde48261e 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage|escape} </div> {else} diff --git a/civicrm/templates/CRM/Member/Form/MembershipType.tpl b/civicrm/templates/CRM/Member/Form/MembershipType.tpl index c5ff09011be7c37a2374aa13f80523b1c0a48faf..8be9e23fd9c7fa9a8484d8d9cd937c2be3e4cf07 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipType.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipType.tpl @@ -104,7 +104,7 @@ <fieldset><legend>{ts}Renewal Reminders{/ts}</legend> <div class="help"> {capture assign=reminderLink}{crmURL p='civicrm/admin/scheduleReminders' q='reset=1'}{/capture} - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$reminderLink}Configure membership renewal reminders using <a href="%1">Schedule Reminders</a>. If you have previously configured renewal reminder templates, you can re-use them with your new scheduled reminders.{/ts} {docURL page="user/email/scheduled-reminders"} </div> </fieldset> diff --git a/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl index ec880d3b1e9a24a57c6c94a9b3f1d397c5f3bdf4..fb2e3984f09e8cb58acd854c5fae15ca2b02c984 100644 --- a/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Member/Form/Task/Delete.tpl b/civicrm/templates/CRM/Member/Form/Task/Delete.tpl index cabc7be1e927d669b1cdbf5d07258b952b8f3754..585f457ee431f3d4fb20d6355a47581b37e14870 100644 --- a/civicrm/templates/CRM/Member/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Member/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of membership deletes *} <div class="crm-block crm-form-block crm-member-task-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <span>{ts}Are you sure you want to delete the selected memberships? This delete operation cannot be undone and will delete all transactions and activity associated with these memberships.{/ts}</span> <p>{include file="CRM/Member/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl index 170001ab8f8a3f10e6cea1eac84aeac928f6ef22..c906f807d0cd152e2a2ad20f12c6f4ea434b294f 100644 --- a/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl @@ -30,7 +30,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Member/Page/MembershipType.tpl b/civicrm/templates/CRM/Member/Page/MembershipType.tpl index cea515a485bbde06544799141b0e8b886265502c..04dc38cc7df9ad2cad73e874bd3e784db409b5be 100644 --- a/civicrm/templates/CRM/Member/Page/MembershipType.tpl +++ b/civicrm/templates/CRM/Member/Page/MembershipType.tpl @@ -10,7 +10,7 @@ {capture assign=reminderLink}{crmURL p='civicrm/admin/scheduleReminders' q='reset=1'}{/capture} <div class="help"> - <p><div class="icon inform-icon"></div> {ts}Membership types are used to categorize memberships. You can define an unlimited number of types. Each type incorporates a 'name' (Gold Member, Honor Society Member...), a description, a minimum fee (can be $0), and a duration (can be 'lifetime'). Each member type is specifically linked to the membership entity (organization) - e.g. Bay Area Chapter.{/ts} {docURL page="user/membership/defining-memberships/"}</p> + <p>{icon icon="fa-info-circle"}{/icon}{ts}Membership types are used to categorize memberships. You can define an unlimited number of types. Each type incorporates a 'name' (Gold Member, Honor Society Member...), a description, a minimum fee (can be $0), and a duration (can be 'lifetime'). Each member type is specifically linked to the membership entity (organization) - e.g. Bay Area Chapter.{/ts} {docURL page="user/membership/defining-memberships/"}</p> <p>{ts 1=$reminderLink}Configure membership renewal reminders using <a href="%1">Schedule Reminders</a>.{/ts} {docURL page="user/email/scheduled-reminders"}</p> </div> diff --git a/civicrm/templates/CRM/Member/Page/Tab.tpl b/civicrm/templates/CRM/Member/Page/Tab.tpl index d4abafedf555116edd78e618c773bd88b2aca491..249634931c3a587f045942e00ffb46aa26723239 100644 --- a/civicrm/templates/CRM/Member/Page/Tab.tpl +++ b/civicrm/templates/CRM/Member/Page/Tab.tpl @@ -44,7 +44,7 @@ {/if} {if NOT ($activeMembers or $inActiveMembers) and $action ne 2 and $action ne 1 and $action ne 8 and $action ne 4 and $action ne 32768} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No memberships have been recorded for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Member/Page/UserDashboard.tpl b/civicrm/templates/CRM/Member/Page/UserDashboard.tpl index 1e3cd972d1b8468184ae7f46e58e36970c45a0c7..084b6a22e08a826e2f3d10f555dcd91c8e4ee897 100644 --- a/civicrm/templates/CRM/Member/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Member/Page/UserDashboard.tpl @@ -73,7 +73,7 @@ {if NOT ($activeMembers or $inActiveMembers)} <div class="messages status no-popup"> - <div class="icon inform-icon"></div></dt> + {icon icon="fa-info-circle"}{/icon}</dt> {ts}There are no memberships on record for you.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl b/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl index 8ca432991eefa9a793d513c765029f1c4a79b9ee..9ebac095e2639c84e164af8db946e3ea66f9b1c3 100644 --- a/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl +++ b/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a group *} <fieldset><legend>{ts}Delete Campaign Page {/ts}</legend> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}Are you sure you want to delete Campaign Page '%1'?{/ts}<br /> {ts}This action cannot be undone.{/ts} </div> diff --git a/civicrm/templates/CRM/PCP/Page/PCP.tpl b/civicrm/templates/CRM/PCP/Page/PCP.tpl index e16b55ffe4cfc100db76545dff4ab0b19af0556f..9aca301ba37c5feff9fec06b9e45e92eb6fa9d23 100644 --- a/civicrm/templates/CRM/PCP/Page/PCP.tpl +++ b/civicrm/templates/CRM/PCP/Page/PCP.tpl @@ -53,7 +53,7 @@ </div> {else} <div class="messages status no-popup"> -<div class="icon inform-icon"></div> +{icon icon="fa-info-circle"}{/icon} {if $isSearch} {ts}There are no Personal Campaign Pages which match your search criteria.{/ts} {else} diff --git a/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl b/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl index 450f685bf560e8f0b65bca4d8e0ad9af6f48ea8d..866402fbfdb3fceda47cf7fa2a7e70d2cb40b8cd 100644 --- a/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl +++ b/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl @@ -10,7 +10,7 @@ {* this template is used for displaying PCP information *} {if $owner} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p><strong>{ts}Personal Campaign Preview{/ts}</strong> - {ts}This is a preview of your Personal Campaign Page in support of{/ts} <a href="{$parentURL}"><strong>{$pageName}</strong></a>.</p> {ts}The current status of your page is{/ts}: <strong {if $pcp.status_id NEQ 2}class=disabled {/if}>{$owner.status}</strong>. {if $pcp.status_id NEQ 2}<br /><span class="description">{ts}You will receive an email notification when your page is Approved and you can begin promoting your campaign.{/ts}</span>{/if} diff --git a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl index 81cd2afe3bc45c7967f0027d3b48187a4a42778f..82c7e770874325c0eede6fb4275da773cac8d8e1 100644 --- a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl @@ -13,7 +13,7 @@ {else} {if !$email and $action neq 8 and $context neq 'standalone'} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}You will not be able to send an acknowledgment for this pledge because there is no email address recorded for this contact. If you want a acknowledgment to be sent when this pledge is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the pledge.{/ts}</p> </div> {/if} @@ -29,7 +29,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <span class="font-red bold">{ts}WARNING: Deleting this pledge will also delete any related pledge payments.{/ts} {ts}This action cannot be undone.{/ts}</span> <p>{ts}Consider cancelling the pledge instead if you want to maintain an audit trail and avoid losing payment data. To set the pledge status to Cancelled and cancel any not-yet-paid pledge payments, first click Cancel on this form. Then click the more > link from the pledge listing, and select the Cancel action.{/ts}</p> </div> @@ -43,7 +43,7 @@ <td class="label">{$form.amount.label}</td> <td> <span>{$form.currency.html|crmAddClass:eight} {$form.amount.html|crmAddClass:eight}</span> - {if $originalPledgeAmount}<div class="messages status no-popup"><div class="icon inform-icon"></div> {ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} + {if $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} </td> </tr> <tr class="crm-pledge-form-block-installments"> diff --git a/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl b/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl index a9276b3ac81efdb44d445689c279ee8433ab3a14..742e47a4bd9862a25226b36011fae6bd4aa13a56 100644 --- a/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl +++ b/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl @@ -20,7 +20,7 @@ <tr class="crm-pledge-form-block-amount"> <td class="label">{ts}Total Pledge Amount{/ts}</td> <td><span class="bold">{$amount|crmMoney:$currency}</span> - {if $originalPledgeAmount}<div class="messages status no-popup"><div class="icon inform-icon"></div>{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} + {if $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} </td> </tr> <tr class="crm-pledge-form-block-installments"><td class="label">{ts}To be paid in{/ts}</td><td>{$installments} {ts}installments of{/ts} {$original_installment_amount|crmMoney:$currency} {ts}every{/ts} {$frequency_interval} {$frequencyUnit}</td></tr> diff --git a/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl index df7b7dcd61cdc413764a1ab3f68f1694cf23b6c6..5a1812a2f160831ecc936b2bfaeda51a07c917c1 100644 --- a/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl b/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl index bfc15a2ffc0d2cf4352bb1ced5a2a6865609bb6c..2a027be5d77185dfa12558f21dd69a955a341c12 100644 --- a/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of participation deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to delete the selected pledges? This delete operation cannot be undone and will delete all transactions associated with these pledges.{/ts}</p> <p>{include file="CRM/Pledge/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl b/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl index a9a5995533bea2b2276db68a2a27307328efeb61..32d88291006d90d1b839dddfb50e5f46a172d39b 100644 --- a/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl index d75e3879d28538eec592f7c579d4ad1de7cab399..7bf90eecb09d6a79fb3abde70a5e5a6f8de94073 100644 --- a/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl @@ -30,7 +30,7 @@ {else} <div class="messages status no-popup"> - <dt><div class="icon inform-icon"></div> + <dt>{icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </dl> </div> diff --git a/civicrm/templates/CRM/Pledge/Page/Tab.tpl b/civicrm/templates/CRM/Pledge/Page/Tab.tpl index 38740278c9f3e8d61a6b1cb6309c9a4e3313b0d3..98e5a5c622290d449ec1f9111304a13609b7b6e8 100644 --- a/civicrm/templates/CRM/Pledge/Page/Tab.tpl +++ b/civicrm/templates/CRM/Pledge/Page/Tab.tpl @@ -36,7 +36,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No pledges have been recorded from this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl index f67db5d0311e84f4c657f53feceb4d7102316efa..97ff8596d2d9f2f463a23d81fc3af3788db4e99d 100644 --- a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl @@ -45,7 +45,7 @@ {crmScript file='js/crm.expandRow.js'} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no Pledges for your record.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Price/Form/Calculate.tpl b/civicrm/templates/CRM/Price/Form/Calculate.tpl index 153fb4af448f55dd3c88ba8d4910b9b48b5a95f6..2c6c7c039555d306c683f928badac402d6e5b7a3 100644 --- a/civicrm/templates/CRM/Price/Form/Calculate.tpl +++ b/civicrm/templates/CRM/Price/Form/Calculate.tpl @@ -157,7 +157,7 @@ function display(totalfee) { // totalfee is monetary, round it to 2 decimal points so it can // go as a float - CRM-13491 totalfee = Math.round(totalfee*100)/100; - var totalFormattedFee = CRM.formatMoney(totalfee); + var totalFormattedFee = symbol + ' ' + CRM.formatMoney(totalfee, true); cj('#pricevalue').html(totalFormattedFee); cj('#total_amount').val( totalfee ); diff --git a/civicrm/templates/CRM/Price/Form/DeleteField.tpl b/civicrm/templates/CRM/Price/Form/DeleteField.tpl index 236f1125dc311b7c2b4f1bee35cec38d1f0a4944..3259d4d282a5250070595c4b9dfb819c5129638a 100644 --- a/civicrm/templates/CRM/Price/Form/DeleteField.tpl +++ b/civicrm/templates/CRM/Price/Form/DeleteField.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a Fields *} <div class="crm-block crm-form-block crm-price_field_delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}WARNING: Deleting this price field will result in the loss of all '%1' data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> diff --git a/civicrm/templates/CRM/Price/Form/Option.tpl b/civicrm/templates/CRM/Price/Form/Option.tpl index e65c52bd7939f163b9df0d7818fd0b11029fbabf..18b72acd55d3ab744019d3fcf918f0c736039f6f 100644 --- a/civicrm/templates/CRM/Price/Form/Option.tpl +++ b/civicrm/templates/CRM/Price/Form/Option.tpl @@ -10,7 +10,7 @@ <div class="crm-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Price/Form/PriceSet.tpl b/civicrm/templates/CRM/Price/Form/PriceSet.tpl index e41bdb7b1ef503a5a18acf2bbb8fa22cd2497f63..f2b56eb2b6ed34c2b3fd88ef594beb0c7cfb46bb 100644 --- a/civicrm/templates/CRM/Price/Form/PriceSet.tpl +++ b/civicrm/templates/CRM/Price/Form/PriceSet.tpl @@ -16,6 +16,13 @@ {assign var='adminFld' value=false} {if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') } {assign var='adminFld' value=true} + {if $priceSet.id && !$priceSet.is_quick_config} + <div class='float-right'> + <a class="crm-hover-button" target="_blank" href="{crmURL p="civicrm/admin/price/field" q="reset=1&action=browse&sid=`$priceSet.id`" fb=1}"> + {icon icon="fa-wrench"}{ts}Edit Price Set{/ts}{/icon} + </a> + </div> + {/if} {/if} {foreach from=$priceSet.fields item=element key=field_id} diff --git a/civicrm/templates/CRM/Price/Page/Field.tpl b/civicrm/templates/CRM/Price/Page/Field.tpl index 9a3b9e1add88c4e4ba7b2a46bfd9d1ca0d4f2704..88ec508d58c9d1df04ae5f488a6da3d8627aebdd 100644 --- a/civicrm/templates/CRM/Price/Page/Field.tpl +++ b/civicrm/templates/CRM/Price/Page/Field.tpl @@ -15,7 +15,7 @@ {include file="CRM/Price/Form/Preview.tpl"} {elseif ($usedBy and $action eq 8) or $usedBy.civicrm_event or $usedBy.civicrm_contribution_page} <div id="price_set_used_by" class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts 1=$usedPriceSetTitle}Unable to delete the '%1' Price Field - it is currently in use by one or more active events or contribution pages or contributions or event templates.{/ts} {/if} @@ -89,7 +89,7 @@ {else} {if $action eq 16} <div class="messages status no-popup crm-empty-table"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/Price/Page/Option.tpl b/civicrm/templates/CRM/Price/Page/Option.tpl index 22f82229a419147ca6c31249985a95f4ab93461c..0f4a5b079ae6fc3354d8c4889342cdb0b47c61c2 100644 --- a/civicrm/templates/CRM/Price/Page/Option.tpl +++ b/civicrm/templates/CRM/Price/Page/Option.tpl @@ -13,7 +13,7 @@ {elseif $usedBy} <div class='spacer'></div> <div id="price_set_used_by" class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts 1=$usedPriceSetTitle}Unable to delete the '%1' Price Field Option - it is currently in use by one or more active events or contribution pages or contributions.{/ts} {/if} diff --git a/civicrm/templates/CRM/Price/Page/Set.tpl b/civicrm/templates/CRM/Price/Page/Set.tpl index d57b2e437a25d3de939d995fb203c25712e78045..e145781fe9ac1aa7ecda1c21313e96b8cccf5624 100644 --- a/civicrm/templates/CRM/Price/Page/Set.tpl +++ b/civicrm/templates/CRM/Price/Page/Set.tpl @@ -21,7 +21,7 @@ {if $usedBy} <div class='spacer'></div> <div id="price_set_used_by" class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts 1=$usedPriceSetTitle}Unable to delete the '%1' price set - it is currently in use by one or more active events or contribution pages or contributions or event templates.{/ts} {/if} diff --git a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl index 206ec5444d68e2f5e1c1861eb0fb18950e6018a8..2d0240fb886bb3f1ad93a97671dc7f714daa73a0 100644 --- a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl +++ b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl @@ -14,7 +14,7 @@ cms account edit (mode=8) or civicrm/profile (mode=4) pages *} {if $deleteRecord} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this record?{/ts} </div> @@ -203,8 +203,10 @@ {if ($action eq 1 and $mode eq 4 ) or ($action eq 2) or ($action eq 8192)} {if $action eq 2 and $multiRecordFieldListing} - {include file="CRM/Profile/Page/MultipleRecordFieldsListing.tpl" showListing=true} - {assign var=floatStyle value='float:right'} + <div class="crm-multi-record-custom-field-listing"> + {include file="CRM/Profile/Page/MultipleRecordFieldsListing.tpl" showListing=true} + {assign var=floatStyle value='float:right'} + </div> {/if} <div class="crm-submit-buttons" style='{$floatStyle}'> {include file="CRM/common/formButtons.tpl"}{if $isDuplicate}<span class="crm-button">{$form._qf_Edit_upload_duplicate.html}</span>{/if} @@ -250,7 +252,7 @@ invert = 0 } {elseif $statusMessage} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$statusMessage} </div> {/if} diff --git a/civicrm/templates/CRM/Profile/Form/Search.tpl b/civicrm/templates/CRM/Profile/Form/Search.tpl index d09429a17a30ec3ff021d265e4e43e68b810edae..0b093ea4504798e77fa6334a8024d2df5db49ef4 100644 --- a/civicrm/templates/CRM/Profile/Form/Search.tpl +++ b/civicrm/templates/CRM/Profile/Form/Search.tpl @@ -85,12 +85,12 @@ {elseif $statusMessage} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$statusMessage} </div> {else} {* empty fields *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No fields in this Profile have been configured as searchable. Ask the site administrator to check the Profile setup.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Profile/Page/Listings.tpl b/civicrm/templates/CRM/Profile/Page/Listings.tpl index bd02d534e232b5615cedcc118df4e56e323da41c..e3b3e23becb9212593217498cc6245aefa433c3d 100644 --- a/civicrm/templates/CRM/Profile/Page/Listings.tpl +++ b/civicrm/templates/CRM/Profile/Page/Listings.tpl @@ -77,7 +77,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No fields in this Profile have been configured to display as a result column in the search results table. Ask the site administrator to check the Profile setup.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl b/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl index bd740966b6c2819479df69a42cb52e6437ad0e19..dc185e6d1d97a9a0da52a6570d9f72472f6cb1ea 100644 --- a/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl +++ b/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl @@ -91,7 +91,7 @@ <div id='{$dialogId}' class="hiddenElement"></div> {elseif !$records} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$customGroupTitle}No records of type '%1' found.{/ts} </div> diff --git a/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl b/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl index 79f2c59f1062814f83d4c4f942de899017841a72..800544e8edfda7b91ba9ecd5c9886280d225a48c 100644 --- a/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl +++ b/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl @@ -9,6 +9,6 @@ *} {if $outputMode eq 'html' && !$rows} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}None found.{/ts} + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl index 09a31e218ec6c4e372dfcbb1054e2b75e7d19c03..4e0c9c2401d0edfd4bd72143a86f6e8a114354f9 100644 --- a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl +++ b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl @@ -136,7 +136,11 @@ {foreach from=$columnHeaders item=header key=field} <td class="report-label"> {if $header.type eq 1024} - {$grandStat.$field|crmMoney} + {if $currencyColumn} + {$grandStat.$field|crmMoney:$row.$currencyColumn} + {else} + {$grandStat.$field|crmMoney} + {/if} {else} {$grandStat.$field} {/if} diff --git a/civicrm/templates/CRM/Report/Form/Register.tpl b/civicrm/templates/CRM/Report/Form/Register.tpl index 15f9ce53a22b386422d04f828e4eaa5999a24ef7..49f8ff0d5c741f885cd140dc14eb3d3bf498d4ba 100644 --- a/civicrm/templates/CRM/Report/Form/Register.tpl +++ b/civicrm/templates/CRM/Report/Form/Register.tpl @@ -25,7 +25,7 @@ <tr> <td colspan=2> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all Report related records which use the option. This may mean the loss of a substantial amount of data, and the action cannot be undone. Do you want to continue?{/ts} </div> </td> diff --git a/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl b/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl index 5f77291455217c5c27c0461bc3386a626470a590..c53b7f579ff1df8decbf758430383103d0d2a898 100644 --- a/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl +++ b/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl @@ -13,11 +13,11 @@ <tr class="crm-report crm-report-criteria-groupby"> {foreach from=$groupByElements item=gbElem key=dnc} {assign var="count" value=`$count+1`} - <td width="25%" {if $form.fields.$gbElem}"{/if}> - {$form.group_bys[$gbElem].html} - {if $form.group_bys_freq[$gbElem].html}:<br> - {$form.group_bys_freq[$gbElem].label} {$form.group_bys_freq[$gbElem].html} - {/if} + <td width="25%"> + {$form.group_bys[$gbElem].html} + {if $form.group_bys_freq[$gbElem].html}:<br> + {$form.group_bys_freq[$gbElem].label} {$form.group_bys_freq[$gbElem].html} + {/if} </td> {if $count is div by 4} </tr><tr class="crm-report crm-report-criteria-groupby"> diff --git a/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp b/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp index 64326f486500702aa4f2dfdc016858cbc8e4d09e..acd4388f08f92dd8240c5cf1dd5ab65b17561044 100644 --- a/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp +++ b/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp @@ -15,7 +15,7 @@ {ts}A copy of this report can be automatically generated and delivered via email to specified recipients. Use the settings in this section to control Subject of the email containing the report, as well as the recipient list (To and Cc fields). Separate multiple 'To' or 'CC' email addresses with commas.{/ts} </p> <p> - {ts}Your site administrator will need to setup an instance of the Scheduled Job "Mail Reports" to trigger creation and delivery of each report. When invoked, this job will deliver email to the recipients specified for the report. The report can be attached to the email as a PDF file (default), as a CSV file, or included in HTML format.{/ts} {docURL page="Managing Scheduled Jobs" resource="wiki"} + {ts}Your site administrator will need to setup an instance of the Scheduled Job "Mail Reports" to trigger creation and delivery of each report. When invoked, this job will deliver email to the recipients specified for the report. The report can be attached to the email as a PDF file (default), as a CSV file, or included in HTML format.{/ts} {docURL page="user/initial-set-up/scheduled-jobs"} </p> {/htxt} diff --git a/civicrm/templates/CRM/Report/Page/InstanceList.tpl b/civicrm/templates/CRM/Report/Page/InstanceList.tpl index 354edd5444ff91c8cb26eddaa2445ff7425e290e..1727e199071561a4de6633c15a66fcce8c106b79 100644 --- a/civicrm/templates/CRM/Report/Page/InstanceList.tpl +++ b/civicrm/templates/CRM/Report/Page/InstanceList.tpl @@ -64,7 +64,7 @@ {else} <div class="crm-content-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $myReports} {ts}You do not have any private reports. To add a report to this section, edit the Report Settings for a report and set 'Add to My Reports' to Yes.{/ts} {else} diff --git a/civicrm/templates/CRM/Report/Page/TemplateList.tpl b/civicrm/templates/CRM/Report/Page/TemplateList.tpl index 497157d07432908dc46cc7300a061f8642a198bb..fe677c0dd79aa497558256dca37625641230c6ea 100644 --- a/civicrm/templates/CRM/Report/Page/TemplateList.tpl +++ b/civicrm/templates/CRM/Report/Page/TemplateList.tpl @@ -46,7 +46,7 @@ {/foreach} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}There are currently no Report Templates.{/ts} + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no Report Templates.{/ts} </div> {/if} {/strip} diff --git a/civicrm/templates/CRM/SMS/Form/Group.tpl b/civicrm/templates/CRM/SMS/Form/Group.tpl index da6aa95bfb3b93c41967754c50e20b92d821834c..2ce5486d8c75d96b3c9557c023c64dfeb506324b 100644 --- a/civicrm/templates/CRM/SMS/Form/Group.tpl +++ b/civicrm/templates/CRM/SMS/Form/Group.tpl @@ -9,7 +9,7 @@ *} {if $groupCount == 0 and $mailingCount == 0} <div class="status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}To send a Mass SMS, you must have a valid group of recipients - either at least one group that's a Mailing List{/ts} </div> {else} diff --git a/civicrm/templates/CRM/SMS/Form/Provider.tpl b/civicrm/templates/CRM/SMS/Form/Provider.tpl index 7995a794b7474caa776519487a7f29ee357eff9f..183d5a20c06770219a79ca6cd14ded1f075d2c7b 100644 --- a/civicrm/templates/CRM/SMS/Form/Provider.tpl +++ b/civicrm/templates/CRM/SMS/Form/Provider.tpl @@ -13,12 +13,12 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Do you want to continue?{/ts} </div> {elseif $action eq 128} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you would like to execute this job?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/SMS/Page/Provider.tpl b/civicrm/templates/CRM/SMS/Page/Provider.tpl index 3d25551c634b2619224493a8a295d96d7a2d1c19..9a9deac2c2a177da4e601cc9d6bd0150ca8a5ea1 100644 --- a/civicrm/templates/CRM/SMS/Page/Provider.tpl +++ b/civicrm/templates/CRM/SMS/Page/Provider.tpl @@ -10,9 +10,8 @@ {if $action eq 1 or $action eq 2 or $action eq 8} {include file="CRM/SMS/Form/Provider.tpl"} {else} - {capture assign=wikiLink}{docURL page="Setting up a SMS Provider for CiviSMS" text="(How to add a SMS Provider)" resource="wiki"}{/capture} <div class="help"> - {ts}You can configure one or more SMS Providers for your CiviCRM installation. To learn more about the procedure to install SMS extension and Provider, refer{/ts} {$wikiLink} + {ts}You can configure one or more SMS Providers for your CiviCRM installation.{/ts} {docURL page="user/sms-text-messaging/set-up"} </div> <div class="crm-content-block crm-block"> @@ -47,7 +46,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/UF/Form/Field.tpl b/civicrm/templates/CRM/UF/Form/Field.tpl index 447732e86790cf1f3eeda4cf8a98b9caa750625a..83a5056f7a06d3a38ef33b46695307dbcef1c15b 100644 --- a/civicrm/templates/CRM/UF/Form/Field.tpl +++ b/civicrm/templates/CRM/UF/Form/Field.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-uf-field-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this profile field will remove it from Profile forms and listings. If this field is used in any 'stand-alone' Profile forms, you will need to update those forms to remove this field.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/UF/Form/Group.tpl b/civicrm/templates/CRM/UF/Form/Group.tpl index 77a8c35d5853496843cd2e5299b521d9cb04fbcc..24c97000be23873404f39b3068c6a8f9d178a17f 100644 --- a/civicrm/templates/CRM/UF/Form/Group.tpl +++ b/civicrm/templates/CRM/UF/Form/Group.tpl @@ -25,7 +25,7 @@ {if $action eq 8 or $action eq 64} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$message} </div> {else} diff --git a/civicrm/templates/CRM/UF/Page/Field.tpl b/civicrm/templates/CRM/UF/Page/Field.tpl index 6c90c9482a273626f190107888d8a6c5b5b3477d..75229e7bc671a4f928b6227772b097563503f128 100644 --- a/civicrm/templates/CRM/UF/Page/Field.tpl +++ b/civicrm/templates/CRM/UF/Page/Field.tpl @@ -70,7 +70,7 @@ {if $action eq 16} {capture assign=crmURL}{crmURL p="civicrm/admin/uf/group/field/add" q="reset=1&action=add&gid=$gid"}{/capture} <div class="messages status no-popup crm-empty-table"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/UF/Page/Group.tpl b/civicrm/templates/CRM/UF/Page/Group.tpl index eb25d0e9b73f10cb2ce39299bcd8451d04a11729..d77ffdede5b624e5347b9f15fcd6a83c3e4b13a5 100644 --- a/civicrm/templates/CRM/UF/Page/Group.tpl +++ b/civicrm/templates/CRM/UF/Page/Group.tpl @@ -147,7 +147,7 @@ {else} {if $action ne 1} {* When we are adding an item, we should not display this message *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/admin/uf/group/add' q='action=add&reset=1'}{/capture}{ts 1=$crmURL}No CiviCRM Profiles have been created yet. You can <a href='%1'>add one now</a>.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/common/civicrm.settings.php.template b/civicrm/templates/CRM/common/civicrm.settings.php.template index 28102ccd78ea53dcb0d82a2282db83214304073d..46ed344835d7c5594701862e047c5dc55f7826e7 100644 --- a/civicrm/templates/CRM/common/civicrm.settings.php.template +++ b/civicrm/templates/CRM/common/civicrm.settings.php.template @@ -294,7 +294,7 @@ if (!defined('CIVICRM_UF_BASEURL')) { * If you are using any CiviCRM script in the bin directory that * requires authentication, then you also need to set this key. * We recommend using a 16-32 bit alphanumeric/punctuation key. - * More info at http://wiki.civicrm.org/confluence/display/CRMDOC/Command-line+Script+Configuration + * More info at https://docs.civicrm.org/sysadmin/en/latest/setup/site-key/ */ if (!defined('CIVICRM_SITE_KEY')) { define( 'CIVICRM_SITE_KEY', '%%siteKey%%'); @@ -449,7 +449,7 @@ if (!defined('CIVICRM_PSR16_STRICT')) { * # dpkg-reconfigure locales * * For more information: - * http://wiki.civicrm.org/confluence/x/YABFBQ + * https://lab.civicrm.org/dev/translation/-/wikis/Administrator-Guide#native-gettext */ // if (!defined('CIVICRM_GETTEXT_NATIVE')) { // define('CIVICRM_GETTEXT_NATIVE', 1); @@ -472,12 +472,6 @@ define('CIVICRM_DEADLOCK_RETRIES', 3); // define('CIVICRM_MYSQL_STRICT', TRUE ); // } -/** - * Specify whether the CRM_Core_BAO_Cache should use the legacy - * direct-to-SQL-mode or the interim PSR-16 adapter. - */ -// define('CIVICRM_BAO_CACHE_ADAPTER', 'CRM_Core_BAO_Cache_Psr16'); - if (CIVICRM_UF === 'UnitTests') { if (!defined('CIVICRM_CONTAINER_CACHE')) define('CIVICRM_CONTAINER_CACHE', 'auto'); if (!defined('CIVICRM_MYSQL_STRICT')) define('CIVICRM_MYSQL_STRICT', true); @@ -502,6 +496,27 @@ if (CIVICRM_UF === 'UnitTests') { // define('CIVICRM_LOG_ROTATESIZE', 0 ); // } +/** + * Which directories should we exclude when scanning the codebase for things + * like extension .info files, or .html partials or .xml files etc. This needs + * to be a valid preg_match() pattern. + * + * If you do not define it, a pattern that excludes dirs starting with a dot is + * used, e.g. to exclude .git/). Adding suitable patterns here can vastly speed + * up your container rebuilds and cache flushes. The pattern is matched against + * the absolute path. Remember to use your system's DIRECTORY_SEPARATOR the + * examples below assume / + * + * Example: This excludes node_modules (can be huge), various CiviCRM dirs that + * are unlikely to have anything we need to scan inside, and (what could be + * your) Drupal's private file storage area. + * + * '@/(\.|node_modules|js/|css/|bower_components|packages/|vendor/|sites/default/files/private)@' + */ +// if (!defined('CIVICRM_EXCLUDE_DIRS_PATTERN')) { +// define('CIVICRM_EXCLUDE_DIRS_PATTERN', '@/\.@'); +// } + /** * * Do not change anything below this line. Keep as is diff --git a/civicrm/templates/CRM/common/info.tpl b/civicrm/templates/CRM/common/info.tpl index aa000e5790e8e2f766fd594484f9852e5cd9f7cc..de02a23e78fe95cbc8e6a0d9c83bbda4b3d78b0c 100644 --- a/civicrm/templates/CRM/common/info.tpl +++ b/civicrm/templates/CRM/common/info.tpl @@ -8,9 +8,9 @@ +--------------------------------------------------------------------+ *} {* Handles display of passed $infoMessage. *} -{if $infoMessage} +{if $infoMessage or $infoTitle} <div class="messages status {$infoType}"{if $infoOptions} data-options='{$infoOptions}'{/if}> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <span class="msg-title">{$infoTitle}</span> <span class="msg-text">{$infoMessage}</span> </div> diff --git a/civicrm/templates/CRM/common/l10n.js.tpl b/civicrm/templates/CRM/common/l10n.js.tpl index bba775f40a56419549d40d3d61cb88067a58f1f6..f6eec45ea639be217183bad72b124618e2ede8ca 100644 --- a/civicrm/templates/CRM/common/l10n.js.tpl +++ b/civicrm/templates/CRM/common/l10n.js.tpl @@ -96,7 +96,15 @@ errorClass: 'crm-inline-error alert-danger', messages: {}, ignore: '.select2-offscreen, [readonly], :hidden:not(.crm-select2), .crm-no-validate', - ignoreTitle: true + ignoreTitle: true, + errorPlacement: function(error, element) { + if (element.prop('type') === 'radio') { + error.appendTo(element.parent('div.content')); + } + else { + error.insertAfter(element); + } + } }; // use civicrm notifications when there are errors diff --git a/civicrm/templates/CRM/common/success.tpl b/civicrm/templates/CRM/common/success.tpl index a1fbfb37023960e0d5969ddf6e34a43cdf150e42..14ca9873a9fdcb41c399a5a768bdc869f1212bff 100644 --- a/civicrm/templates/CRM/common/success.tpl +++ b/civicrm/templates/CRM/common/success.tpl @@ -26,8 +26,7 @@ </div> {/if} <p><strong>{ts}Back up your database before continuing.{/ts}</strong> - {capture assign=docLink}{docURL page="Installation and Upgrades" text="Upgrade Documentation" style="text-decoration: underline;" resource="wiki"}{/capture} - {ts 1=$docLink}This process may change your database structure and values. In case of emergency you may need to revert to a backup. For more detailed information, refer to the %1.{/ts}</p> + {ts}This process may change your database structure and values. In case of emergency you may need to revert to a backup.{/ts} {docURL page="sysadmin/upgrade"}</p> <input type="hidden" name="action" value="begin" /> <button type="submit" class="crm-button" name="upgrade" onclick="return confirm('{ts escape="js"}Are you sure you are ready to upgrade now?{/ts}');" > <i class="crm-i fa-rocket" aria-hidden="true"></i> diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index f415eb7639643cbd06445ce3661aa462c1b50a7c..c3e3e239b7a4853c801a87722f21bebdfb5a761e 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7::getLoader(); +return ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840::getLoader(); diff --git a/civicrm/vendor/composer/autoload_classmap.php b/civicrm/vendor/composer/autoload_classmap.php index 00e85ad0837c93deaf8a8225f4f6757ec999aa6d..f2352a7a109322e6848839d696fa9cf7f55aca77 100644 --- a/civicrm/vendor/composer/autoload_classmap.php +++ b/civicrm/vendor/composer/autoload_classmap.php @@ -12,10 +12,10 @@ return array( 'CallbackParameterToReference' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnReference' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnValue' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', - 'Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php', 'DOMDocumentWrapper' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/DOMDocumentWrapper.php', 'DOMEvent' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/DOMEvent.php', 'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', + 'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php', 'HTML5_Data' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Data.php', 'HTML5_InputStream' => $vendorDir . '/dompdf/dompdf/lib/html5lib/InputStream.php', 'HTML5_Parser' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Parser.php', diff --git a/civicrm/vendor/composer/autoload_namespaces.php b/civicrm/vendor/composer/autoload_namespaces.php index 2fc96bee6aa518d97cc73862de3680930d55d9a8..7ae201cfc1de7e83bbeb32dad0dfd6134707c1fc 100644 --- a/civicrm/vendor/composer/autoload_namespaces.php +++ b/civicrm/vendor/composer/autoload_namespaces.php @@ -13,7 +13,7 @@ return array( 'PHPUnit_' => array($baseDir . '/packages'), 'Net' => array($vendorDir . '/phpseclib/phpseclib/phpseclib', $vendorDir . '/pear/net_socket', $vendorDir . '/pear/net_smtp'), 'Math' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), - 'Mail' => array($vendorDir . '/pear/mail'), + 'Mail' => array($vendorDir . '/pear/mail', $vendorDir . '/pear/mail_mime'), 'Log' => array($vendorDir . '/pear/log'), 'File' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), 'Dflydev\\ApacheMimeTypes' => array($vendorDir . '/dflydev/apache-mime-types/src'), diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index f5102f8df3891b53c643927161cff172c6ab9ad2..6775052330e351b974b92c8825757a16e9fadb58 100644 --- a/civicrm/vendor/composer/autoload_real.php +++ b/civicrm/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 +class ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840 { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); @@ -31,7 +31,7 @@ class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit191eca689b99b98f3334e35c02d03840::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -52,19 +52,19 @@ class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit191eca689b99b98f3334e35c02d03840::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire5d1590a84317c7221c13a6c8764590a7($fileIdentifier, $file); + composerRequire191eca689b99b98f3334e35c02d03840($fileIdentifier, $file); } return $loader; } } -function composerRequire5d1590a84317c7221c13a6c8764590a7($fileIdentifier, $file) +function composerRequire191eca689b99b98f3334e35c02d03840($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php index 4c1f88db3c0f47610758696cff1627700a2b62da..072ec1603e9580f05d30c6212b2c867eebfd7645 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 +class ComposerStaticInit191eca689b99b98f3334e35c02d03840 { public static $files = array ( '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', @@ -323,6 +323,7 @@ class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 'Mail' => array ( 0 => __DIR__ . '/..' . '/pear/mail', + 1 => __DIR__ . '/..' . '/pear/mail_mime', ), ), 'L' => @@ -389,10 +390,10 @@ class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 'CallbackParameterToReference' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnReference' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnValue' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', - 'Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php', 'DOMDocumentWrapper' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/DOMDocumentWrapper.php', 'DOMEvent' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/DOMEvent.php', 'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', + 'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php', 'HTML5_Data' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Data.php', 'HTML5_InputStream' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/InputStream.php', 'HTML5_Parser' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Parser.php', @@ -530,11 +531,11 @@ class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$fallbackDirsPsr0; - $loader->classMap = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$prefixesPsr0; + $loader->fallbackDirsPsr0 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$fallbackDirsPsr0; + $loader->classMap = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/include_paths.php b/civicrm/vendor/composer/include_paths.php index 4d5058c529af2f03d3906bdae8f9739ff6cf92da..975aca43d6419a59bc93ddc76ac23ef9e94e23d5 100644 --- a/civicrm/vendor/composer/include_paths.php +++ b/civicrm/vendor/composer/include_paths.php @@ -14,6 +14,7 @@ return array( $vendorDir . '/pear/console_getopt', $vendorDir . '/pear/pear-core-minimal/src', $vendorDir . '/pear/mail', + $vendorDir . '/pear/mail_mime', $vendorDir . '/pear/net_socket', $vendorDir . '/pear/net_smtp', $vendorDir . '/pear/validate_finance_creditcard', diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json index 4702aa1520bc78bad48dc18da3dbb60cff069216..3c2cfe85bd84f58e6da16f62683e9d8ca2ebb613 100644 --- a/civicrm/vendor/composer/installed.json +++ b/civicrm/vendor/composer/installed.json @@ -460,36 +460,36 @@ }, { "name": "dompdf/dompdf", - "version": "v0.8.3", - "version_normalized": "0.8.3.0", + "version": "v0.8.5", + "version_normalized": "0.8.5.0", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2" + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/75f13c700009be21a1965dc2c5b68a8708c22ba2", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*", - "php": ">=5.4.0" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", "ext-gmagick": "Improves image processing performance", "ext-imagick": "Improves image processing performance" }, - "time": "2018-12-14T02:40:31+00:00", + "time": "2020-02-20T03:52:51+00:00", "type": "library", "extra": { "branch-alias": { @@ -1149,6 +1149,59 @@ "description": "Class that provides multiple interfaces for sending emails.", "homepage": "http://pear.php.net/package/Mail" }, + { + "name": "pear/mail_mime", + "version": "1.10.9", + "version_normalized": "1.10.9.0", + "source": { + "type": "git", + "url": "https://github.com/pear/Mail_Mime.git", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/Mail_Mime/zipball/1e7ae4e5258b6c0d385a8e76add567934245d38d", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d", + "shasum": "" + }, + "require": { + "pear/pear-core-minimal": "*" + }, + "time": "2020-06-27T08:35:27+00:00", + "type": "library", + "extra": { + "patches_applied": { + "Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821": "https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Mail": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-3-clause" + ], + "authors": [ + { + "name": "Cipriano Groenendal", + "email": "cipri@php.net", + "role": "Lead" + }, + { + "name": "Aleksander Machniak", + "email": "alec@php.net", + "role": "Lead" + } + ], + "description": "Mail_Mime provides classes to create MIME messages", + "homepage": "http://pear.php.net/package/Mail_Mime" + }, { "name": "pear/net_smtp", "version": "1.9.0", @@ -1422,23 +1475,23 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5", - "version_normalized": "0.5.0.0", + "version": "0.5.2", + "version_normalized": "0.5.2.0", "source": { "type": "git", "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962" + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/19ad2bebc35be028fcc0221025fcbf3d436a3962", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8", "shasum": "" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" }, - "time": "2017-02-11T10:58:43+00:00", + "time": "2020-03-08T15:31:32+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2072,17 +2125,17 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.3.0", - "version_normalized": "8.3.0.0", + "version": "8.3.1", + "version_normalized": "8.3.1.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796", "shasum": "" }, "require": { @@ -2092,7 +2145,7 @@ "codacy/coverage": "^1.4", "phpunit/phpunit": "~4.8" }, - "time": "2019-02-22T07:42:52+00:00", + "time": "2020-06-01T09:10:00+00:00", "type": "library", "installation-source": "dist", "autoload": { diff --git a/civicrm/vendor/dompdf/dompdf/README.md b/civicrm/vendor/dompdf/dompdf/README.md index 9f0e6ca3de1a287701e90425d5c6fbf02075c596..0c69c8d4155a0e0235b6e063935dd4b1d518cd28 100644 --- a/civicrm/vendor/dompdf/dompdf/README.md +++ b/civicrm/vendor/dompdf/dompdf/README.md @@ -25,8 +25,7 @@ release. For released code please question on [StackOverflow](http://stackoverflow.com/questions/tagged/dompdf) or on the [Google Groups](http://groups.google.com/group/dompdf).** -Follow us on [](http://www.twitter.com/dompdf) or -[](https://plus.google.com/108710008521858993320?prsrc=3). +Follow us on [](http://www.twitter.com/dompdf). --- @@ -48,16 +47,18 @@ Follow us on []( ## Requirements - * PHP version 5.4.0 or higher + * PHP version 7.1 or higher * DOM extension - * GD extension * MBString extension * php-font-lib * php-svg-lib + +Note that some required dependencies may have further dependencies (notably php-svg-lib requires sabberworm/php-css-parser). ### Recommendations * OPcache (OPcache, XCache, APC, etc.): improves performance + * GD (for image processing) * IMagick or GMagick extension: improves image processing performance Visit the wiki for more information: @@ -74,7 +75,7 @@ reference in CSS @font-face rules. See the [font overview](https://github.com/dompdf/dompdf/wiki/About-Fonts-and-Character-Encoding) for more information on how to use fonts. -The [DejaVu TrueType fonts](http://dejavu-fonts.org) have been pre-installed +The [DejaVu TrueType fonts](https://dejavu-fonts.github.io/) have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. `body { font-family: DejaVu Sans; }` (for DejaVu Sans). The following DejaVu 2.34 fonts are available: @@ -102,8 +103,9 @@ require 'vendor/autoload.php'; ### Download and install -Download an archive of dompdf and extract it into the directory where dompdf -will reside +Download a packaged archive of dompdf and extract it into the +directory where dompdf will reside + * You can download stable copies of dompdf from https://github.com/dompdf/dompdf/releases * Or download a nightly (the latest, unreleased code) from @@ -117,35 +119,38 @@ and helper functions in your PHP: require_once 'dompdf/autoload.inc.php'; ``` +Note: packaged releases are named according using semantic +versioning (_dompdf_MAJOR-MINOR-PATCH.zip_). So the 1.0.0 +release would be dompdf_1-0-0.zip. This is the only download +that includes the autoloader for Dompdf and all its dependencies. + ### Install with git -From the command line, switch to the directory where dompdf will reside and run -the following commands: +From the command line, switch to the directory where dompdf will +reside and run the following commands: ```sh git clone https://github.com/dompdf/dompdf.git -cd dompdf +cd dompdf/lib -git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib -cd lib/php-font-lib +git clone https://github.com/PhenX/php-font-lib.git php-font-lib +cd php-font-lib git checkout 0.5.1 cd .. git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib cd php-svg-lib -git checkout v0.3 -``` - -Require dompdf, libraries, and helper functions in your PHP: +git checkout v0.3.2 +cd .. -```php -require_once 'dompdf/lib/html5lib/Parser.php'; -require_once 'dompdf/lib/php-font-lib/src/FontLib/Autoloader.php'; -require_once 'dompdf/lib/php-svg-lib/src/autoload.php'; -require_once 'dompdf/src/Autoloader.php'; -Dompdf\Autoloader::register(); +git clone https://github.com/sabberworm/PHP-CSS-Parser.git php-css-parser +cd php-css-parser +git checkout 8.1.0 ``` +Require dompdf and it's dependencies in your PHP. +For details see the [autoloader in the utils project](https://github.com/dompdf/utils/blob/master/autoload.inc.php). + ## Quick Start Just pass your HTML in to dompdf and stream the output: @@ -201,8 +206,8 @@ See [Dompdf\Options](src/Options.php) for a list of available options. or run your HTML through a HTML validator/cleaner (such as [Tidy](http://tidy.sourceforge.net) or the [W3C Markup Validation Service](http://validator.w3.org)). - * Large files or large tables can take a while to render. - * CSS float is in development and may not produce the desired result + * Table cells are not pageable, meaning a table row must fit on a single page. + * Elements are rendered on the active page when they are parsed. --- diff --git a/civicrm/vendor/dompdf/dompdf/VERSION b/civicrm/vendor/dompdf/dompdf/VERSION index d9f4c298516790c23f5717aba0f9ac6c3e3386da..6530b07e3ba0eecb2b794979bcdb197622f9040b 100644 --- a/civicrm/vendor/dompdf/dompdf/VERSION +++ b/civicrm/vendor/dompdf/dompdf/VERSION @@ -1 +1 @@ -<75f13c70> \ No newline at end of file +<6782abfc> \ No newline at end of file diff --git a/civicrm/vendor/dompdf/dompdf/composer.json b/civicrm/vendor/dompdf/dompdf/composer.json index ad6481850c0ac4b3792dc5f8f960398a2ce53e40..ef0fe35282ed313660cf51d2cb943a2f2e78b008 100644 --- a/civicrm/vendor/dompdf/dompdf/composer.json +++ b/civicrm/vendor/dompdf/dompdf/composer.json @@ -19,21 +19,23 @@ } ], "autoload": { - "psr-4" : { - "Dompdf\\" : "src/" + "psr-4": { + "Dompdf\\": "src/" }, - "classmap" : ["lib/"] + "classmap": [ + "lib/" + ] }, "require": { - "php": ">=5.4.0", + "php": "^7.1", "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", diff --git a/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php b/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php index 7748d4f1599a98a92370b73ec4996ca24ec077dd..014895b8d07a271c85e4df137f1db3c0c91c816c 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php +++ b/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php @@ -15,6 +15,9 @@ * @license Public Domain http://creativecommons.org/licenses/publicdomain/ * @package Cpdf */ + +namespace Dompdf; + use FontLib\Font; use FontLib\BinaryStream; @@ -29,7 +32,7 @@ class Cpdf /** * @var array This array contains all of the pdf objects, ready for final assembly */ - public $objects = array(); + public $objects = []; /** * @var integer The objectId (number within the objects array) of the document catalog @@ -40,7 +43,7 @@ class Cpdf * @var array Array carrying information about the fonts that the system currently knows about * Used to ensure that a font is not loaded twice, among other things */ - public $fonts = array(); + public $fonts = []; /** * @var string The default font metrics file to use if no other font has been loaded. @@ -91,7 +94,7 @@ class Cpdf /** * @var array Number of graphic state resources used */ - private $gstates = array(); + private $gstates = []; /** * @var array Current color for fill operations, defaults to inactive value, @@ -117,18 +120,18 @@ class Cpdf /** * @var array Current line transparency (partial graphics state) */ - public $currentLineTransparency = array("mode" => "Normal", "opacity" => 1.0); + public $currentLineTransparency = ["mode" => "Normal", "opacity" => 1.0]; /** * array Current fill transparency (partial graphics state) */ - public $currentFillTransparency = array("mode" => "Normal", "opacity" => 1.0); + public $currentFillTransparency = ["mode" => "Normal", "opacity" => 1.0]; /** * @var array An array which is used to save the state of the document, mainly the colors and styles * it is used to temporarily change to another state, then change back to what it was before */ - public $stateStack = array(); + public $stateStack = []; /** * @var integer Number of elements within the state stack @@ -143,7 +146,7 @@ class Cpdf /** * @var array Object Id storage stack */ - public $stack = array(); + public $stack = []; /** * @var integer Number of elements within the object Id storage stack @@ -154,12 +157,12 @@ class Cpdf * an array which contains information about the objects which are not firmly attached to pages * these have been added with the addObject function */ - public $looseObjects = array(); + public $looseObjects = []; /** * array contains information about how the loose objects are to be added to the document */ - public $addLooseObjects = array(); + public $addLooseObjects = []; /** * @var integer The objectId of the information object for the document @@ -176,7 +179,7 @@ class Cpdf * @var array An array containing options about the document * it defaults to turning on the compression of the objects */ - public $options = array('compression' => true); + public $options = ['compression' => true]; /** * @var integer The objectId of the first page of the document @@ -193,7 +196,7 @@ class Cpdf * this used so that the code knows which font is the bold version of another font, etc. * the value of this array is initialised in the constructor function. */ - public $fontFamilies = array(); + public $fontFamilies = []; /** * @var string Folder for php serialized formats of font metrics files. @@ -255,7 +258,7 @@ class Cpdf /** * @var array Array which forms a stack to keep track of nested callback functions */ - public $callback = array(); + public $callback = []; /** * @var integer The number of callback functions in the callback array @@ -266,7 +269,7 @@ class Cpdf * @var array Store label->id pairs for named destinations, these will be used to replace internal links * done this way so that destinations can be defined after the location that links to them */ - public $destinations = array(); + public $destinations = []; /** * @var array Store the stack for the transaction commands, each item in here is a record of the values of all the @@ -279,7 +282,7 @@ class Cpdf * @var array Table of Image origin filenames and image labels which were already added with o_image(). * Allows to merge identical images */ - public $imagelist = array(); + public $imagelist = []; /** * @var boolean Whether the text passed in should be treated as Unicode or just local character set. @@ -299,22 +302,22 @@ class Cpdf /** * @var array Current page size */ - protected $currentPageSize = array("width" => 0, "height" => 0); + protected $currentPageSize = ["width" => 0, "height" => 0]; /** * @var array All the chars that will be required in the font subsets */ - protected $stringSubsets = array(); + protected $stringSubsets = []; /** * @var string The target internal encoding */ - static protected $targetEncoding = 'Windows-1252'; + protected static $targetEncoding = 'Windows-1252'; /** * @var array The list of the core fonts */ - static protected $coreFonts = array( + protected static $coreFonts = [ 'courier', 'courier-bold', 'courier-oblique', @@ -329,7 +332,7 @@ class Cpdf 'times-bolditalic', 'symbol', 'zapfdingbats' - ); + ]; /** * Class constructor @@ -340,7 +343,7 @@ class Cpdf * @param string $fontcache The font cache folder * @param string $tmp The temporary folder */ - function __construct($pageSize = array(0, 0, 612, 792), $isUnicode = false, $fontcache = '', $tmp = '') + function __construct($pageSize = [0, 0, 612, 792], $isUnicode = false, $fontcache = '', $tmp = '') { $this->isUnicode = $isUnicode; $this->fontcache = rtrim($fontcache, DIRECTORY_SEPARATOR."/\\"); @@ -384,7 +387,7 @@ class Cpdf { switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'destination', 'info' => array()); + $this->objects[$id] = ['t' => 'destination', 'info' => []]; $tmp = ''; switch ($options['type']) { case 'XYZ': @@ -429,7 +432,7 @@ class Cpdf { switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'viewerPreferences', 'info' => array()); + $this->objects[$id] = ['t' => 'viewerPreferences', 'info' => []]; break; case 'add': @@ -463,28 +466,28 @@ class Cpdf // Named with limited valid values case 'NonFullScreenPageMode': - if (!in_array($v, array('UseNone', 'UseOutlines', 'UseThumbs', 'UseOC'))) { + if (!in_array($v, ['UseNone', 'UseOutlines', 'UseThumbs', 'UseOC'])) { break; } $o['info'][$k] = $v; break; case 'Direction': - if (!in_array($v, array('L2R', 'R2L'))) { + if (!in_array($v, ['L2R', 'R2L'])) { break; } $o['info'][$k] = $v; break; case 'PrintScaling': - if (!in_array($v, array('None', 'AppDefault'))) { + if (!in_array($v, ['None', 'AppDefault'])) { break; } $o['info'][$k] = $v; break; case 'Duplex': - if (!in_array($v, array('None', 'AppDefault'))) { + if (!in_array($v, ['None', 'AppDefault'])) { break; } $o['info'][$k] = $v; @@ -542,7 +545,7 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'catalog', 'info' => array()); + $this->objects[$id] = ['t' => 'catalog', 'info' => []]; $this->catalogId = $id; break; @@ -616,7 +619,7 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'pages', 'info' => array()); + $this->objects[$id] = ['t' => 'pages', 'info' => []]; $this->o_catalog($this->catalogId, 'pages', $id); break; @@ -666,19 +669,19 @@ class Cpdf case 'mediaBox': $o['info']['mediaBox'] = $options; // which should be an array of 4 numbers - $this->currentPageSize = array('width' => $options[2], 'height' => $options[3]); + $this->currentPageSize = ['width' => $options[2], 'height' => $options[3]]; break; case 'font': - $o['info']['fonts'][] = array('objNum' => $options['objNum'], 'fontNum' => $options['fontNum']); + $o['info']['fonts'][] = ['objNum' => $options['objNum'], 'fontNum' => $options['fontNum']]; break; case 'extGState': - $o['info']['extGStates'][] = array('objNum' => $options['objNum'], 'stateNum' => $options['stateNum']); + $o['info']['extGStates'][] = ['objNum' => $options['objNum'], 'stateNum' => $options['stateNum']]; break; case 'xObject': - $o['info']['xObjects'][] = array('objNum' => $options['objNum'], 'label' => $options['label']); + $o['info']['xObjects'][] = ['objNum' => $options['objNum'], 'label' => $options['label']]; break; case 'out': @@ -764,7 +767,7 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'outlines', 'info' => array('outlines' => array())); + $this->objects[$id] = ['t' => 'outlines', 'info' => ['outlines' => []]]; $this->o_catalog($this->catalogId, 'outlines', $id); break; @@ -806,14 +809,14 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'font', - 'info' => array( + 'info' => [ 'name' => $options['name'], 'fontFileName' => $options['fontFileName'], 'SubType' => 'Type1' - ) - ); + ] + ]; $fontNum = $this->numFonts; $this->objects[$id]['info']['fontNum'] = $fontNum; @@ -864,7 +867,7 @@ class Cpdf } // also tell the pages node about the new font - $this->o_pages($this->currentNode, 'font', array('fontNum' => $fontNum, 'objNum' => $id)); + $this->o_pages($this->currentNode, 'font', ['fontNum' => $fontNum, 'objNum' => $id]); break; case 'add': @@ -962,9 +965,9 @@ class Cpdf { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'toUnicode' - ); + ]; break; case 'add': break; @@ -1027,7 +1030,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'fontDescriptor', 'info' => $options); + $this->objects[$id] = ['t' => 'fontDescriptor', 'info' => $options]; break; case 'out': @@ -1093,7 +1096,7 @@ EOT; switch ($action) { case 'new': // the options array should contain 'differences' and maybe 'encoding' - $this->objects[$id] = array('t' => 'fontEncoding', 'info' => $options); + $this->objects[$id] = ['t' => 'fontEncoding', 'info' => $options]; break; case 'out': @@ -1145,7 +1148,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'fontDescendentCID', 'info' => $options); + $this->objects[$id] = ['t' => 'fontDescendentCID', 'info' => $options]; // we need a CID system info section $cidSystemInfoId = ++$this->numObj; @@ -1231,9 +1234,9 @@ EOT; { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'cidSystemInfo' - ); + ]; break; case 'add': break; @@ -1279,7 +1282,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'fontGIDtoCIDMap', 'info' => $options); + $this->objects[$id] = ['t' => 'fontGIDtoCIDMap', 'info' => $options]; break; case 'out': @@ -1336,7 +1339,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'procset', 'info' => array('PDF' => 1, 'Text' => 1)); + $this->objects[$id] = ['t' => 'procset', 'info' => ['PDF' => 1, 'Text' => 1]]; $this->o_pages($this->currentNode, 'procset', $id); $this->procsetObjectId = $id; break; @@ -1380,13 +1383,13 @@ EOT; case 'new': $this->infoObject = $id; $date = 'D:' . @date('Ymd'); - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'info', - 'info' => array( + 'info' => [ 'Producer' => 'CPDF (dompdf)', 'CreationDate' => $date - ) - ); + ] + ]; break; case 'Title': case 'Author': @@ -1449,10 +1452,10 @@ EOT; switch ($action) { case 'new': if (is_array($options)) { - $this->objects[$id] = array('t' => 'action', 'info' => $options, 'type' => $options['type']); + $this->objects[$id] = ['t' => 'action', 'info' => $options, 'type' => $options['type']]; } else { // then assume a URI action - $this->objects[$id] = array('t' => 'action', 'info' => $options, 'type' => 'URI'); + $this->objects[$id] = ['t' => 'action', 'info' => $options, 'type' => 'URI']; } break; @@ -1516,7 +1519,7 @@ EOT; // and add the action object which is going to be required switch ($options['type']) { case 'link': - $this->objects[$id] = array('t' => 'annotation', 'info' => $options); + $this->objects[$id] = ['t' => 'annotation', 'info' => $options]; $this->numObj++; $this->o_action($this->numObj, 'new', $options['url']); $this->objects[$id]['info']['actionId'] = $this->numObj; @@ -1525,9 +1528,9 @@ EOT; case 'ilink': // this is to a named internal link $label = $options['label']; - $this->objects[$id] = array('t' => 'annotation', 'info' => $options); + $this->objects[$id] = ['t' => 'annotation', 'info' => $options]; $this->numObj++; - $this->o_action($this->numObj, 'new', array('type' => 'ilink', 'label' => $label)); + $this->o_action($this->numObj, 'new', ['type' => 'ilink', 'label' => $label]); $this->objects[$id]['info']['actionId'] = $this->numObj; break; } @@ -1576,14 +1579,14 @@ EOT; switch ($action) { case 'new': $this->numPages++; - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'page', - 'info' => array( + 'info' => [ 'parent' => $this->currentNode, 'pageNum' => $this->numPages, 'mediaBox' => $this->objects[$this->currentNode]['info']['mediaBox'] - ) - ); + ] + ]; if (is_array($options)) { // then this must be a page insertion, array should contain 'rid','pos'=[before|after] @@ -1598,7 +1601,7 @@ EOT; $this->numObj++; $this->o_contents($this->numObj, 'new', $id); $this->currentContents = $this->numObj; - $this->objects[$id]['info']['contents'] = array(); + $this->objects[$id]['info']['contents'] = []; $this->objects[$id]['info']['contents'][] = $this->numObj; $match = ($this->numPages % 2 ? 'odd' : 'even'); @@ -1616,7 +1619,7 @@ EOT; case 'annot': // add an annotation to this page if (!isset($o['info']['annot'])) { - $o['info']['annot'] = array(); + $o['info']['annot'] = []; } // $options should contain the id of the annotation dictionary @@ -1686,7 +1689,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'contents', 'c' => '', 'info' => array()); + $this->objects[$id] = ['t' => 'contents', 'c' => '', 'info' => []]; if (mb_strlen($options, '8bit') && intval($options)) { // then this contents is the primary for a page $this->objects[$id]['onPage'] = $options; @@ -1747,12 +1750,12 @@ EOT; { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'embedjs', - 'info' => array( + 'info' => [ 'Names' => '[(EmbeddedJS) ' . ($id + 1) . ' 0 R]' - ) - ); + ] + ]; break; case 'out': @@ -1779,13 +1782,13 @@ EOT; { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'javascript', - 'info' => array( + 'info' => [ 'S' => '/JavaScript', 'JS' => '(' . $this->filterText($code, true, false) . ')', - ) - ); + ] + ]; break; case 'out': @@ -1816,7 +1819,7 @@ EOT; switch ($action) { case 'new': // make the new object - $this->objects[$id] = array('t' => 'image', 'data' => &$options['data'], 'info' => array()); + $this->objects[$id] = ['t' => 'image', 'data' => &$options['data'], 'info' => []]; $info =& $this->objects[$id]['info']; @@ -1835,10 +1838,10 @@ EOT; } switch ($options['channels']) { - case 1: + case 1: $info['ColorSpace'] = '/DeviceGray'; break; - case 4: + case 4: $info['ColorSpace'] = '/DeviceCMYK'; break; default: @@ -1917,7 +1920,7 @@ EOT; // assign it a place in the named resource dictionary as an external object, according to // the label passed in with it. - $this->o_pages($this->currentNode, 'xObject', array('label' => $options['label'], 'objNum' => $id)); + $this->o_pages($this->currentNode, 'xObject', ['label' => $options['label'], 'objNum' => $id]); // also make sure that we have the right procset object for it. $this->o_procset($this->procsetObjectId, 'add', 'ImageC'); @@ -1955,7 +1958,7 @@ EOT; */ protected function o_extGState($id, $action, $options = "") { - static $valid_params = array( + static $valid_params = [ "LW", "LC", "LC", @@ -1982,15 +1985,15 @@ EOT; "ca", "AIS", "TK" - ); + ]; switch ($action) { case "new": - $this->objects[$id] = array('t' => 'extGState', 'info' => $options); + $this->objects[$id] = ['t' => 'extGState', 'info' => $options]; // Tell the pages about the new resource $this->numStates++; - $this->o_pages($this->currentNode, 'extGState', array("objNum" => $id, "stateNum" => $this->numStates)); + $this->o_pages($this->currentNode, 'extGState', ["objNum" => $id, "stateNum" => $this->numStates]); break; case "out": @@ -2025,7 +2028,7 @@ EOT; switch ($action) { case 'new': // make the new object - $this->objects[$id] = array('t' => 'encryption', 'info' => $options); + $this->objects[$id] = ['t' => 'encryption', 'info' => $options]; $this->arc4_objnum = $id; break; @@ -2221,7 +2224,7 @@ EOT; function addLink($url, $x0, $y0, $x1, $y1) { $this->numObj++; - $info = array('type' => 'link', 'url' => $url, 'rect' => array($x0, $y0, $x1, $y1)); + $info = ['type' => 'link', 'url' => $url, 'rect' => [$x0, $y0, $x1, $y1]]; $this->o_annotation($this->numObj, 'new', $info); } @@ -2237,7 +2240,7 @@ EOT; function addInternalLink($label, $x0, $y0, $x1, $y1) { $this->numObj++; - $info = array('type' => 'ilink', 'label' => $label, 'rect' => array($x0, $y0, $x1, $y1)); + $info = ['type' => 'ilink', 'label' => $label, 'rect' => [$x0, $y0, $x1, $y1]]; $this->o_annotation($this->numObj, 'new', $info); } @@ -2250,11 +2253,11 @@ EOT; * @param string $ownerPass * @param array $pc */ - function setEncryption($userPass = '', $ownerPass = '', $pc = array()) + function setEncryption($userPass = '', $ownerPass = '', $pc = []) { $p = bindec("11000000"); - $options = array('print' => 4, 'modify' => 8, 'copy' => 16, 'add' => 32); + $options = ['print' => 4, 'modify' => 8, 'copy' => 16, 'add' => 32]; foreach ($pc as $k => $v) { if ($v && isset($options[$k])) { @@ -2274,7 +2277,7 @@ EOT; $ownerPass = $userPass; } - $this->o_encryption($this->numObj, 'new', array('user' => $userPass, 'owner' => $ownerPass, 'p' => $p)); + $this->o_encryption($this->numObj, 'new', ['user' => $userPass, 'owner' => $ownerPass, 'p' => $p]); } } @@ -2311,7 +2314,7 @@ EOT; } if ($this->fileIdentifier === '') { - $tmp = implode('', $this->objects[$this->infoObject]['info']); + $tmp = implode('', $this->objects[$this->infoObject]['info']); $this->fileIdentifier = md5('DOMPDF' . __FILE__ . $tmp . microtime() . mt_rand()); } @@ -2322,7 +2325,7 @@ EOT; $this->checkAllHere(); - $xref = array(); + $xref = []; $content = '%PDF-1.3'; $pos = mb_strlen($content, '8bit'); @@ -2368,10 +2371,10 @@ EOT; * * @param array $pageSize */ - private function newDocument($pageSize = array(0, 0, 612, 792)) + private function newDocument($pageSize = [0, 0, 612, 792]) { $this->numObj = 0; - $this->objects = array(); + $this->objects = []; $this->numObj++; $this->o_catalog($this->numObj, 'new'); @@ -2463,10 +2466,10 @@ EOT; if (!isset($this->fonts[$font]) && file_exists($dir . $metrics_name)) { // then rebuild the php_<font>.afm file from the <font>.afm file $this->addMessage("openFont: build php file from $dir$metrics_name"); - $data = array(); + $data = []; // 20 => 'space' - $data['codeToName'] = array(); + $data['codeToName'] = []; // Since we're not going to enable Unicode for the core fonts we need to use a font-based // setting for Unicode support rather than a global setting. @@ -2517,7 +2520,7 @@ EOT; //C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ; case 'C': // Found in AFM files $bits = explode(';', trim($row)); - $dtmp = array(); + $dtmp = ['C' => null, 'N' => null, 'WX' => null, 'B' => []]; foreach ($bits as $bit) { $bits2 = explode(' ', trim($bit)); @@ -2526,7 +2529,7 @@ EOT; } if (count($bits2) > 2) { - $dtmp[$bits2[0]] = array(); + $dtmp[$bits2[0]] = []; for ($i = 1; $i < count($bits2); $i++) { $dtmp[$bits2[0]][] = $bits2[$i]; } @@ -2542,15 +2545,15 @@ EOT; $width = floatval($dtmp['WX']); if ($c >= 0) { - if ($c != hexdec($n)) { + if (!ctype_xdigit($n) || $c != hexdec($n)) { $data['codeToName'][$c] = $n; } $data['C'][$c] = $width; - } else { + } elseif (isset($n)) { $data['C'][$n] = $width; } - if (!isset($data['MissingWidth']) && $c == -1 && $n === '.notdef') { + if (!isset($data['MissingWidth']) && $c === -1 && $n === '.notdef') { $data['MissingWidth'] = $width; } @@ -2563,7 +2566,7 @@ EOT; } $bits = explode(';', trim($row)); - $dtmp = array(); + $dtmp = ['G' => null, 'N' => null, 'U' => null, 'WX' => null]; foreach ($bits as $bit) { $bits2 = explode(' ', trim($bit)); @@ -2572,7 +2575,7 @@ EOT; } if (count($bits2) > 2) { - $dtmp[$bits2[0]] = array(); + $dtmp[$bits2[0]] = []; for ($i = 1; $i < count($bits2); $i++) { $dtmp[$bits2[0]][] = $bits2[$i]; } @@ -2595,15 +2598,15 @@ EOT; $cidtogid[$c * 2 + 1] = chr($glyph & 0xFF); } - if ($c != hexdec($n)) { + if (!ctype_xdigit($n) || $c != hexdec($n)) { $data['codeToName'][$c] = $n; } $data['C'][$c] = $width; - } else { + } elseif (isset($n)) { $data['C'][$n] = $width; } - if (!isset($data['MissingWidth']) && $c == -1 && $n === '.notdef') { + if (!isset($data['MissingWidth']) && $c === -1 && $n === '.notdef') { $data['MissingWidth'] = $width; } @@ -2676,7 +2679,7 @@ EOT; $name = basename($fontName); $dir = dirname($fontName) . '/'; - $options = array('name' => $name, 'fontFileName' => $fontName); + $options = ['name' => $name, 'fontFileName' => $fontName]; if (is_array($encoding)) { // then encoding and differences might be set @@ -2730,8 +2733,8 @@ EOT; // find the array of font widths, and put that into an object. $firstChar = -1; $lastChar = 0; - $widths = array(); - $cid_widths = array(); + $widths = []; + $cid_widths = []; foreach ($font['C'] as $num => $d) { if (intval($num) > 0 || $num == '0') { @@ -2835,8 +2838,9 @@ EOT; // Write new font $tmp_name = $this->tmp . "/" . basename($fbfile) . ".tmp." . uniqid(); - $font_obj->open($tmp_name, BinaryStream::modeWrite); - $font_obj->encode(array("OS/2")); + touch($tmp_name); + $font_obj->open($tmp_name, BinaryStream::modeReadWrite); + $font_obj->encode(["OS/2"]); $font_obj->close(); // Parse the new font to get cid2gid and widths @@ -2858,7 +2862,7 @@ EOT; unset($glyphIndexArray[0xFFFF]); $cidtogid = str_pad('', max(array_keys($glyphIndexArray)) * 2 + 1, "\x00"); - $font['CIDWidths'] = array(); + $font['CIDWidths'] = []; foreach ($glyphIndexArray as $cid => $gid) { if ($cid >= 0 && $cid < 0xFFFF && $gid) { $cidtogid[$cid * 2] = chr($gid >> 8); @@ -2900,19 +2904,19 @@ EOT; } $flags += pow(2, 5); // assume non-sybolic - $list = array( + $list = [ 'Ascent' => 'Ascender', 'CapHeight' => 'Ascender', //FIXME: php-font-lib is not grabbing this value, so we'll fake it and use the Ascender value // 'CapHeight' 'MissingWidth' => 'MissingWidth', 'Descent' => 'Descender', 'FontBBox' => 'FontBBox', 'ItalicAngle' => 'ItalicAngle' - ); - $fdopt = array( + ]; + $fdopt = [ 'Flags' => $flags, 'FontName' => $adobeFontName, 'StemV' => $stemV - ); + ]; foreach ($list as $k => $v) { if (isset($font[$v])) { @@ -2940,22 +2944,22 @@ EOT; $this->o_contents( $this->numObj, 'add', - array('Length1' => $l1, 'Length2' => $l2, 'Length3' => $l3) + ['Length1' => $l1, 'Length2' => $l2, 'Length3' => $l3] ); } elseif (strtolower($fbtype) == 'ttf') { $l1 = mb_strlen($data, '8bit'); - $this->o_contents($this->numObj, 'add', array('Length1' => $l1)); + $this->o_contents($this->numObj, 'add', ['Length1' => $l1]); } // tell the font object about all this new stuff - $tmp = array( + $tmp = [ 'BaseFont' => $adobeFontName, 'MissingWidth' => $missing_width, 'Widths' => $widthid, 'FirstChar' => $firstChar, 'LastChar' => $lastChar, 'FontDescriptor' => $fontDescriptorId - ); + ]; if (strtolower($fbtype) === 'ttf') { $tmp['SubType'] = 'TrueType'; @@ -3062,7 +3066,7 @@ EOT; */ function setColor($color, $force = false) { - $new_color = array($color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null); + $new_color = [$color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null]; if (!$force && $this->currentColor == $new_color) { return; @@ -3086,7 +3090,7 @@ EOT; */ function setFillRule($fillRule) { - if (!in_array($fillRule, array("nonzero", "evenodd"))) { + if (!in_array($fillRule, ["nonzero", "evenodd"])) { return; } @@ -3101,7 +3105,7 @@ EOT; */ function setStrokeColor($color, $force = false) { - $new_color = array($color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null); + $new_color = [$color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null]; if (!$force && $this->currentStrokeColor == $new_color) { return; @@ -3149,7 +3153,7 @@ EOT; */ function setLineTransparency($mode, $opacity) { - static $blend_modes = array( + static $blend_modes = [ "Normal", "Multiply", "Screen", @@ -3162,7 +3166,7 @@ EOT; "SoftLight", "Difference", "Exclusion" - ); + ]; if (!in_array($mode, $blend_modes)) { $mode = "Normal"; @@ -3178,10 +3182,10 @@ EOT; $this->currentLineTransparency["mode"] = $mode; $this->currentLineTransparency["opacity"] = $opacity; - $options = array( + $options = [ "BM" => "/$mode", "CA" => (float)$opacity - ); + ]; $this->setGraphicsState($options); } @@ -3200,7 +3204,7 @@ EOT; */ function setFillTransparency($mode, $opacity) { - static $blend_modes = array( + static $blend_modes = [ "Normal", "Multiply", "Screen", @@ -3213,7 +3217,7 @@ EOT; "SoftLight", "Difference", "Exclusion" - ); + ]; if (!in_array($mode, $blend_modes)) { $mode = "Normal"; @@ -3228,10 +3232,10 @@ EOT; $this->currentFillTransparency["mode"] = $mode; $this->currentFillTransparency["opacity"] = $opacity; - $options = array( + $options = [ "BM" => "/$mode", "ca" => (float)$opacity, - ); + ]; $this->setGraphicsState($options); } @@ -3344,7 +3348,8 @@ EOT; /** * draw a bezier curve based on 4 control points - */ function quadTo($cpx, $cpy, $x, $y) + */ + function quadTo($cpx, $cpy, $x, $y) { $this->addContent(sprintf("\n%.3F %.3F %.3F %.3F v", $cpx, $cpy, $x, $y)); } @@ -3510,13 +3515,13 @@ EOT; $string .= "$width w"; } - $ca = array('butt' => 0, 'round' => 1, 'square' => 2); + $ca = ['butt' => 0, 'round' => 1, 'square' => 2]; if (isset($ca[$cap])) { $string .= " $ca[$cap] J"; } - $ja = array('miter' => 0, 'round' => 1, 'bevel' => 2); + $ja = ['miter' => 0, 'round' => 1, 'bevel' => 2]; if (isset($ja[$join])) { $string .= " $ja[$join] j"; @@ -3715,14 +3720,14 @@ EOT; { $y = $this->currentPageSize["height"] - $y; - $tm = array( + $tm = [ $s_x, 0, 0, $s_y, $x * (1 - $s_x), $y * (1 - $s_y) - ); + ]; $this->transform($tm); } @@ -3735,14 +3740,14 @@ EOT; */ function translate($t_x, $t_y) { - $tm = array( + $tm = [ 1, 0, 0, 1, $t_x, -$t_y - ); + ]; $this->transform($tm); } @@ -3762,14 +3767,14 @@ EOT; $cos_a = cos($a); $sin_a = sin($a); - $tm = array( + $tm = [ $cos_a, -$sin_a, $sin_a, $cos_a, $x - $sin_a * $y - $cos_a * $x, $y - $cos_a * $y + $sin_a * $x, - ); + ]; $this->transform($tm); } @@ -3789,14 +3794,14 @@ EOT; $tan_x = tan(deg2rad($angle_x)); $tan_y = tan(deg2rad($angle_y)); - $tm = array( + $tm = [ 1, -$tan_y, -$tan_x, 1, $tan_x * $y, $tan_y * $x, - ); + ]; $this->transform($tm); } @@ -3837,7 +3842,7 @@ EOT; // the id from the ezPdf class is the id of the contents of the page, not the page object itself // query that object to find the parent $rid = $this->objects[$id]['onPage']; - $opt = array('rid' => $rid, 'pos' => $pos); + $opt = ['rid' => $rid, 'pos' => $pos]; $this->o_page($this->numObj, 'new', $opt); } else { $this->o_page($this->numObj, 'new'); @@ -3874,7 +3879,7 @@ EOT; * @param string $filename The filename to present to the client. * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). */ - function stream($filename = "document.pdf", $options = array()) + function stream($filename = "document.pdf", $options = []) { if (headers_sent()) { die("Unable to stream pdf: headers already sent"); @@ -3890,7 +3895,7 @@ EOT; header("Content-Type: application/pdf"); header("Content-Length: " . mb_strlen($tmp, "8bit")); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".pdf")) . ".pdf"; + $filename = str_replace(["\n", "'"], "", basename($filename, ".pdf")) . ".pdf"; $attachment = $options["Attachment"] ? "attachment" : "inline"; $encoding = mb_detect_encoding($filename); @@ -4018,7 +4023,7 @@ EOT; } // the chr(13) substitution fixes a bug seen in TCPDF (bug #1421290) - return strtr($text, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r')); + return strtr($text, [')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r']); } /** @@ -4039,8 +4044,8 @@ EOT; function utf8toCodePointsArray(&$text) { $length = mb_strlen($text, '8bit'); // http://www.php.net/manual/en/function.mb-strlen.php#77040 - $unicode = array(); // array containing unicode values - $bytes = array(); // array containing single character byte sequences + $unicode = []; // array containing unicode values + $bytes = []; // array containing single character byte sequences $numbytes = 1; // number of octets needed to represent the UTF-8 character for ($i = 0; $i < $length; $i++) { @@ -4061,7 +4066,7 @@ EOT; } else { // use replacement character for other invalid sequences $unicode[] = 0xFFFD; - $bytes = array(); + $bytes = []; $numbytes = 1; } } elseif (($c >> 0x06) === 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN @@ -4072,7 +4077,7 @@ EOT; for ($j = 1; $j < $numbytes; $j++) { $c += ($bytes[$j] << (($numbytes - $j - 1) * 0x06)); } - if ((($c >= 0xD800) AND ($c <= 0xDFFF)) OR ($c >= 0x10FFFF)) { + if ((($c >= 0xD800) and ($c <= 0xDFFF)) or ($c >= 0x10FFFF)) { // The definition of UTF-8 prohibits encoding character numbers between // U+D800 and U+DFFF, which are reserved for use with the UTF-16 // encoding form (as surrogate pairs) and do not directly represent @@ -4082,13 +4087,13 @@ EOT; $unicode[] = $c; // add char to array } // reset data for next char - $bytes = array(); + $bytes = []; $numbytes = 1; } } else { // use replacement character for other invalid sequences $unicode[] = 0xFFFD; - $bytes = array(); + $bytes = []; $numbytes = 1; } } @@ -4156,7 +4161,7 @@ EOT; $w += $wa * $nspaces; $a = deg2rad((float)$angle); - return array(cos($a) * $w + $x, -sin($a) * $w + $y); + return [cos($a) * $w + $x, -sin($a) * $w + $y]; } /** @@ -4194,7 +4199,7 @@ EOT; } if (!isset($this->stringSubsets[$font])) { - $this->stringSubsets[$font] = array(); + $this->stringSubsets[$font] = []; } $this->stringSubsets[$font] = array_unique( @@ -4220,7 +4225,7 @@ EOT; $this->selectFont($this->defaultFont); } - $text = str_replace(array("\r", "\n"), "", $text); + $text = str_replace(["\r", "\n"], "", $text); if ($smallCaps) { preg_match_all("/(\P{Ll}+)/u", $text, $matches, PREG_SET_ORDER); @@ -4238,7 +4243,7 @@ EOT; if ($this->nCallback > 0) { for ($i = $this->nCallback; $i > 0; $i--) { // call each function - $info = array( + $info = [ 'x' => $x, 'y' => $y, 'angle' => $angle, @@ -4247,7 +4252,7 @@ EOT; 'nCallback' => $this->callback[$i]['nCallback'], 'height' => $this->callback[$i]['height'], 'descender' => $this->callback[$i]['descender'] - ); + ]; $func = $this->callback[$i]['f']; $this->$func($info); @@ -4302,7 +4307,7 @@ EOT; for ($i = $this->nCallback; $i > 0; $i--) { // call each function $tmp = $this->getTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, $text); - $info = array( + $info = [ 'x' => $tmp[0], 'y' => $tmp[1], 'angle' => $angle, @@ -4311,7 +4316,7 @@ EOT; 'nCallback' => $this->callback[$i]['nCallback'], 'height' => $this->callback[$i]['height'], 'descender' => $this->callback[$i]['descender'] - ); + ]; $func = $this->callback[$i]['f']; $this->$func($info); } @@ -4330,7 +4335,7 @@ EOT; */ function getTextWidth($size, $text, $word_spacing = 0, $char_spacing = 0) { - static $ord_cache = array(); + static $ord_cache = []; // this function should not change any of the settings, though it will need to // track any directives which change during calculation, so copy them at the start @@ -4341,7 +4346,7 @@ EOT; $this->selectFont($this->defaultFont); } - $text = str_replace(array("\r", "\n"), "", $text); + $text = str_replace(["\r", "\n"], "", $text); // converts a number or a float to a string so it can get the width $text = "$text"; @@ -4448,11 +4453,11 @@ EOT; // $this->currentLineStyle = $opt['lin']; } else { $this->nStateStack++; - $this->stateStack[$this->nStateStack] = array( + $this->stateStack[$this->nStateStack] = [ 'col' => $this->currentColor, 'str' => $this->currentStrokeColor, 'lin' => $this->currentLineStyle - ); + ]; } $this->save(); @@ -4490,7 +4495,7 @@ EOT; function openObject() { $this->nStack++; - $this->stack[$this->nStack] = array('c' => $this->currentContents, 'p' => $this->currentPage); + $this->stack[$this->nStack] = ['c' => $this->currentContents, 'p' => $this->currentPage]; // add a new object of the content type, to hold the data flow $this->numObj++; $this->o_contents($this->numObj, 'new'); @@ -4508,7 +4513,7 @@ EOT; function reopenObject($id) { $this->nStack++; - $this->stack[$this->nStack] = array('c' => $this->currentContents, 'p' => $this->currentPage); + $this->stack[$this->nStack] = ['c' => $this->currentContents, 'p' => $this->currentPage]; $this->currentContents = $id; // also if this object is the primary contents for a page, then set the current page to its parent @@ -4667,10 +4672,10 @@ EOT; // this will only work if the label is one of the valid ones. if (is_array($label)) { foreach ($label as $l => $v) { - $this->o_catalog($this->catalogId, 'viewerPreferences', array($l => $v)); + $this->o_catalog($this->catalogId, 'viewerPreferences', [$l => $v]); } } else { - $this->o_catalog($this->catalogId, 'viewerPreferences', array($label => $value)); + $this->o_catalog($this->catalogId, 'viewerPreferences', [$label => $value]); } } @@ -4856,7 +4861,7 @@ EOT; // the first version containing it was 3.0.1RC1 static $imagickClonable = null; if ($imagickClonable === null) { - $imagickClonable = version_compare(Imagick::IMAGICK_EXTVER, '3.0.1rc1') > 0; + $imagickClonable = version_compare(\Imagick::IMAGICK_EXTVER, '3.0.1rc1') > 0; } $imagick = new \Imagick($file); @@ -4889,7 +4894,7 @@ EOT; $imgplain = imagecreatefrompng($tempfile_plain); } else { // allocated colors cache - $allocated_colors = array(); + $allocated_colors = []; // extract alpha channel for ($xpx = 0; $xpx < $wpx; ++$xpx) { @@ -4978,7 +4983,7 @@ EOT; // 3 => indexed // 4 => greyscale with alpha // 6 => fullcolor with alpha - $is_alpha = in_array($color_type, array(4, 6)) || ($color_type == 3 && $bit_depth != 4); + $is_alpha = in_array($color_type, [4, 6]) || ($color_type == 3 && $bit_depth != 4); if ($is_alpha) { // exclude grayscale alpha $this->addImagePngAlpha($file, $x, $y, $w, $h, $color_type); @@ -5043,7 +5048,7 @@ EOT; $this->save(); - $this->transform(array($w / $dimensions["width"], 0, 0, $h / $dimensions["height"], $x, $y)); + $this->transform([$w / $dimensions["width"], 0, 0, $h / $dimensions["height"], $x, $y]); $surface = new \Svg\Surface\SurfaceCpdf($doc, $this); $doc->render($surface); @@ -5100,7 +5105,7 @@ EOT; // cycle through the file, identifying chunks $haveHeader = 0; - $info = array(); + $info = []; $idata = ''; $pdata = ''; @@ -5155,7 +5160,7 @@ EOT; case 'tRNS': //this chunk can only occur once and it must occur after the PLTE chunk and before IDAT chunk //print "tRNS found, color type = ".$info['colorType']."\n"; - $transparency = array(); + $transparency = []; switch ($info['colorType']) { // indexed color, rbg @@ -5301,7 +5306,7 @@ EOT; $this->numObj++; // $this->o_image($this->numObj,'new',array('label' => $label,'data' => $idata,'iw' => $w,'ih' => $h,'type' => 'png','ic' => $info['width'])); - $options = array( + $options = [ 'label' => $label, 'data' => $idata, 'bitsPerComponent' => $info['bitDepth'], @@ -5313,14 +5318,14 @@ EOT; 'ncolor' => $ncolor, 'masked' => $mask, 'isMask' => $is_mask - ); + ]; if (isset($transparency)) { $options['transparency'] = $transparency; } $this->o_image($this->numObj, 'new', $options); - $this->imagelist[$file] = array('label' => $label, 'w' => $info['width'], 'h' => $info['height']); + $this->imagelist[$file] = ['label' => $label, 'w' => $info['width'], 'h' => $info['height']]; } if ($is_mask) { @@ -5440,21 +5445,21 @@ EOT; $this->o_image( $this->numObj, 'new', - array( + [ 'label' => $label, 'data' => &$data, 'iw' => $imageWidth, 'ih' => $imageHeight, 'channels' => $channels - ) + ] ); - $this->imagelist[$imgname] = array( + $this->imagelist[$imgname] = [ 'label' => $label, 'w' => $imageWidth, 'h' => $imageHeight, 'c' => $channels - ); + ]; } $this->addContent(sprintf("\nq\n%.3F 0 0 %.3F %.3F %.3F cm /%s Do\nQ ", $w, $h, $x, $y, $label)); @@ -5484,7 +5489,7 @@ EOT; $this->o_destination( $this->numObj, 'new', - array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c) + ['page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c] ); $id = $this->catalogId; $this->o_catalog($id, 'openHere', $this->numObj); @@ -5518,7 +5523,7 @@ EOT; $this->o_destination( $this->numObj, 'new', - array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c) + ['page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c] ); $id = $this->numObj; @@ -5542,28 +5547,28 @@ EOT; // these font families will be used to enable bold and italic markers to be included // within text streams. html forms will be used... <b></b> <i></i> $this->fontFamilies['Helvetica.afm'] = - array( + [ 'b' => 'Helvetica-Bold.afm', 'i' => 'Helvetica-Oblique.afm', 'bi' => 'Helvetica-BoldOblique.afm', 'ib' => 'Helvetica-BoldOblique.afm' - ); + ]; $this->fontFamilies['Courier.afm'] = - array( + [ 'b' => 'Courier-Bold.afm', 'i' => 'Courier-Oblique.afm', 'bi' => 'Courier-BoldOblique.afm', 'ib' => 'Courier-BoldOblique.afm' - ); + ]; $this->fontFamilies['Times-Roman.afm'] = - array( + [ 'b' => 'Times-Bold.afm', 'i' => 'Times-Italic.afm', 'bi' => 'Times-BoldItalic.afm', 'ib' => 'Times-BoldItalic.afm' - ); + ]; } } else { diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php index f0f520880ca66f22cd029f577d4581e91510c8a1..609e996244bf5fcfe78abac37e7ca27a5e3f5074 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php @@ -10,7 +10,7 @@ class HTML5_Data // codepoints // XXX: Not quite sure why it's named this; this is // actually the numeric entity dereference table. - protected static $realCodepointTable = array( + protected static $realCodepointTable = [ 0x00 => 0xFFFD, // REPLACEMENT CHARACTER 0x0D => 0x000A, // LINE FEED (LF) 0x80 => 0x20AC, // EURO SIGN ('€') @@ -45,7 +45,7 @@ class HTML5_Data 0x9D => 0x009D, // <control> 0x9E => 0x017E, // LATIN SMALL LETTER Z WITH CARON ('ž') 0x9F => 0x0178, // LATIN CAPITAL LETTER Y WITH DIAERESIS ('Ÿ') - ); + ]; protected static $namedCharacterReferences; diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php index 65fc14f31b91d8999ef6cc0c22038786cb84a1c4..dde71942d7c2a9a85b71fc34e02721e8affb5070 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php @@ -48,7 +48,7 @@ class HTML5_InputStream { /** * Parse errors. */ - public $errors = array(); + public $errors = []; /** * @param $data | Data to parse @@ -90,10 +90,10 @@ class HTML5_InputStream { by U+FFFD REPLACEMENT CHARACTERs. Any occurrences of such characters is a parse error. */ for ($i = 0, $count = substr_count($data, "\0"); $i < $count; $i++) { - $this->errors[] = array( + $this->errors[] = [ 'type' => HTML5_Tokenizer::PARSEERROR, 'data' => 'null-character' - ); + ]; } /* U+000D CARRIAGE RETURN (CR) characters and U+000A LINE FEED (LF) characters are treated specially. Any CR characters @@ -103,16 +103,16 @@ class HTML5_InputStream { by LF characters, and there are never any CR characters in the input to the tokenization stage. */ $data = str_replace( - array( + [ "\0", "\r\n", "\r" - ), - array( + ], + [ "\xEF\xBF\xBD", "\n", "\n" - ), + ], $data ); @@ -146,10 +146,10 @@ class HTML5_InputStream { $matches ); for ($i = 0; $i < $count; $i++) { - $this->errors[] = array( + $this->errors[] = [ 'type' => HTML5_Tokenizer::PARSEERROR, 'data' => 'invalid-codepoint' - ); + ]; } } else { // XXX: Need non-PCRE impl, probably using substr_count diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php index 724fa9af6cf8fafbcde46c950b60e75b81a8d49d..b48ce6830eec85c1d1ab8e9b05d5e148ca6814bb 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php @@ -16,7 +16,7 @@ class HTML5_Parser * @param $builder | Custom builder implementation * @return DOMDocument|DOMNodeList Parsed HTML as DOMDocument */ - static public function parse($text, $builder = null) { + public static function parse($text, $builder = null) { $tokenizer = new HTML5_Tokenizer($text, $builder); $tokenizer->parse(); return $tokenizer->save(); @@ -29,7 +29,7 @@ class HTML5_Parser * @param $builder | Custom builder implementation * @return DOMDocument|DOMNodeList Parsed HTML as DOMDocument */ - static public function parseFragment($text, $context = null, $builder = null) { + public static function parseFragment($text, $context = null, $builder = null) { $tokenizer = new HTML5_Tokenizer($text, $builder); $tokenizer->parseFragment($context); return $tokenizer->save(); diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php index 46e8504f2e98ff412084e52b1edaf07c07139d0c..9f1f3ae9dc8c74fadcffb15dc5dfd068d6bd7dba 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php @@ -206,10 +206,10 @@ class HTML5_Tokenizer { /* In any case, emit the input character as a character token. Stay in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '-' - )); + ]); // We do the "any case" part as part of "anything else". /* U+003C LESS-THAN SIGN (<) */ @@ -239,29 +239,29 @@ class HTML5_Tokenizer { /* In any case, emit the input character as a character token. Stay in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '>' - )); + ]); // We do the "any case" part as part of "anything else". } elseif ($char === false) { /* EOF Emit an end-of-file token. */ $state = null; - $this->tree->emitToken(array( + $this->tree->emitToken([ 'type' => self::EOF - )); + ]); } elseif ($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') { // Directly after emitting a token you switch back to the "data // state". At that point spaceCharacters are important so they are // emitted separately. $chars = $this->stream->charsWhile(self::WHITESPACE); - $this->emitToken(array( + $this->emitToken([ 'type' => self::SPACECHARACTER, 'data' => $char . $chars - )); + ]); $lastFourChars .= $chars; if (strlen($lastFourChars) > 4) { $lastFourChars = substr($lastFourChars, -4); @@ -292,10 +292,10 @@ class HTML5_Tokenizer { $chars = $this->stream->charsUntil($mask); } - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => $char . $chars - )); + ]); $lastFourChars .= $chars; if (strlen($lastFourChars) > 4) { @@ -318,10 +318,10 @@ class HTML5_Tokenizer { character token. Otherwise, emit the character token that was returned. */ // This is all done when consuming the character reference. - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => $entity - )); + ]); /* Finally, switch to the data state. */ $state = 'data'; @@ -343,10 +343,10 @@ class HTML5_Tokenizer { if ($char === '/') { $state = 'close tag open'; } else { - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '<' - )); + ]); $this->stream->unget(); @@ -375,11 +375,11 @@ class HTML5_Tokenizer { version of the input character (add 0x0020 to the character's code point), then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => strtolower($char), 'type' => self::STARTTAG, - 'attr' => array() - ); + 'attr' => [] + ]; $state = 'tag name'; @@ -389,11 +389,11 @@ class HTML5_Tokenizer { character, then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => $char, 'type' => self::STARTTAG, - 'attr' => array() - ); + 'attr' => [] + ]; $state = 'tag name'; @@ -401,42 +401,42 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+003E GREATER-THAN SIGN character token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-tag-name-but-got-right-bracket' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '<>' - )); + ]); $state = 'data'; } elseif ($char === '?') { /* U+003F QUESTION MARK (?) Parse error. Switch to the bogus comment state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-tag-name-but-got-question-mark' - )); - $this->token = array( + ]); + $this->token = [ 'data' => '?', 'type' => self::COMMENT - ); + ]; $state = 'bogus comment'; } else { /* Anything else Parse error. Emit a U+003C LESS-THAN SIGN character token and reconsume the current input character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-tag-name' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '<' - )); + ]); $state = 'data'; $this->stream->unget(); @@ -458,7 +458,7 @@ class HTML5_Tokenizer { if ( !$this->token || $this->token['name'] !== $name || - $this->token['name'] === $name && !in_array($following, array("\x09", "\x0A", "\x0C", "\x20", "\x3E", "\x2F", false)) + $this->token['name'] === $name && !in_array($following, ["\x09", "\x0A", "\x0C", "\x20", "\x3E", "\x2F", false]) ) { /* if no start tag token has ever been emitted by this instance of the tokenizer (fragment case), or, if the next few @@ -482,10 +482,10 @@ class HTML5_Tokenizer { // We also need to emit $name now we've consumed that, as we // know it'll just be emitted as a character token. - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '</' . $name - )); + ]); $state = 'data'; } else { @@ -494,10 +494,10 @@ class HTML5_Tokenizer { // much). // Start the end tag token with the name we already have. - $this->token = array( + $this->token = [ 'name' => $name, 'type' => self::ENDTAG - ); + ]; // Change to tag name state. $state = 'tag name'; @@ -513,10 +513,10 @@ class HTML5_Tokenizer { of the input character (add 0x0020 to the character's code point), then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => strtolower($char), 'type' => self::ENDTAG - ); + ]; $state = 'tag name'; @@ -526,48 +526,48 @@ class HTML5_Tokenizer { input character, then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => $char, 'type' => self::ENDTAG - ); + ]; $state = 'tag name'; } elseif ($char === '>') { /* U+003E GREATER-THAN SIGN (>) Parse error. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-closing-tag-but-got-right-bracket' - )); + ]); $state = 'data'; } elseif ($char === false) { /* EOF Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F SOLIDUS character token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-closing-tag-but-got-eof' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '</' - )); + ]); $this->stream->unget(); $state = 'data'; } else { /* Parse error. Switch to the bogus comment state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-closing-tag-but-got-char' - )); - $this->token = array( + ]); + $this->token = [ 'data' => $char, 'type' => self::COMMENT - ); + ]; $state = 'bogus comment'; } } @@ -609,10 +609,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-tag-name' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -659,20 +659,20 @@ class HTML5_Tokenizer { input character (add 0x0020 to the character's code point), and its value to the empty string. Switch to the attribute name state.*/ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => strtolower($char), 'value' => '' - ); + ]; $state = 'attribute name'; } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-attribute-name-but-got-eof' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -685,20 +685,20 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === '<' || $char === '=') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'invalid-character-in-attribute-name' - )); + ]); } /* Anything else Start a new attribute in the current tag token. Set that attribute's name to the current input character, and its value to the empty string. Switch to the attribute name state. */ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => $char, 'value' => '' - ); + ]; $state = 'attribute name'; } @@ -749,10 +749,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-name' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -764,10 +764,10 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === '<') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'invalid-character-in-attribute-name' - )); + ]); } /* Anything else @@ -827,20 +827,20 @@ class HTML5_Tokenizer { input character (add 0x0020 to the character's code point), and its value to the empty string. Switch to the attribute name state. */ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => strtolower($char), 'value' => '' - ); + ]; $state = 'attribute name'; } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-end-of-tag-but-got-eof' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -852,20 +852,20 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === "<") { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'invalid-character-after-attribute-name' - )); + ]); } /* Anything else Start a new attribute in the current tag token. Set that attribute's name to the current input character, and its value to the empty string. Switch to the attribute name state. */ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => $char, 'value' => '' - ); + ]; $state = 'attribute name'; } @@ -904,20 +904,20 @@ class HTML5_Tokenizer { } elseif ($char === '>') { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit the current tag token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-attribute-value-but-got-right-bracket' - )); + ]); $this->emitToken($this->token); $state = 'data'; } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-attribute-value-but-got-eof' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -926,10 +926,10 @@ class HTML5_Tokenizer { * U+003C LESS-THAN SIGN (<) Parse error. Treat it as per the "anything else" entry below. */ if ($char === '=' || $char === '<') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'equals-in-unquoted-attribute-value' - )); + ]); } /* Anything else @@ -961,10 +961,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-value-double-quote' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -999,10 +999,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-value-single-quote' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1048,10 +1048,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-value-no-quotes' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1063,10 +1063,10 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === '=' || $char == '<') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-character-in-unquoted-attribute-value' - )); + ]); } /* Anything else @@ -1107,10 +1107,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-EOF-after-attribute-value' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1118,10 +1118,10 @@ class HTML5_Tokenizer { /* Anything else Parse error. Reconsume the character in the before attribute name state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-character-after-attribute-value' - )); + ]); $this->stream->unget(); $state = 'before attribute name'; } @@ -1143,20 +1143,20 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-eof-after-self-closing' - )); + ]); $this->stream->unget(); $state = 'data'; } else { /* Anything else Parse error. Reconsume the character in the before attribute name state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-character-after-self-closing' - )); + ]); $this->stream->unget(); $state = 'before attribute name'; } @@ -1196,10 +1196,10 @@ class HTML5_Tokenizer { data is the empty string, and switch to the comment state. */ if ($hyphens === '--') { $state = 'comment start'; - $this->token = array( + $this->token = [ 'data' => '', 'type' => self::COMMENT - ); + ]; /* Otherwise if the next seven characters are a case-insensitive match for the word "DOCTYPE", then consume those characters and switch to the @@ -1221,14 +1221,14 @@ class HTML5_Tokenizer { The next character that is consumed, if any, is the first character that will be in the comment. */ } else { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-dashes-or-doctype' - )); - $this->token = array( + ]); + $this->token = [ 'data' => (string) $alpha, 'type' => self::COMMENT - ); + ]; $state = 'bogus comment'; } break; @@ -1245,20 +1245,20 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit the comment token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'incorrect-comment' - )); + ]); $this->emitToken($this->token); $state = 'data'; } elseif ($char === false) { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1282,19 +1282,19 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit the comment token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'incorrect-comment' - )); + ]); $this->emitToken($this->token); $state = 'data'; } elseif ($char === false) { /* Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1317,10 +1317,10 @@ class HTML5_Tokenizer { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1348,10 +1348,10 @@ class HTML5_Tokenizer { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment-end-dash' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1380,35 +1380,35 @@ class HTML5_Tokenizer { Parse error. Append a U+002D HYPHEN-MINUS (-) character to the comment token's data. Stay in the comment end state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-dash-after-double-dash-in-comment' - )); + ]); $this->token['data'] .= '-'; } elseif ($char === "\t" || $char === "\n" || $char === "\x0a" || $char === ' ') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-space-after-double-dash-in-comment' - )); + ]); $this->token['data'] .= '--' . $char; $state = 'comment end space'; } elseif ($char === '!') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-bang-after-double-dash-in-comment' - )); + ]); $state = 'comment end bang'; } elseif ($char === false) { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment-double-dash' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1418,10 +1418,10 @@ class HTML5_Tokenizer { Parse error. Append two U+002D HYPHEN-MINUS (-) characters and the input character to the comment token's data. Switch to the comment state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-comment' - )); + ]); $this->token['data'] .= '--'.$char; $state = 'comment'; } @@ -1436,10 +1436,10 @@ class HTML5_Tokenizer { $this->token['data'] .= '--!'; $state = 'comment end dash'; } elseif ($char === false) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment-end-bang' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1459,10 +1459,10 @@ class HTML5_Tokenizer { } elseif ($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') { $this->token['data'] .= $char; } elseif ($char === false) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-eof-in-comment-end-space', - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1489,16 +1489,16 @@ class HTML5_Tokenizer { Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Emit the token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'need-space-after-doctype-but-got-eof' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'name' => '', 'type' => self::DOCTYPE, 'force-quirks' => true, 'error' => true - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1506,10 +1506,10 @@ class HTML5_Tokenizer { /* Anything else Parse error. Reconsume the current character in the before DOCTYPE name state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'need-space-after-doctype' - )); + ]); $this->stream->unget(); $state = 'before DOCTYPE name'; } @@ -1531,16 +1531,16 @@ class HTML5_Tokenizer { Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Emit the token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-doctype-name-but-got-right-bracket' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'name' => '', 'type' => self::DOCTYPE, 'force-quirks' => true, 'error' => true - )); + ]); $state = 'data'; @@ -1550,11 +1550,11 @@ class HTML5_Tokenizer { lowercase version of the input character (add 0x0020 to the character's code point). Switch to the DOCTYPE name state. */ - $this->token = array( + $this->token = [ 'name' => strtolower($char), 'type' => self::DOCTYPE, 'error' => true - ); + ]; $state = 'DOCTYPE name'; @@ -1563,16 +1563,16 @@ class HTML5_Tokenizer { Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Emit the token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-doctype-name-but-got-eof' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'name' => '', 'type' => self::DOCTYPE, 'force-quirks' => true, 'error' => true - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1581,11 +1581,11 @@ class HTML5_Tokenizer { /* Anything else Create a new DOCTYPE token. Set the token's name to the current input character. Switch to the DOCTYPE name state. */ - $this->token = array( + $this->token = [ 'name' => $char, 'type' => self::DOCTYPE, 'error' => true - ); + ]; $state = 'DOCTYPE name'; } @@ -1621,10 +1621,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype-name' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1667,10 +1667,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1698,10 +1698,10 @@ class HTML5_Tokenizer { /* Otherwise, this is the parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-space-or-right-bracket-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->token['error'] = true; $state = 'bogus DOCTYPE'; @@ -1736,10 +1736,10 @@ class HTML5_Tokenizer { } elseif ($char === '>') { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1747,10 +1747,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1758,10 +1758,10 @@ class HTML5_Tokenizer { } else { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $state = 'bogus DOCTYPE'; } @@ -1779,10 +1779,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1791,10 +1791,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1820,10 +1820,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1832,10 +1832,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1882,10 +1882,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1894,10 +1894,10 @@ class HTML5_Tokenizer { /* Anything else Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $state = 'bogus DOCTYPE'; } @@ -1930,10 +1930,10 @@ class HTML5_Tokenizer { } elseif ($char === '>') { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1941,10 +1941,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1952,10 +1952,10 @@ class HTML5_Tokenizer { } else { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $state = 'bogus DOCTYPE'; } @@ -1973,10 +1973,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1985,10 +1985,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -2014,10 +2014,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -2026,10 +2026,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -2062,10 +2062,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -2075,10 +2075,10 @@ class HTML5_Tokenizer { Parse error. Switch to the bogus DOCTYPE state. (This does not set the DOCTYPE token's force-quirks flag to on.) */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $state = 'bogus DOCTYPE'; } break; @@ -2224,20 +2224,20 @@ class HTML5_Tokenizer { any characters (and unconsume the U+0023 NUMBER SIGN character and, if appropriate, the X character). This is a parse error; nothing is returned. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-numeric-entity' - )); + ]); return '&' . $chars; } else { /* Otherwise, if the next character is a U+003B SEMICOLON, consume that too. If it isn't, there is a parse error. */ if ($this->stream->char() !== ';') { $this->stream->unget(); - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'numeric-entity-without-semicolon' - )); + ]); } /* If one or more characters match the range, then take @@ -2252,20 +2252,20 @@ class HTML5_Tokenizer { second column of that row. */ $new_codepoint = HTML5_Data::getRealCodepoint($codepoint); if ($new_codepoint) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'illegal-windows-1252-entity' - )); + ]); return HTML5_Data::utf8chr($new_codepoint); } else { /* Otherwise, if the number is greater than 0x10FFFF, then * this is a parse error. Return a U+FFFD REPLACEMENT * CHARACTER. */ if ($codepoint > 0x10FFFF) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'overlong-character-entity' // XXX probably not correct - )); + ]); return "\xEF\xBF\xBD"; } /* Otherwise, return a character token for the Unicode @@ -2290,10 +2290,10 @@ class HTML5_Tokenizer { ($codepoint & 0xFFFE) === 0xFFFE || $codepoint == 0x10FFFF || $codepoint == 0x10FFFE ) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'illegal-codepoint-for-numeric-entity' - )); + ]); } return HTML5_Data::utf8chr($codepoint); } @@ -2336,10 +2336,10 @@ class HTML5_Tokenizer { /* If no match can be made, then this is a parse error. No characters are consumed, and nothing is returned. */ if (!$codepoint) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-named-entity' - )); + ]); return '&' . $chars; } @@ -2347,10 +2347,10 @@ class HTML5_Tokenizer { (;), there is a parse error. */ $semicolon = true; if (substr($id, -1) !== ';') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'named-entity-without-semicolon' - )); + ]); $semicolon = false; } @@ -2426,27 +2426,27 @@ class HTML5_Tokenizer { } if ($token['type'] === self::ENDTAG && !empty($token['attr'])) { for ($i = 0; $i < count($token['attr']); $i++) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'attributes-in-end-tag' - )); + ]); } } if ($token['type'] === self::ENDTAG && !empty($token['self-closing'])) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'self-closing-flag-on-end-tag', - )); + ]); } if ($token['type'] === self::STARTTAG) { // This could be changed to actually pass the tree-builder a hash - $hash = array(); + $hash = []; foreach ($token['attr'] as $keypair) { if (isset($hash[$keypair['name']])) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'duplicate-attribute', - )); + ]); } else { $hash[$keypair['name']] = $keypair['value']; } diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php index dda0fdefbb84d9a0e561db7081263cdfb0344efd..546ec680215bdecb4eec8ac2f715a06eb3f9775f 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php @@ -35,7 +35,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // this is not (yet) in helper functions. class HTML5_TreeBuilder { - public $stack = array(); + public $stack = []; public $content_model; private $mode; @@ -45,7 +45,7 @@ class HTML5_TreeBuilder { // Whether or not normal insertion of nodes should actually foster // parent (used in one case in spec) private $foster_parent = false; - private $a_formatting = array(); + private $a_formatting = []; private $head_pointer = null; private $form_pointer = null; @@ -62,16 +62,16 @@ class HTML5_TreeBuilder { private $fragment = false; private $root; - private $scoping = array('applet','button','caption','html','marquee','object','table','td','th', 'svg:foreignObject'); - private $formatting = array('a','b','big','code','em','font','i','nobr','s','small','strike','strong','tt','u'); + private $scoping = ['applet','button','caption','html','marquee','object','table','td','th', 'svg:foreignObject']; + private $formatting = ['a','b','big','code','em','font','i','nobr','s','small','strike','strong','tt','u']; // dl and ds are speculative - private $special = array('address','area','article','aside','base','basefont','bgsound', + private $special = ['address','area','article','aside','base','basefont','bgsound', 'blockquote','body','br','center','col','colgroup','command','dc','dd','details','dir','div','dl','ds', 'dt','embed','fieldset','figure','footer','form','frame','frameset','h1','h2','h3','h4','h5', 'h6','head','header','hgroup','hr','iframe','img','input','isindex','li','link', 'listing','menu','meta','nav','noembed','noframes','noscript','ol', 'p','param','plaintext','pre','script','select','spacer','style', - 'tbody','textarea','tfoot','thead','title','tr','ul','wbr'); + 'tbody','textarea','tfoot','thead','title','tr','ul','wbr']; private $pendingTableCharacters; private $pendingTableCharactersDirty; @@ -107,7 +107,7 @@ class HTML5_TreeBuilder { private function strConst($number) { static $lookup; if (!$lookup) { - $lookup = array(); + $lookup = []; $r = new ReflectionClass('HTML5_TreeBuilder'); $consts = $r->getConstants(); foreach ($consts as $const => $num) { @@ -253,7 +253,7 @@ class HTML5_TreeBuilder { } $public = is_null($token['public']) ? false : strtolower($token['public']); $system = is_null($token['system']) ? false : strtolower($token['system']); - $publicStartsWithForQuirks = array( + $publicStartsWithForQuirks = [ "+//silmaril//dtd html pro v0r11 19970101//", "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", "-//as//dtd html 3.0 aswedit + extensions//", @@ -307,24 +307,24 @@ class HTML5_TreeBuilder { "-//w3o//dtd w3 html 3.0//", "-//webtechs//dtd mozilla html 2.0//", "-//webtechs//dtd mozilla html//", - ); - $publicSetToForQuirks = array( + ]; + $publicSetToForQuirks = [ "-//w3o//dtd w3 html strict 3.0//", "-/w3c/dtd html 4.0 transitional/en", "html", - ); - $publicStartsWithAndSystemForQuirks = array( + ]; + $publicStartsWithAndSystemForQuirks = [ "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//", - ); - $publicStartsWithForLimitedQuirks = array( + ]; + $publicStartsWithForLimitedQuirks = [ "-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//", - ); - $publicStartsWithAndSystemForLimitedQuirks = array( + ]; + $publicStartsWithAndSystemForLimitedQuirks = [ "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//", - ); + ]; // first, do easy checks if ( !empty($token['force-quirks']) || @@ -489,11 +489,11 @@ class HTML5_TreeBuilder { )) { /* Act as if a start tag token with the tag name "head" and no * attributes had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'head', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); /* Any other end tag */ @@ -507,11 +507,11 @@ class HTML5_TreeBuilder { * Note: This will result in an empty head element being * generated, with the current token being reprocessed in the * "after head" insertion mode. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'head', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); } break; @@ -632,10 +632,10 @@ class HTML5_TreeBuilder { } else { /* Act as if an end tag token with the tag name "head" had been * seen, and reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'head', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); /* Then, reprocess the current token. */ $this->emitToken($token); @@ -669,10 +669,10 @@ class HTML5_TreeBuilder { // parse error } else { // parse error - $this->emitToken(array( + $this->emitToken([ 'type' => HTML5_Tokenizer::ENDTAG, 'name' => 'noscript', - )); + ]); $this->emitToken($token); } break; @@ -720,7 +720,7 @@ class HTML5_TreeBuilder { /* A start tag token whose tag name is one of: "base", "link", "meta", "script", "style", "title" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta', 'noframes', 'script', 'style', 'title'))) { + ['base', 'link', 'meta', 'noframes', 'script', 'style', 'title'])) { // parse error /* Push the node pointed to by the head element pointer onto the * stack of open elements. */ @@ -738,11 +738,11 @@ class HTML5_TreeBuilder { /* Anything else */ } else { - $this->emitToken(array( + $this->emitToken([ 'name' => 'body', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->flag_frameset_ok = true; $this->emitToken($token); } @@ -871,10 +871,10 @@ class HTML5_TreeBuilder { then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -887,10 +887,10 @@ class HTML5_TreeBuilder { /* If the stack of open elements has a p element in scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* If the current node is an element whose tag name is one @@ -898,7 +898,7 @@ class HTML5_TreeBuilder { * parse error; pop the current node off the stack of open * elements. */ $peek = array_pop($this->stack); - if (in_array($peek->tagName, array("h1", "h2", "h3", "h4", "h5", "h6"))) { + if (in_array($peek->tagName, ["h1", "h2", "h3", "h4", "h5", "h6"])) { // parse error } else { $this->stack[] = $peek; @@ -912,10 +912,10 @@ class HTML5_TreeBuilder { /* If the stack of open elements has a p element in scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } $this->insertElement($token); /* If the next token is a U+000A LINE FEED (LF) character @@ -940,10 +940,10 @@ class HTML5_TreeBuilder { scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token, and set the @@ -976,10 +976,10 @@ class HTML5_TreeBuilder { * jump to the last step. */ if (($token['name'] === 'li' && $node->tagName === 'li') || ($token['name'] !== 'li' && ($node->tagName == 'dc' || $node->tagName === 'dd' || $node->tagName == 'ds' || $node->tagName === 'dt'))) { // limited conditional - $this->emitToken(array( + $this->emitToken([ 'type' => HTML5_Tokenizer::ENDTAG, 'name' => $node->tagName, - )); + ]); break; } @@ -1002,10 +1002,10 @@ class HTML5_TreeBuilder { then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Finally, insert an HTML element with the same tag @@ -1019,10 +1019,10 @@ class HTML5_TreeBuilder { then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -1052,10 +1052,10 @@ class HTML5_TreeBuilder { } elseif ($this->a_formatting[$n]->tagName === 'a') { $a = $this->a_formatting[$n]; - $this->emitToken(array( + $this->emitToken([ 'name' => 'a', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (in_array($a, $this->a_formatting)) { $a_i = array_search($a, $this->a_formatting, true); if ($a_i !== false) { @@ -1106,10 +1106,10 @@ class HTML5_TreeBuilder { * with the tag name "nobr" had been seen, then once again * reconstruct the active formatting elements, if any. */ if ($this->elementInScope('nobr')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'nobr', 'type' => HTML5_Tokenizer::ENDTAG, - )); + ]); $this->reconstructActiveFormattingElements(); } @@ -1130,10 +1130,10 @@ class HTML5_TreeBuilder { name "button" had been seen, then reprocess the token. (We don't do that. Unnecessary.) (I hope you're right! -- ezyang) */ if ($this->elementInScope('button')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'button', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Reconstruct the active formatting elements, if any. */ @@ -1173,10 +1173,10 @@ class HTML5_TreeBuilder { * seen. */ if ($this->quirks_mode !== self::QUIRKS_MODE && $this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -1222,10 +1222,10 @@ class HTML5_TreeBuilder { /* If the stack of open elements has a p element in scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -1260,32 +1260,32 @@ class HTML5_TreeBuilder { * the action attribute on the resulting form * element to the value of the "action" attribute of * the token. */ - $attr = array(); + $attr = []; $action = $this->getAttr($token, 'action'); if ($action !== false) { - $attr[] = array('name' => 'action', 'value' => $action); + $attr[] = ['name' => 'action', 'value' => $action]; } - $this->emitToken(array( + $this->emitToken([ 'name' => 'form', 'type' => HTML5_Tokenizer::STARTTAG, 'attr' => $attr - )); + ]); /* Act as if a start tag token with the tag name "hr" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'hr', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); /* Act as if a start tag token with the tag name "label" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'label', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); /* Act as if a stream of character tokens had been seen. */ $prompt = $this->getAttr($token, 'prompt'); @@ -1293,16 +1293,16 @@ class HTML5_TreeBuilder { $prompt = 'This is a searchable index. '. 'Insert your search keywords here: '; } - $this->emitToken(array( + $this->emitToken([ 'data' => $prompt, 'type' => HTML5_Tokenizer::CHARACTER, - )); + ]); /* Act as if a start tag token with the tag name "input" had been seen, with all the attributes from the "isindex" token, except with the "name" attribute set to the value "isindex" (ignoring any explicit "name" attribute). */ - $attr = array(); + $attr = []; foreach ($token['attr'] as $keypair) { if ($keypair['name'] === 'name' || $keypair['name'] === 'action' || $keypair['name'] === 'prompt') { @@ -1310,34 +1310,34 @@ class HTML5_TreeBuilder { } $attr[] = $keypair; } - $attr[] = array('name' => 'name', 'value' => 'isindex'); + $attr[] = ['name' => 'name', 'value' => 'isindex']; - $this->emitToken(array( + $this->emitToken([ 'name' => 'input', 'type' => HTML5_Tokenizer::STARTTAG, 'attr' => $attr - )); + ]); /* Act as if an end tag token with the tag name "label" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'label', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); /* Act as if a start tag token with the tag name "hr" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'hr', 'type' => HTML5_Tokenizer::STARTTAG - )); + ]); /* Act as if an end tag token with the tag name "form" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'form', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } else { $this->ignored = true; } @@ -1369,10 +1369,10 @@ class HTML5_TreeBuilder { scope, then act as if an end tag with the tag name "p" has been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Reconstruct the active formatting elements, if any. */ @@ -1421,10 +1421,10 @@ class HTML5_TreeBuilder { case 'option': case 'optgroup': if ($this->elementInScope('option')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG, - )); + ]); } $this->reconstructActiveFormattingElements(); $this->insertElement($token); @@ -1530,10 +1530,10 @@ class HTML5_TreeBuilder { /* Act as if an end tag with tag name "body" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'body', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -1599,7 +1599,7 @@ class HTML5_TreeBuilder { if ($this->elementInScope('p')) { /* Generate implied end tags, except for elements with * the same tag name as the token. */ - $this->generateImpliedEndTags(array('p')); + $this->generateImpliedEndTags(['p']); /* If the current node is not a p element, then this is a parse error. */ @@ -1614,10 +1614,10 @@ class HTML5_TreeBuilder { } else { // parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::STARTTAG, - )); + ]); $this->emitToken($token); } break; @@ -1630,7 +1630,7 @@ class HTML5_TreeBuilder { if ($this->elementInScope($token['name'], self::SCOPE_LISTITEM)) { /* Generate implied end tags, except for elements with the * same tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); + $this->generateImpliedEndTags([$token['name']]); /* If the current node is not an element with the same tag * name as that of the token, then this is a parse error. */ // XERROR: parse error @@ -1649,7 +1649,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is "dc", "dd", "ds", "dt" */ case 'dc': case 'dd': case 'ds': case 'dt': if ($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(array($token['name'])); + $this->generateImpliedEndTags([$token['name']]); /* If the current node is not an element with the same tag name as the token, then this is a parse error. */ @@ -1670,7 +1670,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4", "h5", "h6" */ case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); + $elements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; /* If the stack of open elements has in scope an element whose tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then @@ -1871,7 +1871,7 @@ class HTML5_TreeBuilder { if ($last_node->parentNode) { // common step $last_node->parentNode->removeChild($last_node); } - if (in_array($common_ancestor->tagName, array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { + if (in_array($common_ancestor->tagName, ['table', 'tbody', 'tfoot', 'thead', 'tr'])) { $this->fosterParent($last_node); /* Otherwise, append whatever last node ended up being * in the previous step to the common ancestor node, @@ -1910,7 +1910,7 @@ class HTML5_TreeBuilder { $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1); $af_part2 = array_slice($this->a_formatting, $bookmark); - $this->a_formatting = array_merge($af_part1, array($clone), $af_part2); + $this->a_formatting = array_merge($af_part1, [$clone], $af_part2); /* 12. Remove the formatting element from the stack of open elements, and insert the new element into the stack @@ -1922,7 +1922,7 @@ class HTML5_TreeBuilder { $fb_s_pos = array_search($furthest_block, $this->stack, true); $s_part1 = array_slice($this->stack, 0, $fb_s_pos + 1); $s_part2 = array_slice($this->stack, $fb_s_pos + 1); - $this->stack = array_merge($s_part1, array($clone), $s_part2); + $this->stack = array_merge($s_part1, [$clone], $s_part2); /* 13. Jump back to step 1 in this series of steps. */ unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block); @@ -1963,10 +1963,10 @@ class HTML5_TreeBuilder { case 'br': // Parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'br', 'type' => HTML5_Tokenizer::STARTTAG, - )); + ]); break; /* An end tag token not covered by the previous entries */ @@ -2040,7 +2040,7 @@ class HTML5_TreeBuilder { break; case self::IN_TABLE: - $clear = array('html', 'table'); + $clear = ['html', 'table']; /* A character token */ if ($token['type'] === HTML5_Tokenizer::CHARACTER || @@ -2096,17 +2096,17 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is "col" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'col') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'colgroup', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('tbody', 'tfoot', 'thead'))) { + ['tbody', 'tfoot', 'thead'])) { /* Clear the stack back to a table context. */ $this->clearStackToTableContext($clear); @@ -2117,14 +2117,14 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "td", "th", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && - in_array($token['name'], array('td', 'th', 'tr'))) { + in_array($token['name'], ['td', 'th', 'tr'])) { /* Act as if a start tag token with the tag name "tbody" had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tbody', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); @@ -2134,10 +2134,10 @@ class HTML5_TreeBuilder { /* Parse error. Act as if an end tag token with the tag name "table" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'table', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -2163,8 +2163,8 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', - 'tfoot', 'th', 'thead', 'tr'))) { + ['body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', + 'tfoot', 'th', 'thead', 'tr'])) { // Parse error. Ignore the token. } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && @@ -2229,10 +2229,10 @@ class HTML5_TreeBuilder { // XERROR $old = $this->foster_parent; $this->foster_parent = true; - $text_token = array( + $text_token = [ 'type' => HTML5_Tokenizer::CHARACTER, 'data' => $this->pendingTableCharacters, - ); + ]; $this->processWithRulesFor($text_token, self::IN_BODY); $this->foster_parent = $old; @@ -2290,16 +2290,16 @@ class HTML5_TreeBuilder { "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag name is "table" */ } elseif (($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) || ($token['type'] === HTML5_Tokenizer::ENDTAG && + ['caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', + 'thead', 'tr'])) || ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) { /* Parse error. Act as if an end tag with the tag name "caption" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'caption', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -2308,8 +2308,8 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', - 'thead', 'tr'))) { + ['body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', + 'thead', 'tr'])) { // Parse error. Ignore the token. $this->ignored = true; } else { @@ -2374,10 +2374,10 @@ class HTML5_TreeBuilder { } else { /* Act as if an end tag with the tag name "colgroup" had been seen, and then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'colgroup', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -2386,7 +2386,7 @@ class HTML5_TreeBuilder { break; case self::IN_TABLE_BODY: - $clear = array('tbody', 'tfoot', 'thead', 'html'); + $clear = ['tbody', 'tfoot', 'thead', 'html']; /* A start tag whose tag name is "tr" */ if ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'tr') { @@ -2403,17 +2403,17 @@ class HTML5_TreeBuilder { ($token['name'] === 'th' || $token['name'] === 'td')) { /* Parse error. Act as if a start tag with the tag name "tr" had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tr', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { + in_array($token['name'], ['tbody', 'tfoot', 'thead'])) { /* If the stack of open elements does not have an element in table scope with the same tag name as the token, this is a parse error. Ignore the token. */ @@ -2435,12 +2435,12 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "caption", "col", "colgroup", "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */ } elseif (($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead'))) || + ['caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead'])) || ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) { /* If the stack of open elements does not have a tbody, thead, or tfoot element in table scope, this is a parse error. Ignore the token. (fragment case) */ - if (!$this->elementInScope(array('tbody', 'thead', 'tfoot'), self::SCOPE_TABLE)) { + if (!$this->elementInScope(['tbody', 'thead', 'tfoot'], self::SCOPE_TABLE)) { // parse error $this->ignored = true; @@ -2452,10 +2452,10 @@ class HTML5_TreeBuilder { /* Act as if an end tag with the same tag name as the current node ("tbody", "tfoot", or "thead") had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => end($this->stack)->tagName, 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } @@ -2463,7 +2463,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html", "td", "th", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { + ['body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'])) { /* Parse error. Ignore the token. */ $this->ignored = true; @@ -2475,7 +2475,7 @@ class HTML5_TreeBuilder { break; case self::IN_ROW: - $clear = array('tr', 'html'); + $clear = ['tr', 'html']; /* A start tag whose tag name is one of: "th", "td" */ if ($token['type'] === HTML5_Tokenizer::STARTTAG && @@ -2514,21 +2514,21 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "caption", "col", "colgroup", "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */ } elseif (($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) || + ['caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'])) || ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) { /* Act as if an end tag with the tag name "tr" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tr', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); } /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { + in_array($token['name'], ['tbody', 'tfoot', 'thead'])) { /* If the stack of open elements does not have an element in table scope with the same tag name as the token, this is a parse error. Ignore the token. */ @@ -2539,10 +2539,10 @@ class HTML5_TreeBuilder { } else { /* Otherwise, act as if an end tag with the tag name "tr" had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tr', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } @@ -2550,7 +2550,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html", "td", "th" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th'))) { + ['body', 'caption', 'col', 'colgroup', 'html', 'td', 'th'])) { /* Parse error. Ignore the token. */ $this->ignored = true; @@ -2575,7 +2575,7 @@ class HTML5_TreeBuilder { } else { /* Generate implied end tags, except for elements with the same tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); + $this->generateImpliedEndTags([$token['name']]); /* Now, if the current node is not an element with the same tag name as the token, then this is a parse error. */ @@ -2599,12 +2599,12 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "caption", "col", "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { + ['caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', + 'thead', 'tr'])) { /* If the stack of open elements does not have a td or th element in table scope, then this is a parse error; ignore the token. (fragment case) */ - if (!$this->elementInScope(array('td', 'th'), self::SCOPE_TABLE)) { + if (!$this->elementInScope(['td', 'th'], self::SCOPE_TABLE)) { // parse error $this->ignored = true; @@ -2618,18 +2618,18 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html'))) { + ['body', 'caption', 'col', 'colgroup', 'html'])) { /* Parse error. Ignore the token. */ $this->ignored = true; /* An end tag whose tag name is one of: "table", "tbody", "tfoot", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { + ['table', 'tbody', 'tfoot', 'thead', 'tr'])) { /* If the stack of open elements does not have a td or th element in table scope, then this is a parse error; ignore the token. (innerHTML case) */ - if (!$this->elementInScope(array('td', 'th'), self::SCOPE_TABLE)) { + if (!$this->elementInScope(['td', 'th'], self::SCOPE_TABLE)) { // Parse error $this->ignored = true; @@ -2676,10 +2676,10 @@ class HTML5_TreeBuilder { /* If the current node is an option element, act as if an end tag with the tag name "option" had been seen. */ if (end($this->stack)->tagName === 'option') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -2691,19 +2691,19 @@ class HTML5_TreeBuilder { /* If the current node is an option element, act as if an end tag with the tag name "option" had been seen. */ if (end($this->stack)->tagName === 'option') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* If the current node is an optgroup element, act as if an end tag with the tag name "optgroup" had been seen. */ if (end($this->stack)->tagName === 'optgroup') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'optgroup', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -2720,10 +2720,10 @@ class HTML5_TreeBuilder { if ($this->stack[$elements_in_stack - 1]->tagName === 'option' && $this->stack[$elements_in_stack - 2]->tagName === 'optgroup') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* If the current node is an optgroup element, then pop that node @@ -2775,18 +2775,18 @@ class HTML5_TreeBuilder { } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'select') { /* Parse error. Act as if the token had been an end tag with the tag name "select" instead. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && ($token['name'] === 'input' || $token['name'] === 'keygen' || $token['name'] === 'textarea')) { // parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'script') { @@ -2806,19 +2806,19 @@ class HTML5_TreeBuilder { case self::IN_SELECT_IN_TABLE: if ($token['type'] === HTML5_Tokenizer::STARTTAG && - in_array($token['name'], array('caption', 'table', 'tbody', - 'tfoot', 'thead', 'tr', 'td', 'th'))) { + in_array($token['name'], ['caption', 'table', 'tbody', + 'tfoot', 'thead', 'tr', 'td', 'th'])) { // parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG, - )); + ]); $this->emitToken($token); /* An end tag whose tag name is one of: "caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && - in_array($token['name'], array('caption', 'table', 'tbody', 'tfoot', 'thead', 'tr', 'td', 'th'))) { + in_array($token['name'], ['caption', 'table', 'tbody', 'tfoot', 'thead', 'tr', 'td', 'th'])) { /* Parse error. */ // parse error @@ -2827,10 +2827,10 @@ class HTML5_TreeBuilder { with the tag name "select" had been seen, and reprocess the token. Otherwise, ignore the token. */ if ($this->elementInScope($token['name'], self::SCOPE_TABLE)) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } else { @@ -2862,7 +2862,7 @@ class HTML5_TreeBuilder { $token['name'] !== 'malignmark' && // XDOM end($this->stack)->namespaceURI === self::NS_MATHML && - in_array(end($this->stack)->tagName, array('mi', 'mo', 'mn', 'ms', 'mtext')) + in_array(end($this->stack)->tagName, ['mi', 'mo', 'mn', 'ms', 'mtext']) ) || ( $token['name'] === 'svg' && @@ -2873,7 +2873,7 @@ class HTML5_TreeBuilder { ( // XDOM end($this->stack)->namespaceURI === self::NS_SVG && - in_array(end($this->stack)->tagName, array('foreignObject', 'desc', 'title')) + in_array(end($this->stack)->tagName, ['foreignObject', 'desc', 'title']) ) || ( // XSKETCHY && XDOM @@ -2895,9 +2895,9 @@ class HTML5_TreeBuilder { if ($node->namespaceURI !== self::NS_HTML) { $found = true; break; - } elseif (in_array($node->tagName, array('table', 'html', + } elseif (in_array($node->tagName, ['table', 'html', 'applet', 'caption', 'td', 'th', 'button', 'marquee', - 'object')) || ($node->tagName === 'foreignObject' && + 'object']) || ($node->tagName === 'foreignObject' && $node->namespaceURI === self::NS_SVG)) { break; } @@ -2908,12 +2908,12 @@ class HTML5_TreeBuilder { } } elseif ($token['type'] === HTML5_Tokenizer::EOF || ( $token['type'] === HTML5_Tokenizer::STARTTAG && - (in_array($token['name'], array('b', "big", "blockquote", "body", "br", + (in_array($token['name'], ['b', "big", "blockquote", "body", "br", "center", "code", "dc", "dd", "div", "dl", "ds", "dt", "em", "embed", "h1", "h2", "h3", "h4", "h5", "h6", "head", "hr", "i", "img", "li", "listing", "menu", "meta", "nobr", "ol", "p", "pre", "ruby", "s", "small", "span", "strong", "strike", "sub", "sup", "table", "tt", "u", "ul", - "var")) || ($token['name'] === 'font' && ($this->getAttr($token, 'color') || + "var"]) || ($token['name'] === 'font' && ($this->getAttr($token, 'color') || $this->getAttr($token, 'face') || $this->getAttr($token, 'size')))))) { // XERROR: parse error do { @@ -2924,7 +2924,7 @@ class HTML5_TreeBuilder { $this->mode = $this->secondary_mode; $this->emitToken($token); } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG) { - static $svg_lookup = array( + static $svg_lookup = [ 'altglyph' => 'altGlyph', 'altglyphdef' => 'altGlyphDef', 'altglyphitem' => 'altGlyphItem', @@ -2961,7 +2961,7 @@ class HTML5_TreeBuilder { 'lineargradient' => 'linearGradient', 'radialgradient' => 'radialGradient', 'textpath' => 'textPath', - ); + ]; // XDOM $current = end($this->stack); if ($current->namespaceURI === self::NS_MATHML) { @@ -3251,7 +3251,7 @@ class HTML5_TreeBuilder { !$this->foster_parent || !in_array( end($this->stack)->tagName, - array('table', 'tbody', 'tfoot', 'thead', 'tr') + ['table', 'tbody', 'tfoot', 'thead', 'tr'] ) ) { end($this->stack)->appendChild($node); @@ -3297,14 +3297,14 @@ class HTML5_TreeBuilder { // these are valid for "in scope" and "in list item scope" } elseif ($scope !== self::SCOPE_TABLE && - (in_array($node->tagName, array('applet', 'caption', 'td', - 'th', 'button', 'marquee', 'object')) || + (in_array($node->tagName, ['applet', 'caption', 'td', + 'th', 'button', 'marquee', 'object']) || $node->tagName === 'foreignObject' && $node->namespaceURI === self::NS_SVG)) { return false; // these are valid for "in list item scope" - } elseif ($scope === self::SCOPE_LISTITEM && in_array($node->tagName, array('ol', 'ul'))) { + } elseif ($scope === self::SCOPE_LISTITEM && in_array($node->tagName, ['ol', 'ul'])) { return false; } @@ -3422,14 +3422,14 @@ class HTML5_TreeBuilder { /** * @param array $exclude */ - private function generateImpliedEndTags($exclude = array()) { + private function generateImpliedEndTags($exclude = []) { /* When the steps below require the UA to generate implied end tags, * then, while the current node is a dc element, a dd element, a ds * element, a dt element, an li element, an option element, an optgroup * element, a p element, an rp element, or an rt element, the UA must * pop the current node off the stack of open elements. */ $node = end($this->stack); - $elements = array_diff(array('dc', 'dd', 'ds', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude); + $elements = array_diff(['dc', 'dd', 'ds', 'dt', 'li', 'p', 'td', 'th', 'tr'], $exclude); while (in_array(end($this->stack)->tagName, $elements)) { array_pop($this->stack); @@ -3515,7 +3515,7 @@ class HTML5_TreeBuilder { /* 7. If node is a tbody, thead, or tfoot element, then switch the insertion mode to "in table body" and abort these steps. */ - } elseif (in_array($node->tagName, array('tbody', 'thead', 'tfoot'))) { + } elseif (in_array($node->tagName, ['tbody', 'thead', 'tfoot'])) { $this->mode = self::IN_TABLE_BODY; break; @@ -3592,12 +3592,12 @@ class HTML5_TreeBuilder { private function closeCell() { /* If the stack of open elements has a td or th element in table scope, then act as if an end tag token with that tag name had been seen. */ - foreach (array('td', 'th') as $cell) { + foreach (['td', 'th'] as $cell) { if ($this->elementInScope($cell, self::SCOPE_TABLE)) { - $this->emitToken(array( + $this->emitToken([ 'name' => $cell, 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); break; } @@ -3731,7 +3731,7 @@ class HTML5_TreeBuilder { * For debugging, prints the stack */ private function printStack() { - $names = array(); + $names = []; foreach ($this->stack as $i => $element) { $names[] = $element->tagName; } @@ -3745,7 +3745,7 @@ class HTML5_TreeBuilder { if (!$this->a_formatting) { return; } - $names = array(); + $names = []; foreach ($this->a_formatting as $node) { if ($node === self::MARKER) { $names[] = 'MARKER'; @@ -3797,7 +3797,7 @@ class HTML5_TreeBuilder { $this->dom->appendChild($root); /* 4.4 Set up the parser's stack of open elements so that it * contains just the single element root. */ - $this->stack = array($root); + $this->stack = [$root]; /* 4.5 Reset the parser's insertion mode appropriately. */ $this->resetInsertionMode($context); /* 4.6 Set the parser's form element pointer to the nearest node @@ -3832,7 +3832,7 @@ class HTML5_TreeBuilder { * @return mixed */ public function adjustSVGAttributes($token) { - static $lookup = array( + static $lookup = [ 'attributename' => 'attributeName', 'attributetype' => 'attributeType', 'basefrequency' => 'baseFrequency', @@ -3895,7 +3895,7 @@ class HTML5_TreeBuilder { 'xchannelselector' => 'xChannelSelector', 'ychannelselector' => 'yChannelSelector', 'zoomandpan' => 'zoomAndPan', - ); + ]; foreach ($token['attr'] as &$kp) { if (isset($lookup[$kp['name']])) { $kp['name'] = $lookup[$kp['name']]; @@ -3909,20 +3909,20 @@ class HTML5_TreeBuilder { * @return mixed */ public function adjustForeignAttributes($token) { - static $lookup = array( - 'xlink:actuate' => array('xlink', 'actuate', self::NS_XLINK), - 'xlink:arcrole' => array('xlink', 'arcrole', self::NS_XLINK), - 'xlink:href' => array('xlink', 'href', self::NS_XLINK), - 'xlink:role' => array('xlink', 'role', self::NS_XLINK), - 'xlink:show' => array('xlink', 'show', self::NS_XLINK), - 'xlink:title' => array('xlink', 'title', self::NS_XLINK), - 'xlink:type' => array('xlink', 'type', self::NS_XLINK), - 'xml:base' => array('xml', 'base', self::NS_XML), - 'xml:lang' => array('xml', 'lang', self::NS_XML), - 'xml:space' => array('xml', 'space', self::NS_XML), - 'xmlns' => array(null, 'xmlns', self::NS_XMLNS), - 'xmlns:xlink' => array('xmlns', 'xlink', self::NS_XMLNS), - ); + static $lookup = [ + 'xlink:actuate' => ['xlink', 'actuate', self::NS_XLINK], + 'xlink:arcrole' => ['xlink', 'arcrole', self::NS_XLINK], + 'xlink:href' => ['xlink', 'href', self::NS_XLINK], + 'xlink:role' => ['xlink', 'role', self::NS_XLINK], + 'xlink:show' => ['xlink', 'show', self::NS_XLINK], + 'xlink:title' => ['xlink', 'title', self::NS_XLINK], + 'xlink:type' => ['xlink', 'type', self::NS_XLINK], + 'xml:base' => ['xml', 'base', self::NS_XML], + 'xml:lang' => ['xml', 'lang', self::NS_XML], + 'xml:space' => ['xml', 'space', self::NS_XML], + 'xmlns' => [null, 'xmlns', self::NS_XMLNS], + 'xmlns:xlink' => ['xmlns', 'xlink', self::NS_XMLNS], + ]; foreach ($token['attr'] as &$kp) { if (isset($lookup[$kp['name']])) { $kp['name'] = $lookup[$kp['name']]; diff --git a/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg b/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg index 09b97e6c350de210d65da84c435144f01ca9f41c..83ba7e74cbb4e808b25373fc04da35d31114850e 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg +++ b/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg @@ -2,7 +2,7 @@ <svg width="64" height="64" xmlns="http://www.w3.org/2000/svg"> <g> <rect stroke="#666666" id="svg_1" height="60.499994" width="60.166667" y="1.666669" x="1.999998" stroke-width="1.5" fill="none"/> - <line stroke-linecap="null" stroke-linejoin="null" id="svg_3" y2="59.333253" x2="59.749916" y1="4.333415" x1="4.250079" stroke-width="1.5" stroke="#999999" fill="none"/> - <line stroke-linecap="null" stroke-linejoin="null" id="svg_4" y2="59.999665" x2="4.062838" y1="3.750342" x1="60.062164" stroke-width="1.5" stroke="#999999" fill="none"/> + <line stroke-linecap="butt" stroke-linejoin="miter" id="svg_3" y2="59.333253" x2="59.749916" y1="4.333415" x1="4.250079" stroke-width="1.5" stroke="#999999" fill="none"/> + <line stroke-linecap="butt" stroke-linejoin="miter" id="svg_4" y2="59.999665" x2="4.062838" y1="3.750342" x1="60.062164" stroke-width="1.5" stroke="#999999" fill="none"/> </g> </svg> \ No newline at end of file diff --git a/civicrm/vendor/dompdf/dompdf/lib/res/html.css b/civicrm/vendor/dompdf/dompdf/lib/res/html.css index 372ff6e3ce153cabb6ff71a386b96131fe7c3743..75f811dabe8a1abc00c19144f1b4b6b664218a92 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/res/html.css +++ b/civicrm/vendor/dompdf/dompdf/lib/res/html.css @@ -48,7 +48,7 @@ summary { body { page-break-before: avoid; - display: block; + display: block !important; counter-increment: page; } @@ -161,7 +161,11 @@ table[border] th { /* make sure backgrounds are inherited in tables -- see bug 4510 */ td, th, tr { - background: inherit; + background-color: inherit; + background-image: inherit; + background-image-resolution: inherit; + background-position: inherit; + background-repeat: inherit; } /* caption inherits from table not table-outer */ @@ -213,6 +217,7 @@ td { th { display: table-cell; vertical-align: inherit; + text-align: center; font-weight: bold; padding: 1px; } diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php index d976627b84fe6572e853909adcbc74b19e614676..52c5c445d51a3fa66ad99a1bde6f1b619c8f4f6f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php +++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php @@ -42,135 +42,135 @@ class CPDF implements Canvas * * @var array; */ - static $PAPER_SIZES = array( - "4a0" => array(0, 0, 4767.87, 6740.79), - "2a0" => array(0, 0, 3370.39, 4767.87), - "a0" => array(0, 0, 2383.94, 3370.39), - "a1" => array(0, 0, 1683.78, 2383.94), - "a2" => array(0, 0, 1190.55, 1683.78), - "a3" => array(0, 0, 841.89, 1190.55), - "a4" => array(0, 0, 595.28, 841.89), - "a5" => array(0, 0, 419.53, 595.28), - "a6" => array(0, 0, 297.64, 419.53), - "a7" => array(0, 0, 209.76, 297.64), - "a8" => array(0, 0, 147.40, 209.76), - "a9" => array(0, 0, 104.88, 147.40), - "a10" => array(0, 0, 73.70, 104.88), - "b0" => array(0, 0, 2834.65, 4008.19), - "b1" => array(0, 0, 2004.09, 2834.65), - "b2" => array(0, 0, 1417.32, 2004.09), - "b3" => array(0, 0, 1000.63, 1417.32), - "b4" => array(0, 0, 708.66, 1000.63), - "b5" => array(0, 0, 498.90, 708.66), - "b6" => array(0, 0, 354.33, 498.90), - "b7" => array(0, 0, 249.45, 354.33), - "b8" => array(0, 0, 175.75, 249.45), - "b9" => array(0, 0, 124.72, 175.75), - "b10" => array(0, 0, 87.87, 124.72), - "c0" => array(0, 0, 2599.37, 3676.54), - "c1" => array(0, 0, 1836.85, 2599.37), - "c2" => array(0, 0, 1298.27, 1836.85), - "c3" => array(0, 0, 918.43, 1298.27), - "c4" => array(0, 0, 649.13, 918.43), - "c5" => array(0, 0, 459.21, 649.13), - "c6" => array(0, 0, 323.15, 459.21), - "c7" => array(0, 0, 229.61, 323.15), - "c8" => array(0, 0, 161.57, 229.61), - "c9" => array(0, 0, 113.39, 161.57), - "c10" => array(0, 0, 79.37, 113.39), - "ra0" => array(0, 0, 2437.80, 3458.27), - "ra1" => array(0, 0, 1729.13, 2437.80), - "ra2" => array(0, 0, 1218.90, 1729.13), - "ra3" => array(0, 0, 864.57, 1218.90), - "ra4" => array(0, 0, 609.45, 864.57), - "sra0" => array(0, 0, 2551.18, 3628.35), - "sra1" => array(0, 0, 1814.17, 2551.18), - "sra2" => array(0, 0, 1275.59, 1814.17), - "sra3" => array(0, 0, 907.09, 1275.59), - "sra4" => array(0, 0, 637.80, 907.09), - "letter" => array(0, 0, 612.00, 792.00), - "half-letter" => array(0, 0, 396.00, 612.00), - "legal" => array(0, 0, 612.00, 1008.00), - "ledger" => array(0, 0, 1224.00, 792.00), - "tabloid" => array(0, 0, 792.00, 1224.00), - "executive" => array(0, 0, 521.86, 756.00), - "folio" => array(0, 0, 612.00, 936.00), - "commercial #10 envelope" => array(0, 0, 684, 297), - "catalog #10 1/2 envelope" => array(0, 0, 648, 864), - "8.5x11" => array(0, 0, 612.00, 792.00), - "8.5x14" => array(0, 0, 612.00, 1008.0), - "11x17" => array(0, 0, 792.00, 1224.00), - ); + static $PAPER_SIZES = [ + "4a0" => [0, 0, 4767.87, 6740.79], + "2a0" => [0, 0, 3370.39, 4767.87], + "a0" => [0, 0, 2383.94, 3370.39], + "a1" => [0, 0, 1683.78, 2383.94], + "a2" => [0, 0, 1190.55, 1683.78], + "a3" => [0, 0, 841.89, 1190.55], + "a4" => [0, 0, 595.28, 841.89], + "a5" => [0, 0, 419.53, 595.28], + "a6" => [0, 0, 297.64, 419.53], + "a7" => [0, 0, 209.76, 297.64], + "a8" => [0, 0, 147.40, 209.76], + "a9" => [0, 0, 104.88, 147.40], + "a10" => [0, 0, 73.70, 104.88], + "b0" => [0, 0, 2834.65, 4008.19], + "b1" => [0, 0, 2004.09, 2834.65], + "b2" => [0, 0, 1417.32, 2004.09], + "b3" => [0, 0, 1000.63, 1417.32], + "b4" => [0, 0, 708.66, 1000.63], + "b5" => [0, 0, 498.90, 708.66], + "b6" => [0, 0, 354.33, 498.90], + "b7" => [0, 0, 249.45, 354.33], + "b8" => [0, 0, 175.75, 249.45], + "b9" => [0, 0, 124.72, 175.75], + "b10" => [0, 0, 87.87, 124.72], + "c0" => [0, 0, 2599.37, 3676.54], + "c1" => [0, 0, 1836.85, 2599.37], + "c2" => [0, 0, 1298.27, 1836.85], + "c3" => [0, 0, 918.43, 1298.27], + "c4" => [0, 0, 649.13, 918.43], + "c5" => [0, 0, 459.21, 649.13], + "c6" => [0, 0, 323.15, 459.21], + "c7" => [0, 0, 229.61, 323.15], + "c8" => [0, 0, 161.57, 229.61], + "c9" => [0, 0, 113.39, 161.57], + "c10" => [0, 0, 79.37, 113.39], + "ra0" => [0, 0, 2437.80, 3458.27], + "ra1" => [0, 0, 1729.13, 2437.80], + "ra2" => [0, 0, 1218.90, 1729.13], + "ra3" => [0, 0, 864.57, 1218.90], + "ra4" => [0, 0, 609.45, 864.57], + "sra0" => [0, 0, 2551.18, 3628.35], + "sra1" => [0, 0, 1814.17, 2551.18], + "sra2" => [0, 0, 1275.59, 1814.17], + "sra3" => [0, 0, 907.09, 1275.59], + "sra4" => [0, 0, 637.80, 907.09], + "letter" => [0, 0, 612.00, 792.00], + "half-letter" => [0, 0, 396.00, 612.00], + "legal" => [0, 0, 612.00, 1008.00], + "ledger" => [0, 0, 1224.00, 792.00], + "tabloid" => [0, 0, 792.00, 1224.00], + "executive" => [0, 0, 521.86, 756.00], + "folio" => [0, 0, 612.00, 936.00], + "commercial #10 envelope" => [0, 0, 684, 297], + "catalog #10 1/2 envelope" => [0, 0, 648, 864], + "8.5x11" => [0, 0, 612.00, 792.00], + "8.5x14" => [0, 0, 612.00, 1008.0], + "11x17" => [0, 0, 792.00, 1224.00], + ]; /** * The Dompdf object * * @var Dompdf */ - private $_dompdf; + protected $_dompdf; /** * Instance of Cpdf class * * @var Cpdf */ - private $_pdf; + protected $_pdf; /** * PDF width, in points * * @var float */ - private $_width; + protected $_width; /** * PDF height, in points * * @var float; */ - private $_height; + protected $_height; /** * Current page number * * @var int */ - private $_page_number; + protected $_page_number; /** * Total number of pages * * @var int */ - private $_page_count; + protected $_page_count; /** * Text to display on every page * * @var array */ - private $_page_text; + protected $_page_text; /** * Array of pages for accessing after rendering is initially complete * * @var array */ - private $_pages; + protected $_pages; /** * Array of temporary cached images to be deleted when processing is complete * * @var array */ - private $_image_cache; + protected $_image_cache; /** * Currently-applied opacity level (0 - 1) * * @var float */ - private $_current_opacity = 1; + protected $_current_opacity = 1; /** * Class constructor @@ -190,12 +190,12 @@ class CPDF implements Canvas } if (mb_strtolower($orientation) === "landscape") { - list($size[2], $size[3]) = array($size[3], $size[2]); + [$size[2], $size[3]] = [$size[3], $size[2]]; } $this->_dompdf = $dompdf; - $this->_pdf = new \Cpdf( + $this->_pdf = new \Dompdf\Cpdf( $size, true, $dompdf->getOptions()->getFontCache(), @@ -211,11 +211,11 @@ class CPDF implements Canvas $this->_height = $size[3] - $size[1]; $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); + $this->_page_text = []; - $this->_pages = array($this->_pdf->getFirstPageId()); + $this->_pages = [$this->_pdf->getFirstPageId()]; - $this->_image_cache = array(); + $this->_image_cache = []; } /** @@ -254,7 +254,7 @@ class CPDF implements Canvas /** * Returns the Cpdf instance * - * @return \Cpdf + * @return \Dompdf\Cpdf */ public function get_cpdf() { @@ -523,10 +523,10 @@ class CPDF implements Canvas $this->_current_opacity = $opacity; } - public function set_default_view($view, $options = array()) + public function set_default_view($view, $options = []) { array_unshift($options, $view); - call_user_func_array(array($this->_pdf, "openHere"), $options); + call_user_func_array([$this->_pdf, "openHere"], $options); } /** @@ -551,7 +551,7 @@ class CPDF implements Canvas * @param float $width * @param array $style */ - public function line($x1, $y1, $x2, $y2, $color, $width, $style = array()) + public function line($x1, $y1, $x2, $y2, $color, $width, $style = []) { $this->_set_stroke_color($color); $this->_set_line_style($width, "butt", "", $style); @@ -574,7 +574,7 @@ class CPDF implements Canvas * @param float $width * @param array $style optional */ - public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = array()) + public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = []) { $_t = 'line'; $this->_page_text[] = compact('_t', 'x1', 'y1', 'x2', 'y2', 'color', 'width', 'style'); @@ -591,7 +591,7 @@ class CPDF implements Canvas * @param float $width * @param array $style */ - public function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = array()) + public function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = []) { $this->_set_stroke_color($color); $this->_set_line_style($width, "butt", "", $style); @@ -614,31 +614,34 @@ class CPDF implements Canvas $func_name = "imagecreatefrom$type"; if (!function_exists($func_name)) { - if (!method_exists("Dompdf\Helpers", $func_name)) { + if (!method_exists(Helpers::class, $func_name)) { throw new Exception("Function $func_name() not found. Cannot convert $type image: $image_url. Please install the image PHP extension."); } $func_name = "\\Dompdf\\Helpers::" . $func_name; } - set_error_handler(array("\\Dompdf\\Helpers", "record_warnings")); - $im = call_user_func($func_name, $image_url); + set_error_handler([Helpers::class, 'record_warnings']); - if ($im) { - imageinterlace($im, false); + try { + $im = call_user_func($func_name, $image_url); - $tmp_dir = $this->_dompdf->getOptions()->getTempDir(); - $tmp_name = @tempnam($tmp_dir, "{$type}dompdf_img_"); - @unlink($tmp_name); - $filename = "$tmp_name.png"; - $this->_image_cache[] = $filename; + if ($im) { + imageinterlace($im, false); - imagepng($im, $filename); - imagedestroy($im); - } else { - $filename = Cache::$broken_image; - } + $tmp_dir = $this->_dompdf->getOptions()->getTempDir(); + $tmp_name = @tempnam($tmp_dir, "{$type}dompdf_img_"); + @unlink($tmp_name); + $filename = "$tmp_name.png"; + $this->_image_cache[] = $filename; - restore_error_handler(); + imagepng($im, $filename); + imagedestroy($im); + } else { + $filename = Cache::$broken_image; + } + } finally { + restore_error_handler(); + } return $filename; } @@ -652,7 +655,7 @@ class CPDF implements Canvas * @param float $width * @param array $style */ - public function rectangle($x1, $y1, $w, $h, $color, $width, $style = array()) + public function rectangle($x1, $y1, $w, $h, $color, $width, $style = []) { $this->_set_stroke_color($color); $this->_set_line_style($width, "butt", "", $style); @@ -775,7 +778,7 @@ class CPDF implements Canvas */ public function transform($a, $b, $c, $d, $e, $f) { - $this->_pdf->transform(array($a, $b, $c, $d, $e, $f)); + $this->_pdf->transform([$a, $b, $c, $d, $e, $f]); } /** @@ -785,7 +788,7 @@ class CPDF implements Canvas * @param array $style * @param bool $fill */ - public function polygon($points, $color, $width = null, $style = array(), $fill = false) + public function polygon($points, $color, $width = null, $style = [], $fill = false) { $this->_set_fill_color($color); $this->_set_stroke_color($color); @@ -835,7 +838,7 @@ class CPDF implements Canvas */ public function image($img, $x, $y, $w, $h, $resolution = "normal") { - list($width, $height, $type) = Helpers::dompdf_getimagesize($img, $this->get_dompdf()->getHttpContext()); + [$width, $height, $type] = Helpers::dompdf_getimagesize($img, $this->get_dompdf()->getHttpContext()); $debug_png = $this->_dompdf->getOptions()->getDebugPng(); @@ -886,7 +889,7 @@ class CPDF implements Canvas * @param float $char_space * @param float $angle */ - public function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0) + public function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0) { $pdf = $this->_pdf; @@ -1044,7 +1047,7 @@ class CPDF implements Canvas * @param float $char_space char spacing adjustment * @param float $angle angle to write the text at, measured CW starting from the x-axis */ - public function page_text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0) + public function page_text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0) { $_t = "text"; $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "word_space", "char_space", "angle"); @@ -1100,8 +1103,8 @@ class CPDF implements Canvas switch ($_t) { case "text": - $text = str_replace(array("{PAGE_NUM}", "{PAGE_COUNT}"), - array($page_number, $this->_page_count), $text); + $text = str_replace(["{PAGE_NUM}", "{PAGE_COUNT}"], + [$page_number, $this->_page_count], $text); $this->text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle); break; @@ -1109,7 +1112,7 @@ class CPDF implements Canvas if (!$eval) { $eval = new PhpEvaluator($this); } - $eval->evaluate($code, array('PAGE_NUM' => $page_number, 'PAGE_COUNT' => $this->_page_count)); + $eval->evaluate($code, ['PAGE_NUM' => $page_number, 'PAGE_COUNT' => $this->_page_count]); break; case 'line': @@ -1129,7 +1132,7 @@ class CPDF implements Canvas * @param string $filename The filename to present to the client. * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). */ - public function stream($filename = "document.pdf", $options = array()) + public function stream($filename = "document.pdf", $options = []) { if (headers_sent()) { die("Unable to stream pdf: headers already sent"); @@ -1147,7 +1150,7 @@ class CPDF implements Canvas header("Content-Type: application/pdf"); header("Content-Length: " . mb_strlen($tmp, "8bit")); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".pdf")) . ".pdf"; + $filename = str_replace(["\n", "'"], "", basename($filename, ".pdf")) . ".pdf"; $attachment = $options["Attachment"] ? "attachment" : "inline"; header(Helpers::buildContentDispositionHeader($attachment, $filename)); @@ -1161,7 +1164,7 @@ class CPDF implements Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1). * @return string */ - public function output($options = array()) + public function output($options = []) { if (!isset($options["compress"])) $options["compress"] = true; diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php index 92fbdbe115b245ae2fc3de5969d1b79fa78541f2..3a46c85a0be90470f1ae9c21d874970e28223985 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php +++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php @@ -26,98 +26,98 @@ class GD implements Canvas /** * @var Dompdf */ - private $_dompdf; + protected $_dompdf; /** * Resource handle for the image * * @var resource */ - private $_img; + protected $_img; /** * Resource handle for the image * * @var resource[] */ - private $_imgs; + protected $_imgs; /** * Apparent canvas width in pixels * * @var int */ - private $_width; + protected $_width; /** * Apparent canvas height in pixels * * @var int */ - private $_height; + protected $_height; /** * Actual image width in pixels * * @var int */ - private $_actual_width; + protected $_actual_width; /** * Actual image height in pixels * * @var int */ - private $_actual_height; + protected $_actual_height; /** * Current page number * * @var int */ - private $_page_number; + protected $_page_number; /** * Total number of pages * * @var int */ - private $_page_count; + protected $_page_count; /** * Image antialias factor * * @var float */ - private $_aa_factor; + protected $_aa_factor; /** * Allocated colors * * @var array */ - private $_colors; + protected $_colors; /** * Background color * * @var int */ - private $_bg_color; + protected $_bg_color; /** * Background color array * * @var int */ - private $_bg_color_array; + protected $_bg_color_array; /** * Actual DPI * * @var int */ - private $dpi; + protected $dpi; /** * Amount to scale font sizes @@ -138,7 +138,7 @@ class GD implements Canvas * @param float $aa_factor Anti-aliasing factor, 1 for no AA * @param array $bg_color Image background color: array(r,g,b,a), 0 <= r,g,b,a <= 1 */ - public function __construct($size = 'letter', $orientation = "portrait", Dompdf $dompdf, $aa_factor = 1.0, $bg_color = array(1, 1, 1, 0)) + public function __construct($size = 'letter', $orientation = "portrait", Dompdf $dompdf, $aa_factor = 1.0, $bg_color = [1, 1, 1, 0]) { if (!is_array($size)) { @@ -152,7 +152,7 @@ class GD implements Canvas } if (strtolower($orientation) === "landscape") { - list($size[2], $size[3]) = array($size[3], $size[2]); + list($size[2], $size[3]) = [$size[3], $size[2]]; } $this->_dompdf = $dompdf; @@ -174,9 +174,12 @@ class GD implements Canvas $this->_actual_width = $this->_upscale($this->_width); $this->_actual_height = $this->_upscale($this->_height); + $this->_page_number = $this->_page_count = 1; + $this->_page_text = []; + if (is_null($bg_color) || !is_array($bg_color)) { // Pure white bg - $bg_color = array(1, 1, 1, 0); + $bg_color = [1, 1, 1, 0]; } $this->_bg_color_array = $bg_color; @@ -278,7 +281,7 @@ class GD implements Canvas * @param array $color The new current color * @return int The allocated color */ - private function _allocate_color($color) + protected function _allocate_color($color) { $a = isset($color["alpha"]) ? $color["alpha"] : 1; @@ -325,7 +328,7 @@ class GD implements Canvas * @param float $length * @return float */ - private function _upscale($length) + protected function _upscale($length) { return ($length * $this->dpi) / 72 * $this->_aa_factor; } @@ -336,7 +339,7 @@ class GD implements Canvas * @param float $length * @return float */ - private function _downscale($length) + protected function _downscale($length) { return ($length / $this->dpi * 72) / $this->_aa_factor; } @@ -370,7 +373,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0) { - $gd_style = array(); + $gd_style = []; if (count($style) == 1) { for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) { @@ -421,7 +424,7 @@ class GD implements Canvas * @param float $width * @param array $style */ - public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = array()) + public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = []) { // @todo } @@ -455,7 +458,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0) { - $gd_style = array(); + $gd_style = []; foreach ($style as $length) { for ($i = 0; $i < $length; $i++) { @@ -630,7 +633,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0 && !$fill) { - $gd_style = array(); + $gd_style = []; foreach ($style as $length) { for ($i = 0; $i < $length; $i++) { @@ -679,7 +682,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0 && !$fill) { - $gd_style = array(); + $gd_style = []; foreach ($style as $length) { for ($i = 0; $i < $length; $i++) { @@ -768,7 +771,7 @@ class GD implements Canvas * * @return void */ - public function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_spacing = 0.0, $char_spacing = 0.0, $angle = 0.0) + public function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_spacing = 0.0, $char_spacing = 0.0, $angle = 0.0) { // Scale by the AA factor and DPI $x = $this->_upscale($x); @@ -784,7 +787,7 @@ class GD implements Canvas // eg: &#160; will render   rather than its character. $text = preg_replace('/&(#(?:x[a-fA-F0-9]+|[0-9]+);)/', '&\1', $text); - $text = mb_encode_numericentity($text, array(0x0080, 0xff, 0, 0xff), 'UTF-8'); + $text = mb_encode_numericentity($text, [0x0080, 0xff, 0, 0xff], 'UTF-8'); $font = $this->get_ttf_file($font); @@ -836,7 +839,7 @@ class GD implements Canvas * @param string $view * @param array $options */ - public function set_default_view($view, $options = array()) + public function set_default_view($view, $options = []) { // N/A } @@ -863,7 +866,7 @@ class GD implements Canvas // eg: &#160; will render   rather than its character. $text = preg_replace('/&(#(?:x[a-fA-F0-9]+|[0-9]+);)/', '&\1', $text); - $text = mb_encode_numericentity($text, array(0x0080, 0xffff, 0, 0xffff), 'UTF-8'); + $text = mb_encode_numericentity($text, [0x0080, 0xffff, 0, 0xffff], 'UTF-8'); // FIXME: word spacing list($x1, , $x2) = imagettfbbox($size, 0, $font, $text); @@ -917,7 +920,7 @@ class GD implements Canvas return $this->_downscale($height); } - private function get_font_height_actual($font, $size) + protected function get_font_height_actual($font, $size) { $font = $this->get_ttf_file($font); $ratio = $this->_dompdf->getOptions()->getFontHeightRatio(); @@ -990,7 +993,7 @@ class GD implements Canvas * @param array $options Associative array: 'type' => jpeg|jpg|png; 'quality' => 0 - 100 (JPEG only); * 'page' => Number of the page to output (defaults to the first); 'Attachment': 1 or 0 (default 1). */ - public function stream($filename, $options = array()) + public function stream($filename, $options = []) { if (headers_sent()) { die("Unable to stream image: headers already sent"); @@ -1016,7 +1019,7 @@ class GD implements Canvas header("Cache-Control: private"); header("Content-Type: $contentType"); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".$type")) . $extension; + $filename = str_replace(["\n", "'"], "", basename($filename, ".$type")) . $extension; $attachment = $options["Attachment"] ? "attachment" : "inline"; header(Helpers::buildContentDispositionHeader($attachment, $filename)); @@ -1031,7 +1034,7 @@ class GD implements Canvas * 'page' => Number of the page to output (defaults to the first). * @return string */ - public function output($options = array()) + public function output($options = []) { ob_start(); @@ -1046,7 +1049,7 @@ class GD implements Canvas * @param array $options Associative array: 'type' => jpeg|jpg|png; 'quality' => 0 - 100 (JPEG only); * 'page' => Number of the page to output (defaults to the first). */ - private function _output($options = array()) + protected function _output($options = []) { if (!isset($options["type"])) $options["type"] = "png"; if (!isset($options["page"])) $options["page"] = 1; diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php index e999c580e1e57fe0163efa817094861ef98ae987..d6baebfea629a5427c5bd1eb29f1690854491c2a 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php +++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php @@ -39,7 +39,7 @@ class PDFLib implements Canvas * * @var array; */ - static public $PAPER_SIZES = array(); // Set to Dompdf\Adapter\CPDF::$PAPER_SIZES below. + public static $PAPER_SIZES = []; // Set to Dompdf\Adapter\CPDF::$PAPER_SIZES below. /** * Whether to create PDFs in memory or on disk @@ -53,7 +53,7 @@ class PDFLib implements Canvas * * @var null|int */ - static private $MAJOR_VERSION = null; + protected static $MAJOR_VERSION = null; /** @@ -61,7 +61,7 @@ class PDFLib implements Canvas * * @var array */ - static public $nativeFontsTpPDFLib = array( + public static $nativeFontsTpPDFLib = [ "courier" => "Courier", "courier-bold" => "Courier-Bold", "courier-oblique" => "Courier-Oblique", @@ -78,124 +78,124 @@ class PDFLib implements Canvas "symbol" => "Symbol", "zapfdinbats" => "ZapfDingbats", "zapfdingbats" => "ZapfDingbats", - ); + ]; /** * @var \Dompdf\Dompdf */ - private $_dompdf; + protected $_dompdf; /** * Instance of PDFLib class * * @var \PDFLib */ - private $_pdf; + protected $_pdf; /** * Name of temporary file used for PDFs created on disk * * @var string */ - private $_file; + protected $_file; /** * PDF width, in points * * @var float */ - private $_width; + protected $_width; /** * PDF height, in points * * @var float */ - private $_height; + protected $_height; /** * Last fill color used * * @var array */ - private $_last_fill_color; + protected $_last_fill_color; /** * Last stroke color used * * @var array */ - private $_last_stroke_color; + protected $_last_stroke_color; /** * The current opacity level * * @var array */ - private $_current_opacity; + protected $_current_opacity; /** * Cache of image handles * * @var array */ - private $_imgs; + protected $_imgs; /** * Cache of font handles * * @var array */ - private $_fonts; + protected $_fonts; /** * Cache of fontFile checks * * @var array */ - private $_fontsFiles; + protected $_fontsFiles; /** * List of objects (templates) to add to multiple pages * * @var array */ - private $_objs; + protected $_objs; /** * List of gstate objects created for this PDF (for reuse) * * @var array */ - private $_gstates = array(); + protected $_gstates = []; /** * Current page number * * @var int */ - private $_page_number; + protected $_page_number; /** * Total number of pages * * @var int */ - private $_page_count; + protected $_page_count; /** * Text to display on every page * * @var array */ - private $_page_text; + protected $_page_text; /** * Array of pages for accesing after rendering is initially complete * * @var array */ - private $_pages; + protected $_pages; /** * Class constructor @@ -216,7 +216,7 @@ class PDFLib implements Canvas } if (mb_strtolower($orientation) === "landscape") { - list($size[2], $size[3]) = array($size[3], $size[2]); + list($size[2], $size[3]) = [$size[3], $size[2]]; } $this->_width = $size[2] - $size[0]; @@ -267,11 +267,11 @@ class PDFLib implements Canvas $this->_pdf->begin_page_ext($this->_width, $this->_height, ""); $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); + $this->_page_text = []; - $this->_imgs = array(); - $this->_fonts = array(); - $this->_objs = array(); + $this->_imgs = []; + $this->_fonts = []; + $this->_objs = []; } /** @@ -338,9 +338,13 @@ class PDFLib implements Canvas public function open_object() { $this->_pdf->suspend_page(""); - $ret = $this->_pdf->begin_template($this->_width, $this->_height); + if ($this->getPDFLibMajorVersion() >= 7) { + $ret = $this->_pdf->begin_template_ext($this->_width, $this->_height, null); + } else { + $ret = $this->_pdf->begin_template($this->_width, $this->_height); + } $this->_pdf->save(); - $this->_objs[$ret] = array("start_page" => $this->_page_number); + $this->_objs[$ret] = ["start_page" => $this->_page_number]; return $ret; } @@ -367,7 +371,11 @@ class PDFLib implements Canvas public function close_object() { $this->_pdf->restore(); - $this->_pdf->end_template(); + if ($this->getPDFLibMajorVersion() >= 7) { + $this->_pdf->end_template_ext($this->_width, $this->_height); + } else { + $this->_pdf->end_template(); + } $this->_pdf->resume_page("pagenumber=" . $this->_page_number); } @@ -450,7 +458,6 @@ class PDFLib implements Canvas $this->_pdf->fit_image($obj, 0, 0, ""); } } - } /** @@ -513,6 +520,10 @@ class PDFLib implements Canvas */ protected function _set_line_style($width, $cap, $join, $dash) { + if (!is_array($dash)) { + $dash = array(); + } + if (count($dash) == 1) { $dash[] = $dash[0]; } @@ -599,7 +610,11 @@ class PDFLib implements Canvas */ protected function _set_stroke_color($color) { + // TODO: we should check the current PDF stroke color + // instead of the cached value if ($this->_last_stroke_color == $color) { + // FIXME: do nothing, this optimization is broken by the + // stroke being set as a side effect of other operations //return; } @@ -612,16 +627,16 @@ class PDFLib implements Canvas if (isset($color[3])) { $type = "cmyk"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], $color[3]); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], $color[3]]; } elseif (isset($color[2])) { $type = "rgb"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], null]; } else { $type = "gray"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], null, null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], null, null]; } - $this->_set_stroke_opacity($alpha); + $this->_set_stroke_opacity($alpha, "Normal"); $this->_pdf->setcolor("stroke", $type, $c1, $c2, $c3, $c4); } @@ -632,8 +647,12 @@ class PDFLib implements Canvas */ protected function _set_fill_color($color) { + // TODO: we should check the current PDF fill color + // instead of the cached value if ($this->_last_fill_color == $color) { - return; + // FIXME: do nothing, this optimization is broken by the + // fill being set as a side effect of other operations + //return; } $alpha = isset($color["alpha"]) ? $color["alpha"] : 1; @@ -645,16 +664,16 @@ class PDFLib implements Canvas if (isset($color[3])) { $type = "cmyk"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], $color[3]); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], $color[3]]; } elseif (isset($color[2])) { $type = "rgb"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], null]; } else { $type = "gray"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], null, null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], null, null]; } - $this->_set_fill_opacity($alpha); + $this->_set_fill_opacity($alpha, "Normal"); $this->_pdf->setcolor("fill", $type, $c1, $c2, $c3, $c4); } @@ -714,7 +733,7 @@ class PDFLib implements Canvas return $this->_pdf->set_gstate($gstate); } - public function set_default_view($view, $options = array()) + public function set_default_view($view, $options = []) { // TODO // http://www.pdflib.com/fileadmin/pdflib/pdf/manuals/PDFlib-8.0.2-API-reference.pdf @@ -886,7 +905,7 @@ class PDFLib implements Canvas * @param float $width * @param array $style optional */ - public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = array()) + public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = []) { $_t = 'line'; $this->_page_text[] = compact('_t', 'x1', 'y1', 'x2', 'y2', 'color', 'width', 'style'); @@ -903,7 +922,7 @@ class PDFLib implements Canvas * @param float $width * @param array $style */ - public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = array()) + public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = []) { $this->_set_line_style($width, "butt", "", $style); $this->_set_stroke_color($color); @@ -985,7 +1004,37 @@ class PDFLib implements Canvas */ public function clipping_roundrectangle($x1, $y1, $w, $h, $rTL, $rTR, $rBR, $rBL) { - $this->clipping_rectangle($x1, $y1, $w, $h); + if ($this->getPDFLibMajorVersion() < 9) { + //TODO: add PDFLib7 support + $this->clipping_rectangle($x1, $y1, $w, $h); + return; + } + + $this->_pdf->save(); + + // we use 0,0 for the base coordinates for the path points + // since we're drawing the path at the $x1,$y1 coordinates + + $path = 0; + //start: left edge, top end + $path = $this->_pdf->add_path_point($path, 0, 0 - $rTL + $h, "move", ""); + // line: left edge, bottom end + $path = $this->_pdf->add_path_point($path, 0, 0 + $rBL, "line", ""); + // curve: bottom-left corner + $path = $this->_pdf->add_path_point($path, 0 + $rBL, 0, "elliptical", "radius=$rBL clockwise=false"); + // line: bottom edge, left end + $path = $this->_pdf->add_path_point($path, 0 - $rBR + $w, 0, "line", ""); + // curve: bottom-right corner + $path = $this->_pdf->add_path_point($path, 0 + $w, 0 + $rBR, "elliptical", "radius=$rBR clockwise=false"); + // line: right edge, top end + $path = $this->_pdf->add_path_point($path, 0 + $w, 0 - $rTR + $h, "line", ""); + // curve: top-right corner + $path = $this->_pdf->add_path_point($path, 0 - $rTR + $w, 0 +$h, "elliptical", "radius=$rTR clockwise=false"); + // line: top edge, left end + $path = $this->_pdf->add_path_point($path, 0 + $rTL, 0 + $h, "line", ""); + // curve: top-left corner + $path = $this->_pdf->add_path_point($path, 0, 0 - $rTL + $h, "elliptical", "radius=$rTL clockwise=false"); + $this->_pdf->draw_path($path, $x1, $this->_height-$y1-$h, "clip=true"); } /** @@ -1156,13 +1205,28 @@ class PDFLib implements Canvas $img_type = Cache::detect_type($img_url, $this->get_dompdf()->getHttpContext()); if (!isset($this->_imgs[$img_url])) { - $this->_imgs[$img_url] = $this->_pdf->load_image($img_type, $img_url, ""); + if (strtolower($img_type) === "svg") { + //FIXME: PDFLib loads SVG but returns error message "Function must not be called in 'page' scope" + $image_load_response = $this->_pdf->load_graphics($img_type, $img_url, ""); + } else { + $image_load_response = $this->_pdf->load_image($img_type, $img_url, ""); + } + if ($image_load_response === 0) { + //TODO: should do something with the error message + $error = $this->_pdf->get_errmsg(); + return; + } + $this->_imgs[$img_url] = $image_load_response; } $img = $this->_imgs[$img_url]; $y = $this->y($y) - $h; - $this->_pdf->fit_image($img, $x, $y, 'boxsize={' . "$w $h" . '} fitmethod=entire'); + if (strtolower($img_type) === "svg") { + $this->_pdf->fit_graphics($img, $x, $y, 'boxsize={' . "$w $h" . '} fitmethod=entire'); + } else { + $this->_pdf->fit_image($img, $x, $y, 'boxsize={' . "$w $h" . '} fitmethod=entire'); + } } /** @@ -1176,7 +1240,7 @@ class PDFLib implements Canvas * @param int $char_spacing * @param int $angle */ - public function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_spacing = 0, $char_spacing = 0, $angle = 0) + public function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_spacing = 0, $char_spacing = 0, $angle = 0) { $fh = $this->_load_font($font); @@ -1282,13 +1346,13 @@ class PDFLib implements Canvas $this->_pdf->setfont($fh, $size); - $asc = $this->_pdf->get_value("ascender", $fh); - $desc = $this->_pdf->get_value("descender", $fh); + $asc = $this->_pdf->info_font($fh, "ascender", "fontsize=$size"); + $desc = $this->_pdf->info_font($fh, "descender", "fontsize=$size"); // $desc is usually < 0, $ratio = $this->_dompdf->getOptions()->getFontHeightRatio(); - return $size * ($asc - $desc) * $ratio; + return (abs($asc) + abs($desc)) * $ratio; } /** @@ -1321,7 +1385,7 @@ class PDFLib implements Canvas * @param float $char_space char spacing adjustment * @param float $angle angle to write the text at, measured CW starting from the x-axis */ - public function page_text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0) + public function page_text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0) { $_t = "text"; $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "word_space", "char_space", "angle"); @@ -1364,7 +1428,7 @@ class PDFLib implements Canvas */ protected function _add_page_text() { - if (!count($this->_page_text)) { + if (count($this->_page_text) === 0) { return; } @@ -1379,8 +1443,8 @@ class PDFLib implements Canvas switch ($_t) { case "text": - $text = str_replace(array("{PAGE_NUM}", "{PAGE_COUNT}"), - array($p, $this->_page_count), $text); + $text = str_replace(["{PAGE_NUM}", "{PAGE_COUNT}"], + [$p, $this->_page_count], $text); $this->text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle); break; @@ -1388,7 +1452,7 @@ class PDFLib implements Canvas if (!$eval) { $eval = new PHPEvaluator($this); } - $eval->evaluate($code, array('PAGE_NUM' => $p, 'PAGE_COUNT' => $this->_page_count)); + $eval->evaluate($code, ['PAGE_NUM' => $p, 'PAGE_COUNT' => $this->_page_count]); break; case 'line': @@ -1411,7 +1475,7 @@ class PDFLib implements Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). * @throws Exception */ - public function stream($filename = "document.pdf", $options = array()) + public function stream($filename = "document.pdf", $options = []) { if (headers_sent()) { die("Unable to stream pdf: headers already sent"); @@ -1447,7 +1511,7 @@ class PDFLib implements Canvas header("Content-Type: application/pdf"); header("Content-Length: " . $size); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".pdf")) . ".pdf"; + $filename = str_replace(["\n", "'"], "", basename($filename, ".pdf")) . ".pdf"; $attachment = $options["Attachment"] ? "attachment" : "inline"; header(Helpers::buildContentDispositionHeader($attachment, $filename)); @@ -1486,7 +1550,7 @@ class PDFLib implements Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1). * @return string */ - public function output($options = array()) + public function output($options = []) { if (!isset($options["compress"])) { $options["compress"] = true; @@ -1580,7 +1644,7 @@ class PDFLib implements Canvas /** * @return int */ - private function getPDFLibMajorVersion() + protected function getPDFLibMajorVersion() { if (is_null(self::$MAJOR_VERSION)) { if (method_exists($this->_pdf, "get_option")) { diff --git a/civicrm/vendor/dompdf/dompdf/src/Autoloader.php b/civicrm/vendor/dompdf/dompdf/src/Autoloader.php index 08a3b467985f8956aeb1cf462ae2ebbc5bd62c40..c6ade5051114a462f6181882738d2d3db9a58e82 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Autoloader.php +++ b/civicrm/vendor/dompdf/dompdf/src/Autoloader.php @@ -15,7 +15,7 @@ class Autoloader */ public static function register() { - spl_autoload_register(array(new self, 'autoload')); + spl_autoload_register([new self, 'autoload']); } /** @@ -25,15 +25,15 @@ class Autoloader */ public static function autoload($class) { - if ($class === 'Cpdf') { + if ($class === 'Dompdf\Cpdf') { require_once __DIR__ . "/../lib/Cpdf.php"; return; } $prefixLength = strlen(self::PREFIX); if (0 === strncmp(self::PREFIX, $class, $prefixLength)) { - $file = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, $prefixLength)); - $file = realpath(__DIR__ . (empty($file) ? '' : DIRECTORY_SEPARATOR) . $file . '.php'); + $file = str_replace('\\', '/', substr($class, $prefixLength)); + $file = realpath(__DIR__ . (empty($file) ? '' : '/') . $file . '.php'); if (file_exists($file)) { require_once $file; } diff --git a/civicrm/vendor/dompdf/dompdf/src/Canvas.php b/civicrm/vendor/dompdf/dompdf/src/Canvas.php index efc40e6a6dcad059cc6d499240bdfbab6cb05df1..e0b289e5efeac4352033e33b1dc8779cf30b9459 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Canvas.php +++ b/civicrm/vendor/dompdf/dompdf/src/Canvas.php @@ -262,7 +262,7 @@ interface Canvas * @param float $width * @param array $style */ - function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = array()); + function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = []); /** * Writes text at the specified x and y coordinates @@ -278,7 +278,7 @@ interface Canvas * @param float $char_space char spacing adjustment * @param float $angle angle */ - function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0); + function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0); /** * Add a named destination (similar to <a name="foo">...</a> in html) @@ -388,7 +388,7 @@ interface Canvas * * @return void */ - function set_default_view($view, $options = array()); + function set_default_view($view, $options = []); /** * @param string $script @@ -410,7 +410,7 @@ interface Canvas * @param string $filename The filename to present to the browser. * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). */ - function stream($filename, $options = array()); + function stream($filename, $options = []); /** * Returns the PDF as a string. @@ -418,5 +418,5 @@ interface Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1). * @return string */ - function output($options = array()); + function output($options = []); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Cellmap.php b/civicrm/vendor/dompdf/dompdf/src/Cellmap.php index e426ef671641e7953df4c095e2d7e9fa5f213a96..6fe9973716ca034af1379b0fe033ed5ad953353f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Cellmap.php +++ b/civicrm/vendor/dompdf/dompdf/src/Cellmap.php @@ -25,7 +25,7 @@ class Cellmap * * @var array */ - protected static $_BORDER_STYLE_SCORE = array( + protected static $_BORDER_STYLE_SCORE = [ "inset" => 1, "groove" => 2, "outset" => 3, @@ -36,7 +36,7 @@ class Cellmap "double" => 8, "hidden" => 9, "none" => 0, - ); + ]; /** * The table object this cellmap is attached to. @@ -109,14 +109,14 @@ class Cellmap private $__row; /** - * Tells wether the columns' width can be modified + * Tells whether the columns' width can be modified * * @var bool */ private $_columns_locked = false; /** - * Tells wether the table has table-layout:fixed + * Tells whether the table has table-layout:fixed * * @var bool */ @@ -139,16 +139,16 @@ class Cellmap $this->_num_rows = 0; $this->_num_cols = 0; - $this->_cells = array(); - $this->_frames = array(); + $this->_cells = []; + $this->_frames = []; if (!$this->_columns_locked) { - $this->_columns = array(); + $this->_columns = []; } - $this->_rows = array(); + $this->_rows = []; - $this->_borders = array(); + $this->_borders = []; $this->__col = $this->__row = 0; } @@ -225,7 +225,7 @@ class Cellmap public function &get_column($i) { if (!isset($this->_columns[$i])) { - $this->_columns[$i] = array( + $this->_columns[$i] = [ "x" => 0, "min-width" => 0, "max-width" => 0, @@ -233,7 +233,7 @@ class Cellmap "absolute" => 0, "percent" => 0, "auto" => true, - ); + ]; } return $this->_columns[$i]; @@ -255,11 +255,11 @@ class Cellmap public function &get_row($j) { if (!isset($this->_rows[$j])) { - $this->_rows[$j] = array( + $this->_rows[$j] = [ "y" => 0, "first-column" => 0, "height" => null, - ); + ]; } return $this->_rows[$j]; @@ -276,11 +276,11 @@ class Cellmap public function get_border($i, $j, $h_v, $prop = null) { if (!isset($this->_borders[$i][$j][$h_v])) { - $this->_borders[$i][$j][$h_v] = array( + $this->_borders[$i][$j][$h_v] = [ "width" => 0, "style" => "solid", "color" => "black", - ); + ]; } if (isset($prop)) { @@ -298,12 +298,12 @@ class Cellmap */ public function get_border_properties($i, $j) { - return array( + return [ "top" => $this->get_border($i, $j, "horizontal"), "right" => $this->get_border($i, $j + 1, "vertical"), "bottom" => $this->get_border($i + 1, $j, "horizontal"), "left" => $this->get_border($i, $j, "vertical"), - ); + ]; } /** @@ -367,7 +367,7 @@ class Cellmap $y = $this->_rows[$row]["y"]; } - return array($x, $y, "x" => $x, "y" => $y); + return [$x, $y, "x" => $x, "y" => $y]; } /** @@ -452,7 +452,6 @@ class Cellmap $row["height"] = $height; $next_row =& $this->get_row($i + 1); $next_row["y"] = $row["y"] + $height; - } /** @@ -640,7 +639,7 @@ class Cellmap if (!$this->_columns_locked) { // Resolve the frame's width if ($this->_fixed_layout) { - list($frame_min, $frame_max) = array(0, 10e-10); + list($frame_min, $frame_max) = [0, 10e-10]; } else { list($frame_min, $frame_max) = $frame->get_min_max_width(); } @@ -896,19 +895,19 @@ class Cellmap $str .= Helpers::pre_r($this->_rows, true); $str .= "Frames:<br/>"; - $arr = array(); + $arr = []; foreach ($this->_frames as $key => $val) { - $arr[$key] = array("columns" => $val["columns"], "rows" => $val["rows"]); + $arr[$key] = ["columns" => $val["columns"], "rows" => $val["rows"]]; } $str .= Helpers::pre_r($arr, true); if (php_sapi_name() == "cli") { - $str = strip_tags(str_replace(array("<br/>", "<b>", "</b>"), - array("\n", chr(27) . "[01;33m", chr(27) . "[0m"), + $str = strip_tags(str_replace(["<br/>", "<b>", "</b>"], + ["\n", chr(27) . "[01;33m", chr(27) . "[0m"], $str)); } return $str; } -} \ No newline at end of file +} diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php b/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php index c45d7413adeb6f0456f02dc91ced70b004832951..eeae5e6b00b2e471deaf84459fa280b1221be312 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php @@ -22,33 +22,33 @@ class AttributeTranslator // Munged data originally from // http://www.w3.org/TR/REC-html40/index/attributes.html // http://www.cs.tut.fi/~jkorpela/html2css.html - static private $__ATTRIBUTE_LOOKUP = array( + private static $__ATTRIBUTE_LOOKUP = [ //'caption' => array ( 'align' => '', ), - 'img' => array( - 'align' => array( + 'img' => [ + 'align' => [ 'bottom' => 'vertical-align: baseline;', 'middle' => 'vertical-align: middle;', 'top' => 'vertical-align: top;', 'left' => 'float: left;', 'right' => 'float: right;' - ), + ], 'border' => 'border: %0.2Fpx solid;', 'height' => 'height: %spx;', 'hspace' => 'padding-left: %1$0.2Fpx; padding-right: %1$0.2Fpx;', 'vspace' => 'padding-top: %1$0.2Fpx; padding-bottom: %1$0.2Fpx;', 'width' => 'width: %spx;', - ), - 'table' => array( - 'align' => array( + ], + 'table' => [ + 'align' => [ 'left' => 'margin-left: 0; margin-right: auto;', 'center' => 'margin-left: auto; margin-right: auto;', 'right' => 'margin-left: auto; margin-right: 0;' - ), + ], 'bgcolor' => 'background-color: %s;', 'border' => '!set_table_border', 'cellpadding' => '!set_table_cellpadding', //'border-spacing: %0.2F; border-collapse: separate;', 'cellspacing' => '!set_table_cellspacing', - 'frame' => array( + 'frame' => [ 'void' => 'border-style: none;', 'above' => 'border-top-style: solid;', 'below' => 'border-bottom-style: solid;', @@ -58,44 +58,44 @@ class AttributeTranslator 'rhs' => 'border-right-style: solid;', 'box' => 'border-style: solid;', 'border' => 'border-style: solid;' - ), + ], 'rules' => '!set_table_rules', 'width' => 'width: %s;', - ), - 'hr' => array( + ], + 'hr' => [ 'align' => '!set_hr_align', // Need to grab width to set 'left' & 'right' correctly 'noshade' => 'border-style: solid;', 'size' => '!set_hr_size', //'border-width: %0.2F px;', 'width' => 'width: %s;', - ), - 'div' => array( + ], + 'div' => [ 'align' => 'text-align: %s;', - ), - 'h1' => array( + ], + 'h1' => [ 'align' => 'text-align: %s;', - ), - 'h2' => array( + ], + 'h2' => [ 'align' => 'text-align: %s;', - ), - 'h3' => array( + ], + 'h3' => [ 'align' => 'text-align: %s;', - ), - 'h4' => array( + ], + 'h4' => [ 'align' => 'text-align: %s;', - ), - 'h5' => array( + ], + 'h5' => [ 'align' => 'text-align: %s;', - ), - 'h6' => array( + ], + 'h6' => [ 'align' => 'text-align: %s;', - ), + ], //TODO: translate more form element attributes - 'input' => array( + 'input' => [ 'size' => '!set_input_width' - ), - 'p' => array( + ], + 'p' => [ 'align' => 'text-align: %s;', - ), + ], // 'col' => array( // 'align' => '', // 'valign' => '', @@ -104,87 +104,87 @@ class AttributeTranslator // 'align' => '', // 'valign' => '', // ), - 'tbody' => array( + 'tbody' => [ 'align' => '!set_table_row_align', 'valign' => '!set_table_row_valign', - ), - 'td' => array( + ], + 'td' => [ 'align' => 'text-align: %s;', 'bgcolor' => '!set_background_color', 'height' => 'height: %s;', 'nowrap' => 'white-space: nowrap;', 'valign' => 'vertical-align: %s;', 'width' => 'width: %s;', - ), - 'tfoot' => array( + ], + 'tfoot' => [ 'align' => '!set_table_row_align', 'valign' => '!set_table_row_valign', - ), - 'th' => array( + ], + 'th' => [ 'align' => 'text-align: %s;', 'bgcolor' => '!set_background_color', 'height' => 'height: %s;', 'nowrap' => 'white-space: nowrap;', 'valign' => 'vertical-align: %s;', 'width' => 'width: %s;', - ), - 'thead' => array( + ], + 'thead' => [ 'align' => '!set_table_row_align', 'valign' => '!set_table_row_valign', - ), - 'tr' => array( + ], + 'tr' => [ 'align' => '!set_table_row_align', 'bgcolor' => '!set_table_row_bgcolor', 'valign' => '!set_table_row_valign', - ), - 'body' => array( + ], + 'body' => [ 'background' => 'background-image: url(%s);', 'bgcolor' => '!set_background_color', 'link' => '!set_body_link', 'text' => '!set_color', - ), - 'br' => array( + ], + 'br' => [ 'clear' => 'clear: %s;', - ), - 'basefont' => array( + ], + 'basefont' => [ 'color' => '!set_color', 'face' => 'font-family: %s;', 'size' => '!set_basefont_size', - ), - 'font' => array( + ], + 'font' => [ 'color' => '!set_color', 'face' => 'font-family: %s;', 'size' => '!set_font_size', - ), - 'dir' => array( + ], + 'dir' => [ 'compact' => 'margin: 0.5em 0;', - ), - 'dl' => array( + ], + 'dl' => [ 'compact' => 'margin: 0.5em 0;', - ), - 'menu' => array( + ], + 'menu' => [ 'compact' => 'margin: 0.5em 0;', - ), - 'ol' => array( + ], + 'ol' => [ 'compact' => 'margin: 0.5em 0;', 'start' => 'counter-reset: -dompdf-default-counter %d;', 'type' => 'list-style-type: %s;', - ), - 'ul' => array( + ], + 'ul' => [ 'compact' => 'margin: 0.5em 0;', 'type' => 'list-style-type: %s;', - ), - 'li' => array( + ], + 'li' => [ 'type' => 'list-style-type: %s;', 'value' => 'counter-reset: -dompdf-default-counter %d;', - ), - 'pre' => array( + ], + 'pre' => [ 'width' => 'width: %s;', - ), - ); + ], + ]; - static protected $_last_basefont_size = 3; - static protected $_font_size_lookup = array( + protected static $_last_basefont_size = 3; + protected static $_font_size_lookup = [ // For basefont support -3 => "4pt", -2 => "5pt", @@ -204,7 +204,7 @@ class AttributeTranslator 9 => "44pt", 10 => "52pt", 11 => "60pt", - ); + ]; /** * @param Frame $frame @@ -249,7 +249,6 @@ class AttributeTranslator $style = ltrim($style); $node->setAttribute(self::$_style_attr, $style); } - } /** @@ -259,7 +258,7 @@ class AttributeTranslator * * @return string */ - static protected function _resolve_target(\DOMNode $node, $target, $value) + protected static function _resolve_target(\DOMNode $node, $target, $value) { if ($target[0] === "!") { // Function call @@ -288,7 +287,7 @@ class AttributeTranslator * * @return \DOMNodeList|\DOMElement[] */ - static protected function get_cell_list(\DOMNode $node) + protected static function get_cell_list(\DOMNode $node) { $xpath = new \DOMXpath($node->ownerDocument); @@ -317,7 +316,7 @@ class AttributeTranslator * * @return string */ - static protected function _get_valid_color($value) + protected static function _get_valid_color($value) { if (preg_match('/^#?([0-9A-F]{6})$/i', $value, $matches)) { $value = "#$matches[1]"; @@ -332,7 +331,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_color(\DOMElement $node, $value) + protected static function _set_color(\DOMElement $node, $value) { $value = self::_get_valid_color($value); @@ -345,7 +344,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_background_color(\DOMElement $node, $value) + protected static function _set_background_color(\DOMElement $node, $value) { $value = self::_get_valid_color($value); @@ -358,7 +357,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_cellpadding(\DOMElement $node, $value) + protected static function _set_table_cellpadding(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -375,7 +374,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_table_border(\DOMElement $node, $value) + protected static function _set_table_border(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -398,7 +397,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_table_cellspacing(\DOMElement $node, $value) + protected static function _set_table_cellspacing(\DOMElement $node, $value) { $style = rtrim($node->getAttribute(self::$_style_attr), ";"); @@ -417,7 +416,7 @@ class AttributeTranslator * * @return null|string */ - static protected function _set_table_rules(\DOMElement $node, $value) + protected static function _set_table_rules(\DOMElement $node, $value) { $new_style = "; border-collapse: collapse;"; @@ -467,7 +466,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_hr_size(\DOMElement $node, $value) + protected static function _set_hr_size(\DOMElement $node, $value) { $style = rtrim($node->getAttribute(self::$_style_attr), ";"); $style .= "; border-width: " . max(0, $value - 2) . "; "; @@ -481,7 +480,7 @@ class AttributeTranslator * * @return null|string */ - static protected function _set_hr_align(\DOMElement $node, $value) + protected static function _set_hr_align(\DOMElement $node, $value) { $style = rtrim($node->getAttribute(self::$_style_attr), ";"); $width = $node->getAttribute("width"); @@ -518,11 +517,11 @@ class AttributeTranslator * * @return null|string */ - static protected function _set_input_width(\DOMElement $node, $value) + protected static function _set_input_width(\DOMElement $node, $value) { if (empty($value)) { return null; } - if ($node->hasAttribute("type") && in_array(strtolower($node->getAttribute("type")), array("text","password"))) { + if ($node->hasAttribute("type") && in_array(strtolower($node->getAttribute("type")), ["text","password"])) { return sprintf("width: %Fem", (((int)$value * .65)+2)); } else { return sprintf("width: %upx;", (int)$value); @@ -535,7 +534,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_row_align(\DOMElement $node, $value) + protected static function _set_table_row_align(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -552,7 +551,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_row_valign(\DOMElement $node, $value) + protected static function _set_table_row_valign(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -569,7 +568,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_row_bgcolor(\DOMElement $node, $value) + protected static function _set_table_row_bgcolor(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); $value = self::_get_valid_color($value); @@ -587,7 +586,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_body_link(\DOMElement $node, $value) + protected static function _set_body_link(\DOMElement $node, $value) { $a_list = $node->getElementsByTagName("a"); $value = self::_get_valid_color($value); @@ -605,7 +604,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_basefont_size(\DOMElement $node, $value) + protected static function _set_basefont_size(\DOMElement $node, $value) { // FIXME: ? we don't actually set the font size of anything here, just // the base size for later modification by <font> tags. @@ -620,7 +619,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_font_size(\DOMElement $node, $value) + protected static function _set_font_size(\DOMElement $node, $value) { $style = $node->getAttribute(self::$_style_attr); diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Color.php b/civicrm/vendor/dompdf/dompdf/src/Css/Color.php index 7376663005f7fe8a22a154198b997298e1f05e28..1c96f458af70a9bc6d24eb1f681d31f58a76b740 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/Color.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/Color.php @@ -14,7 +14,7 @@ use Dompdf\Helpers; class Color { - static $cssColorNames = array( + static $cssColorNames = [ "aliceblue" => "F0F8FF", "antiquewhite" => "FAEBD7", "aqua" => "00FFFF", @@ -162,7 +162,7 @@ class Color "whitesmoke" => "F5F5F5", "yellow" => "FFFF00", "yellowgreen" => "9ACD32", - ); + ]; /** * @param $color @@ -170,13 +170,17 @@ class Color */ static function parse($color) { + if ($color === null) { + return null; + } + if (is_array($color)) { // Assume the array has the right format... // FIXME: should/could verify this. return $color; } - static $cache = array(); + static $cache = []; $color = strtolower($color); @@ -184,7 +188,7 @@ class Color return $cache[$color]; } - if (in_array($color, array("transparent", "inherit"))) { + if (in_array($color, ["transparent", "inherit"])) { return $cache[$color] = $color; } @@ -281,7 +285,7 @@ class Color */ static function getArray($color, $alpha = 1.0) { - $c = array(null, null, null, null, "alpha" => $alpha, "hex" => null); + $c = [null, null, null, null, "alpha" => $alpha, "hex" => null]; if (is_array($color)) { $c = $color; diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Style.php b/civicrm/vendor/dompdf/dompdf/src/Css/Style.php index 96ac5d42b8e20c21a70714e6985d4d246a9311a6..b2539a191a64799148b93aab8b910974545b13c3 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/Style.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/Style.php @@ -51,7 +51,7 @@ class Style * http://www.w3.org/TR/css3-fonts/#font-size-the-font-size-property * @var array<float> */ - static $font_size_keywords = array( + static $font_size_keywords = [ "xx-small" => 0.6, // 3/5 "x-small" => 0.75, // 3/4 "small" => 0.889, // 8/9 @@ -59,51 +59,61 @@ class Style "large" => 1.2, // 6/5 "x-large" => 1.5, // 3/2 "xx-large" => 2.0, // 2/1 - ); + ]; /** * List of valid vertical-align keywords. Should also really be a constant. * * @var array */ - static $vertical_align_keywords = array("baseline", "bottom", "middle", "sub", - "super", "text-bottom", "text-top", "top"); + static $vertical_align_keywords = ["baseline", "bottom", "middle", "sub", + "super", "text-bottom", "text-top", "top"]; /** * List of all inline types. Should really be a constant. * * @var array */ - static $INLINE_TYPES = array("inline"); + static $INLINE_TYPES = ["inline"]; /** * List of all block types. Should really be a constant. * * @var array */ - static $BLOCK_TYPES = array("block", "inline-block", "table-cell", "list-item"); + static $BLOCK_TYPES = ["block", "inline-block", "table-cell", "list-item"]; /** * List of all positionned types. Should really be a constant. * * @var array */ - static $POSITIONNED_TYPES = array("relative", "absolute", "fixed"); + static $POSITIONNED_TYPES = ["relative", "absolute", "fixed"]; /** * List of all table types. Should really be a constant. * * @var array; */ - static $TABLE_TYPES = array("table", "inline-table"); + static $TABLE_TYPES = ["table", "inline-table"]; /** * List of valid border styles. Should also really be a constant. * * @var array */ - static $BORDER_STYLES = array("none", "hidden", "dotted", "dashed", "solid", - "double", "groove", "ridge", "inset", "outset"); + static $BORDER_STYLES = ["none", "hidden", "dotted", "dashed", "solid", + "double", "groove", "ridge", "inset", "outset"]; + + /** + * List of CSS shorthand properties + * + * @var array + */ + protected static $_props_shorthand = ["background", "border", + "border_bottom", "border_color", "border_left", "border_radius", + "border_right", "border_style", "border_top", "border_width", + "flex", "font", "list_style", "margin", "padding"]; /** * Default style values. @@ -112,7 +122,7 @@ class Style * * @var array */ - static protected $_defaults = null; + protected static $_defaults = null; /** * List of inherited properties @@ -121,14 +131,14 @@ class Style * * @var array */ - static protected $_inherited = null; + protected static $_inherited = null; /** * Caches method_exists result * * @var array<bool> */ - static protected $_methods_cache = array(); + protected static $_methods_cache = []; /** * The stylesheet this style belongs to @@ -150,17 +160,43 @@ class Style * * @var array */ - protected $_props; + protected $_props = []; /* var instead of protected would allow access outside of class */ - protected $_important_props; + protected $_important_props = []; + + /** + * The computed values of the CSS property + * + * @var array + */ + protected $_props_computed = []; + + protected static $_dependency_map = [ + "font_size" => [ + "border_top_width", + "border_right_width", + "border_bottom_width", + "border_left_width", + "line_height", + "margin_top", + "margin_right", + "margin_bottom", + "margin_left", + "outline_width", + "padding_top", + "padding_right", + "padding_bottom", + "padding_left" + ] + ]; /** - * Cached property values + * The used values of the CSS property * * @var array */ - protected $_prop_cache; + protected $_prop_cache = []; /** * Font size of parent element in document tree. Used for relative font @@ -168,9 +204,7 @@ class Style * * @var float */ - protected $_parent_font_size; // Font size of parent element - - protected $_font_family; + protected $_parent_font_size; /** * @var Frame @@ -185,13 +219,6 @@ class Style protected $_origin = Stylesheet::ORIG_AUTHOR; // private members - /** - * True once the font size is resolved absolutely - * - * @var bool - */ - private $__font_size_calculated; // Cache flag - /** * The computed bottom spacing */ @@ -222,13 +249,12 @@ class Style { $this->setFontMetrics($stylesheet->getFontMetrics()); - $this->_props = array(); - $this->_important_props = array(); + $this->_props = []; + $this->_important_props = []; $this->_stylesheet = $stylesheet; - $this->_media_queries = array(); + $this->_media_queries = []; $this->_origin = $origin; $this->_parent_font_size = null; - $this->__font_size_calculated = false; if (!isset(self::$_defaults)) { @@ -374,7 +400,7 @@ class Style $d["unicode_range"] = ""; // Properties that inherit by default - self::$_inherited = array( + self::$_inherited = [ "azimuth", "background_image_resolution", "border_collapse", @@ -420,7 +446,7 @@ class Style "word_wrap", "widows", "word_spacing", - ); + ]; } } @@ -506,7 +532,7 @@ class Style */ function length_in_pt($length, $ref_size = null) { - static $cache = array(); + static $cache = []; if (!isset($ref_size)) { $ref_size = self::$default_font_size; @@ -518,7 +544,7 @@ class Style if (isset($cache[$key])) { return $cache[$key]; } - $length = array($length); + $length = [$length]; } else { $key = implode("@", $length) . "/$ref_size"; if (isset($cache[$key])) { @@ -638,28 +664,46 @@ class Style */ function inherit(Style $parent) { - - // Set parent font size - $this->_parent_font_size = $parent->get_font_size(); + // Set parent font size, changes affect font size of the element + if ($this->_parent_font_size !== $parent->font_size) { + $this->_parent_font_size = $parent->font_size; + if (isset($this->_props["font_size"])) { + $this->__set("font_size", $this->_props["font_size"]); + } + } foreach (self::$_inherited as $prop) { + // don't inherit shorthand properties, the specific properties will inherit + if (in_array($prop, self::$_props_shorthand) === true) { + continue; + } + //inherit the !important property also. //if local property is also !important, don't inherit. - if (isset($parent->_props[$prop]) && - (!isset($this->_props[$prop]) || - (isset($parent->_important_props[$prop]) && !isset($this->_important_props[$prop])) + + if (isset($parent->_props_computed[$prop]) && + ( + !isset($this->_props[$prop]) + || (isset($parent->_important_props[$prop]) && !isset($this->_important_props[$prop])) ) ) { if (isset($parent->_important_props[$prop])) { $this->_important_props[$prop] = true; } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $parent->_props[$prop]; + if (isset($parent->_props_computed[$prop])) { + $this->__set($prop, $parent->_props_computed[$prop]); + } else { + // parent prop not set, use the default + $this->__set($prop, self::$_defaults[$prop]); + } } } foreach ($this->_props as $prop => $value) { + // don't inherit shorthand properties, the specific properties will inherit + if (in_array($prop, self::$_props_shorthand) === true) { + continue; + } if ($value === "inherit") { if (isset($parent->_important_props[$prop])) { $this->_important_props[$prop] = true; @@ -675,7 +719,14 @@ class Style //props_set for more obvious explicite assignment not implemented, because //too many implicite uses. // $this->props_set($prop, $parent->$prop); - $this->__set($prop, $parent->__get($prop)); + if (isset($parent->_props_computed[$prop])) { + $this->__set($prop, $parent->_props_computed[$prop]); + } else { + // parent prop not set, use the default + $this->__set($prop, self::$_defaults[$prop]); + } + // set the specified prop back to "inherit" + $this->_props[$prop] = "inherit"; } } @@ -689,7 +740,6 @@ class Style */ function merge(Style $style) { - $shorthand_properties = array("background", "border", "border_bottom", "border_color", "border_left", "border_radius", "border_right", "border_style", "border_top", "border_width", "flex", "font", "list_style", "margin", "padding", "transform"); //treat the !important attribute //if old rule has !important attribute, override with new rule only if //the new rule is also !important @@ -698,30 +748,25 @@ class Style if (isset($style->_important_props[$prop])) { $this->_important_props[$prop] = true; $can_merge = true; - } else if (!isset($this->_important_props[$prop])) { + } else if (isset($val) && !isset($this->_important_props[$prop])) { $can_merge = true; } if ($can_merge) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $val; - - // Clear out "inherit" shorthand properties if specific properties have been set - $shorthands = array_filter($shorthand_properties, function($el) use ($prop) { + // Clear out "inherit" shorthand properties if a more specific property value has been set + $shorthands = array_filter(self::$_props_shorthand, function($el) use ($prop) { return ( strpos($prop, $el."_") !== false ); }); foreach ($shorthands as $shorthand) { if (array_key_exists($shorthand, $this->_props) && $this->_props[$shorthand] === "inherit") { unset($this->_props[$shorthand]); + unset($this->_props_computed[$shorthand]); + unset($this->_prop_cache[$shorthand]); } - } + } + $this->__set($prop, $val); } } - - if (isset($style->_props["font_size"])) { - $this->__font_size_calculated = false; - } } /** @@ -787,19 +832,22 @@ class Style function __set($prop, $val) { $prop = str_replace("-", "_", $prop); - $this->_prop_cache[$prop] = null; if (!isset(self::$_defaults[$prop])) { global $_dompdf_warnings; - $_dompdf_warnings[] = "'$prop' is not a valid CSS2 property."; + $_dompdf_warnings[] = "'$prop' is not a recognized CSS property."; return; } if ($prop !== "content" && is_string($val) && strlen($val) > 5 && mb_strpos($val, "url") === false) { - $val = mb_strtolower(trim(str_replace(array("\n", "\t"), array(" "), $val))); + $val = mb_strtolower(trim(str_replace(["\n", "\t"], [" "], $val))); $val = preg_replace("/([0-9]+) (pt|px|pc|em|ex|in|cm|mm|%)/S", "\\1\\2", $val); } + $this->_props[$prop] = $val; + $this->_props_computed[$prop] = null; + $this->_prop_cache[$prop] = null; + $method = "set_$prop"; if (!isset(self::$_methods_cache[$method])) { @@ -808,8 +856,18 @@ class Style if (self::$_methods_cache[$method]) { $this->$method($val); - } else { - $this->_props[$prop] = $val; + } + if (isset($this->_props_computed[$prop]) === false) { + $this->_props_computed[$prop] = $val; + } + + //FIXME: need to catch for circular dependencies because oops + if (array_key_exists($prop, self::$_dependency_map)) { + foreach (self::$_dependency_map[$prop] as $dependent) { + if (isset($this->_props[$dependent]) === true) { + $this->__set($dependent, $this->_props[$dependent]); + } + } } } @@ -828,19 +886,36 @@ class Style */ function __get($prop) { + //FIXME: need to get shorthand from component properties if (!isset(self::$_defaults[$prop])) { - throw new Exception("'$prop' is not a valid CSS2 property."); + throw new Exception("'$prop' is not a recognized CSS property."); } - if (isset($this->_prop_cache[$prop]) && $this->_prop_cache[$prop] != null) { + if (isset($this->_prop_cache[$prop])) { return $this->_prop_cache[$prop]; } $method = "get_$prop"; - // Fall back on defaults if property is not set - if (!isset($this->_props[$prop])) { - $this->_props[$prop] = self::$_defaults[$prop]; + $retval = null; + // Preview the value based on the default if the property's computed value has not + // yet been set or the current value is "inherit" (the computed value will be based + // on the parent's value if inheritance has been applied). + // Reset the specified property afterwards so that we don't block inheritance later. + $reset_value = false; + $specified_value = null; + $computed_value = null; + if (!isset($this->_props_computed[$prop]) || $this->_props_computed[$prop] === "inherit") { + $reset_value = true; + if (isset($this->_props[$prop])) { + $specified_value = $this->_props[$prop]; + } + if (isset($this->_props_computed[$prop])) { + $computed_value = $this->_props_computed[$prop]; + } + if (!in_array($prop, self::$_props_shorthand)) { + $this->__set($prop, self::$_defaults[$prop]); + } } if (!isset(self::$_methods_cache[$method])) { @@ -848,10 +923,46 @@ class Style } if (self::$_methods_cache[$method]) { - return $this->_prop_cache[$prop] = $this->$method(); + $retval = $this->_prop_cache[$prop] = $this->$method(); + } + + if (!isset($retval)) { + $retval = $this->_prop_cache[$prop] = $this->_props_computed[$prop]; + } + + if ($reset_value) { + $this->_props[$prop] = $specified_value; + $this->_props_computed[$prop] = $computed_value; } - return $this->_prop_cache[$prop] = $this->_props[$prop]; + return $retval; + } + + /** + * Sets the property value without calculating the computed value + * + * @param $prop + * @param $val + */ + function set_prop($prop, $val) + { + $prop = str_replace("-", "_", $prop); + $this->_props_computed[$prop] = null; + $this->_prop_cache[$prop] = null; + + if (!isset(self::$_defaults[$prop])) { + global $_dompdf_warnings; + $_dompdf_warnings[] = "'$prop' is not a recognized CSS property."; + return; + } + + // clean up the value + if ($prop !== "content" && is_string($val) && strlen($val) > 5 && mb_strpos($val, "url") === false) { + $val = mb_strtolower(trim(str_replace(["\n", "\t"], [" "], $val))); + $val = preg_replace("/([0-9]+) (pt|px|pc|em|ex|in|cm|mm|%)/S", "\\1\\2", $val); + } + + $this->_props[$prop] = $val; } /** @@ -865,13 +976,13 @@ class Style function get_prop($prop) { if (!isset(self::$_defaults[$prop])) { - throw new Exception("'$prop' is not a valid CSS2 property."); + throw new Exception("'$prop' is not a recognized CSS property."); } $method = "get_$prop"; // Fall back on defaults if property is not set - if (!isset($this->_props[$prop])) { + if (!isset($this->_props_computed[$prop])) { return self::$_defaults[$prop]; } @@ -882,19 +993,32 @@ class Style return $this->_props[$prop]; } + /** + * Calculates the computed value of the CSS properties that have been set (the specified properties) + */ + function compute_props() + { + foreach ($this->_props as $prop => $val) { + if (in_array($prop, self::$_props_shorthand) === false) { + $this->__set($prop, $val); + } + } + } + /** * @return float|null|string */ - function computed_bottom_spacing() { + function computed_bottom_spacing() + { if ($this->_computed_bottom_spacing !== null) { return $this->_computed_bottom_spacing; } return $this->_computed_bottom_spacing = $this->length_in_pt( - array( + [ $this->margin_bottom, $this->padding_bottom, $this->border_bottom_width - ) + ] ); } @@ -918,9 +1042,7 @@ class Style */ function get_font_family() { - if (isset($this->_font_family)) { - return $this->_font_family; - } + //TODO: we should be using the calculated prop rather than perform the entire family parsing operation again $DEBUGCSS = $this->_stylesheet->get_dompdf()->getOptions()->getDebugCss(); @@ -929,37 +1051,17 @@ class Style // Resolve font-weight $weight = $this->__get("font_weight"); - - if (is_numeric($weight)) { - if ($weight < 600) { - $weight = "normal"; - } else { - $weight = "bold"; - } - } else if ($weight === "bold" || $weight === "bolder") { - $weight = "bold"; + if ($weight === 'bold') { + $weight = 700; + } elseif (preg_match('/^[0-9]+$/', $weight, $match)) { + $weight = (int)$match[0]; } else { - $weight = "normal"; + $weight = 400; } // Resolve font-style $font_style = $this->__get("font_style"); - - if ($weight === "bold" && ($font_style === "italic" || $font_style === "oblique")) { - $subtype = "bold_italic"; - } else if ($weight === "bold" && $font_style !== "italic" && $font_style !== "oblique") { - $subtype = "bold"; - } else if ($weight !== "bold" && ($font_style === "italic" || $font_style === "oblique")) { - $subtype = "italic"; - } else { - $subtype = "normal"; - } - - // Resolve the font family - if ($DEBUGCSS) { - print "<pre>[get_font_family:"; - print '(' . $this->_props["font_family"] . '.' . $font_style . '.' . $this->__get("font_weight") . '.' . $weight . '.' . $subtype . ')'; - } + $subtype = $this->getFontMetrics()->getType($weight.' '.$font_style); $families = preg_split("/\s*,\s*/", $this->_props["font_family"]); @@ -975,9 +1077,11 @@ class Style if ($font) { if ($DEBUGCSS) { + print "<pre>[get_font_family:"; + print '(' . $this->_props["font_family"] . '.' . $font_style . '.' . $weight . '.' . $subtype . ')'; print '(' . $font . ")get_font_family]\n</pre>"; } - return $this->_font_family = $font; + return $font; } } @@ -991,11 +1095,10 @@ class Style if ($DEBUGCSS) { print '(' . $font . ")get_font_family]\n</pre>"; } - return $this->_font_family = $font; + return $font; } throw new Exception("Unable to find a suitable font replacement for: '" . $this->_props["font_family"] . "'"); - } /** @@ -1006,59 +1109,13 @@ class Style */ function get_font_size() { - - if ($this->__font_size_calculated) { - return $this->_props["font_size"]; - } - - if (!isset($this->_props["font_size"])) { - $fs = self::$_defaults["font_size"]; - } else { - $fs = $this->_props["font_size"]; - } - if (!isset($this->_parent_font_size)) { $this->_parent_font_size = self::$default_font_size; } - - switch ((string)$fs) { - case "xx-small": - case "x-small": - case "small": - case "medium": - case "large": - case "x-large": - case "xx-large": - $fs = self::$default_font_size * self::$font_size_keywords[$fs]; - break; - - case "smaller": - $fs = 8 / 9 * $this->_parent_font_size; - break; - - case "larger": - $fs = 6 / 5 * $this->_parent_font_size; - break; - - default: - break; - } - - // Ensure relative sizes resolve to something - if (($i = mb_strpos($fs, "em")) !== false) { - $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; - } else if (($i = mb_strpos($fs, "ex")) !== false) { - $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; - } else { - $fs = (float)$this->length_in_pt($fs); + if (!isset($this->_props["font_size"]) || $this->_props["font_size"] === "inherit") { + return $this->_parent_font_size; } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["font_size"] = null; - $this->_props["font_size"] = $fs; - $this->__font_size_calculated = true; - return $this->_props["font_size"]; - + return $this->_props_computed["font_size"]; } /** @@ -1093,20 +1150,23 @@ class Style */ function get_line_height() { - if (array_key_exists("line_height", $this->_props) === false) { - $this->_props["line_height"] = self::$_defaults["line_height"]; + if (!isset($this->_props["line_height"]) || $this->_props["line_height"] === "inherit") { + $this->__set("line_height", self::$_defaults["line_height"]); + } + if (!isset($this->_props_computed["line_height"])) { + $this->__set("line_height", $this->_props["line_height"]); } - $line_height = $this->_props["line_height"]; + $line_height = $this->_props_computed["line_height"]; if ($line_height === "normal") { - return self::$default_line_height * $this->get_font_size(); + return self::$default_line_height * $this->__get("font_size"); } if (is_numeric($line_height)) { - return $this->length_in_pt($line_height . "em", $this->get_font_size()); + return $line_height * $this->__get("font_size"); } - return $this->length_in_pt($line_height, $this->_parent_font_size); + return (float)$this->length_in_pt($line_height, $this->__get("font_size")); } /** @@ -1120,7 +1180,10 @@ class Style */ function get_color() { - return $this->munge_color($this->_props["color"]); + if (!isset($this->_props["color"]) || $this->_props["color"] === "inherit") { + return $this->munge_color(self::$_defaults["color"]); + } + return $this->munge_color($this->_props_computed["color"]); } /** @@ -1133,7 +1196,7 @@ class Style */ function get_background_color() { - return $this->munge_color($this->_props["background_color"]); + return $this->munge_color($this->_props_computed["background_color"]); } /** @@ -1218,10 +1281,10 @@ class Style $y = "0%"; } - return array( + return [ 0 => $x, "x" => $x, 1 => $y, "y" => $y, - ); + ]; } @@ -1280,13 +1343,10 @@ class Style */ function get_border_top_color() { - if ($this->_props["border_top_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_top_color"] = null; - $this->_props["border_top_color"] = $this->__get("color"); + if ($this->_props_computed["border_top_color"] === "") { + $this->__set("border_top_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_top_color"]); + return $this->munge_color($this->_props_computed["border_top_color"]); } /** @@ -1294,13 +1354,10 @@ class Style */ function get_border_right_color() { - if ($this->_props["border_right_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_right_color"] = null; - $this->_props["border_right_color"] = $this->__get("color"); + if ($this->_props_computed["border_right_color"] === "") { + $this->__set("border_right_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_right_color"]); + return $this->munge_color($this->_props_computed["border_right_color"]); } /** @@ -1308,13 +1365,10 @@ class Style */ function get_border_bottom_color() { - if ($this->_props["border_bottom_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_bottom_color"] = null; - $this->_props["border_bottom_color"] = $this->__get("color"); + if ($this->_props_computed["border_bottom_color"] === "") { + $this->__set("border_bottom_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_bottom_color"]); + return $this->munge_color($this->_props_computed["border_bottom_color"]); } /** @@ -1322,13 +1376,10 @@ class Style */ function get_border_left_color() { - if ($this->_props["border_left_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_left_color"] = null; - $this->_props["border_left_color"] = $this->__get("color"); + if ($this->_props_computed["border_left_color"] === "") { + $this->__set("border_left_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_left_color"]); + return $this->munge_color($this->_props_computed["border_left_color"]); } /**#@-*/ @@ -1342,7 +1393,7 @@ class Style function get_border_top_width() { $style = $this->__get("border_top_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_top_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? (float)$this->length_in_pt($this->_props_computed["border_top_width"]) : 0; } /** @@ -1351,7 +1402,7 @@ class Style function get_border_right_width() { $style = $this->__get("border_right_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_right_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["border_right_width"]) : 0; } /** @@ -1360,7 +1411,7 @@ class Style function get_border_bottom_width() { $style = $this->__get("border_bottom_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_bottom_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["border_bottom_width"]) : 0; } /** @@ -1369,7 +1420,7 @@ class Style function get_border_left_width() { $style = $this->__get("border_left_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_left_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["border_left_width"]) : 0; } /**#@-*/ @@ -1388,28 +1439,28 @@ class Style */ function get_border_properties() { - return array( - "top" => array( + return [ + "top" => [ "width" => $this->__get("border_top_width"), "style" => $this->__get("border_top_style"), "color" => $this->__get("border_top_color"), - ), - "bottom" => array( + ], + "bottom" => [ "width" => $this->__get("border_bottom_width"), "style" => $this->__get("border_bottom_style"), "color" => $this->__get("border_bottom_color"), - ), - "right" => array( + ], + "right" => [ "width" => $this->__get("border_right_width"), "style" => $this->__get("border_right_style"), "color" => $this->__get("border_right_color"), - ), - "left" => array( + ], + "left" => [ "width" => $this->__get("border_left_width"), "style" => $this->__get("border_left_style"), "color" => $this->__get("border_left_color"), - ), - ); + ], + ]; } /** @@ -1424,7 +1475,7 @@ class Style $color = $this->__get("border_" . $side . "_color"); return $this->__get("border_" . $side . "_width") . " " . - $this->__get("border_" . $side . "_style") . " " . $color["hex"]; + $this->__get("border_" . $side . "_style") . " " . $color["hex"]; } /**#@+ @@ -1466,6 +1517,54 @@ class Style return $this->_get_border("left"); } + private function _get_width($prop) + { + if (!isset($this->_props[$prop]) || $this->_props[$prop] === "inherit") { + $this->__set($prop, self::$_defaults[$prop]); + } + if (!isset($this->_props_computed[$prop])) { + $this->__set($prop, $this->_props[$prop]); + } + if (strpos($this->_props_computed[$prop], "%") !== false) { + // calculate against width of containing block, needs to be done outside the style class + return $this->_props_computed[$prop]; + } + return $this->length_in_pt($this->_props_computed[$prop], $this->__get("font_size")); + } + + function get_margin_top() + { + return $this->_get_width("margin_top"); + } + function get_margin_right() + { + return $this->_get_width("margin_right"); + } + function get_margin_bottom() + { + return $this->_get_width("margin_bottom"); + } + function get_margin_left() + { + return $this->_get_width("margin_left"); + } + function get_padding_top() + { + return $this->_get_width("padding_top"); + } + function get_padding_right() + { + return $this->_get_width("padding_right"); + } + function get_padding_bottom() + { + return $this->_get_width("padding_bottom"); + } + function get_padding_left() + { + return $this->_get_width("padding_left"); + } + /** * @param $w * @param $h @@ -1485,13 +1584,13 @@ class Style $rBR = (float)$this->__get("border_bottom_right_radius"); if ($rTL + $rTR + $rBL + $rBR == 0) { - return $this->_computed_border_radius = array( + return $this->_computed_border_radius = [ 0, 0, 0, 0, "top-left" => 0, "top-right" => 0, "bottom-right" => 0, "bottom-left" => 0, - ); + ]; } $t = (float)$this->__get("border_top_width"); @@ -1504,13 +1603,13 @@ class Style $rBL = min($rBL, $h - $rTL - $t / 2 - $b / 2, $w - $rBR - $l / 2 - $r / 2); $rBR = min($rBR, $h - $rTR - $t / 2 - $b / 2, $w - $rBL - $l / 2 - $r / 2); - return $this->_computed_border_radius = array( + return $this->_computed_border_radius = [ $rTL, $rTR, $rBR, $rBL, "top-left" => $rTL, "top-right" => $rTR, "bottom-right" => $rBR, "bottom-left" => $rBL, - ); + ]; } /** @@ -1523,13 +1622,10 @@ class Style */ function get_outline_color() { - if ($this->_props["outline_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["outline_color"] = null; - $this->_props["outline_color"] = $this->__get("color"); + if ($this->_props_computed["outline_color"] === "") { + $this->__set("outline_color", $this->__get("color")); } - - return $this->munge_color($this->_props["outline_color"]); + return $this->munge_color($this->_props_computed["outline_color"]); } /**#@+ @@ -1539,7 +1635,7 @@ class Style function get_outline_width() { $style = $this->__get("outline_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["outline_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["outline_width"]) : 0; } /**#@+ @@ -1579,6 +1675,28 @@ class Style return $arr; } + /** + * @param $val + */ + function get_counter_increment() + { + $val = trim($this->_props_computed["counter_increment"]); + $value = null; + + if (in_array($val, ["none", "inherit"])) { + $value = $val; + } else { + if (preg_match_all("/(" . self::CSS_IDENTIFIER . ")(?:\s+(" . self::CSS_INTEGER . "))?/", $val, $matches, PREG_SET_ORDER)) { + $value = []; + foreach ($matches as $match) { + $value[$match[1]] = isset($match[2]) ? $match[2] : 1; + } + } + } + return $value; + } + + /*==============================*/ /* @@ -1638,18 +1756,39 @@ class Style */ protected function _set_style_side_type($style, $side, $type, $val, $important) { - $prop = $style . '_' . $side . $type; + $prop = $style; + if (!empty($side)) { + $prop .= "_" . $side; + }; + if (!empty($type)) { + $prop .= "_" . $type; + }; + $this->_props[$prop] = $val; + $this->_prop_cache[$prop] = null; if (!isset($this->_important_props[$prop]) || $important) { + $val_computed = (float)$this->length_in_pt($val); if ($side === "bottom") { $this->_computed_bottom_spacing = null; //reset computed cache, border style can disable/enable border calculations } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; if ($important) { $this->_important_props[$prop] = true; } - $this->_props[$prop] = $val; + if ( + (($style === "border" || $style === "outline") && $type === "width" && strpos($val, "%") !== false) + || + (($style === "border" || $style === "padding" || $style === "outline") && $val_computed < 0) + ) { + return; + } elseif (($style === "margin" || $style === "padding") && (strpos($val, "%") !== false || $val === "auto")) { + $this->_props_computed[$prop] = $val; + } elseif ($style === "margin" || $style === "padding" && $val !== "inherit") { + $this->_props_computed[$prop] = ($val !== "none" && $val !== "hidden" ? $val_computed . "pt" : 0); + } elseif ($style === "color") { + $this->set_prop_color($prop, $val); + } else { + $this->_props_computed[$prop] = $val; + } } } @@ -1695,10 +1834,6 @@ class Style $this->_set_style_sides_type($style, $arr[0], $arr[1], $arr[2], $arr[3], $type, $important); break; } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style . $type] = null; - $this->_props[$style . $type] = $val; } /** @@ -1721,12 +1856,7 @@ class Style */ protected function _set_style_side_width_important($style, $side, $val) { - if ($side === "bottom") { - $this->_computed_bottom_spacing = null; //reset cache for any bottom width changes - } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style . '_' . $side] = null; - $this->_props[$style . '_' . $side] = str_replace("none", "0px", $val); + $this->_set_style_side_type($style, $side, "", $val, isset($this->_important_props[$style . $side])); } /** @@ -1741,8 +1871,10 @@ class Style $this->_important_props[$style] = true; } //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style] = null; - $this->_props[$style] = $val; + //$this->_prop_cache[$style] = null; + //$this->_props_computed[$style] = $val; + //$this->_props[$style] = $val; + $this->__set($style, $val); } } @@ -1793,6 +1925,21 @@ class Style /*======================*/ + protected function set_prop_color($prop, $color) + { + $this->_props[$prop] = $color; + $this->_props_computed[$prop] = null; + $this->_prop_cache[$prop] = null; + + $munged_color = $this->munge_color($color); + + if (is_null($munged_color)) { + return; + } + + $this->_props_computed[$prop] = (is_array($munged_color) ? $munged_color["hex"] : $munged_color); + } + /** * Sets color * @@ -1803,17 +1950,7 @@ class Style */ function set_color($color) { - $col = $this->munge_color($color); - - if (is_null($col) || !isset($col["hex"])) { - $color = "inherit"; - } else { - $color = $col["hex"]; - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["color"] = null; - $this->_props["color"] = $color; + $this->set_prop_color("color", $color); } /** @@ -1824,16 +1961,7 @@ class Style */ function set_background_color($color) { - $col = $this->munge_color($color); - - if (is_null($col)) { - return; - //$col = self::$_defaults["background_color"]; - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_color"] = null; - $this->_props["background_color"] = is_array($col) ? $col["hex"] : $col; + $this->set_prop_color("background_color", $color); } /** @@ -1844,9 +1972,9 @@ class Style */ function set_background_image($val) { - //see __set and __get, on all assignments clear cache, not needed on direct set through __set + $this->_props["background_image"] = $val; + $this->_props_computed["background_image"] = $this->_image($val); $this->_prop_cache["background_image"] = null; - $this->_props["background_image"] = $this->_image($val); } /** @@ -1915,13 +2043,13 @@ class Style $this->_set_style("background_image", "none", $important); $this->_set_style("background_color", "transparent", $important); } else { - $pos = array(); + $pos = []; $tmp = preg_replace("/\s*\,\s*/", ",", $val); // when rgb() has spaces $tmp = preg_split("/\s+/", $tmp); foreach ($tmp as $attr) { if (mb_substr($attr, 0, 3) === "url" || $attr === "none") { - $this->_set_style("background_image", $this->_image($attr), $important); + $this->_set_style("background_image", $attr, $important); } elseif ($attr === "fixed" || $attr === "scroll") { $this->_set_style("background_attachment", $attr, $important); } elseif ($attr === "repeat" || $attr === "repeat-x" || $attr === "repeat-y" || $attr === "no-repeat") { @@ -1939,8 +2067,9 @@ class Style } //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background"] = null; $this->_props["background"] = $val; + $this->_props_computed["background"] = $val; + $this->_prop_cache["background"] = null; } /** @@ -1953,10 +2082,84 @@ class Style */ function set_font_size($size) { - $this->__font_size_calculated = false; - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["font_size"] = null; $this->_props["font_size"] = $size; + $this->_props_computed["font_size"] = null; + $this->_prop_cache["font_size"] = null; + + if ($size === "inherit") { + $this->_props_computed["font_size"] = $size; + return; + } + if (!isset($this->_parent_font_size)) { + $this->_parent_font_size = self::$default_font_size; + } + + switch ((string)$size) { + case "xx-small": + case "x-small": + case "small": + case "medium": + case "large": + case "x-large": + case "xx-large": + $fs = self::$default_font_size * self::$font_size_keywords[$size]; + break; + + case "smaller": + $fs = 8 / 9 * $this->_parent_font_size; + break; + + case "larger": + $fs = 6 / 5 * $this->_parent_font_size; + break; + + default: + $fs = $size; + break; + } + + // length_in_pt uses the font size if units are em or ex (and, potentially, rem) so we'll calculate in the method + if (($i = mb_strpos($fs, "rem")) !== false) { + if ($this->_stylesheet->get_dompdf()->getTree()->get_root()->get_style() === null) { + // Interpreting it as "em", see https://github.com/dompdf/dompdf/issues/1406 + $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; + } else { + $fs = (float)mb_substr($fs, 0, $i) * $this->_stylesheet->get_dompdf()->getTree()->get_root()->get_style()->font_size; + } + } elseif (($i = mb_strpos($fs, "em")) !== false) { + $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; + } elseif (($i = mb_strpos($fs, "ex")) !== false) { + $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size / 2; + } else { + //FIXME: prefer just calling length_in_pt, when we provide a ref size to length_in_pt should em and ex use that instead of the current font size? + $fs = (float)$this->length_in_pt($fs, $this->_parent_font_size); + } + + $this->_props_computed["font_size"] = $fs; + } + + /** + * Sets the font weight + * + * @param string|int $weight + */ + function set_font_weight($weight) + { + $this->_props["font_weight"] = $weight; + $this->_props_computed["font_weight"] = null; + $this->_prop_cache["font_weight"] = null; + + $computed_weight = $weight; + + if ($weight === "bolder") { + //TODO: One font weight heavier than the parent element (among the available weights of the font). + $computed_weight = "bold"; + } elseif ($weight === "lighter") { + //TODO: One font weight lighter than the parent element (among the available weights of the font). + $computed_weight = "normal"; + } + + $this->_props_computed["font_weight"] = $computed_weight; } /** @@ -1985,25 +2188,30 @@ class Style */ function set_font($val) { - $this->__font_size_calculated = false; //see __set and __get, on all assignments clear cache, not needed on direct set through __set $this->_prop_cache["font"] = null; $this->_props["font"] = $val; $important = isset($this->_important_props["font"]); + if (strtolower($val) === "inherit") { + $this->_set_style("font_family", "inherit", $important); + $this->_set_style("font_size", "inherit", $important); + $this->_set_style("font_style", "inherit", $important); + $this->_set_style("font_variant", "inherit", $important); + $this->_set_style("font_weight", "inherit", $important); + $this->_set_style("line_height", "inherit", $important); + return; + } + if (preg_match("/^(italic|oblique|normal)\s*(.*)$/i", $val, $match)) { $this->_set_style("font_style", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("font_style", self::$_defaults["font_style"], $important); } if (preg_match("/^(small-caps|normal)\s*(.*)$/i", $val, $match)) { $this->_set_style("font_variant", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("font_variant", self::$_defaults["font_variant"], $important); } //matching numeric value followed by unit -> this is indeed a subsequent font size. Skip! @@ -2012,8 +2220,6 @@ class Style ) { $this->_set_style("font_weight", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("font_weight", self::$_defaults["font_weight"], $important); } if (preg_match("/^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger|\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))(?:\/|\s*)(.*)$/i", $val, $match)) { @@ -2022,18 +2228,30 @@ class Style if (preg_match("/^(?:\/|\s*)(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%)?)\s*(.*)$/i", $val, $match)) { $this->_set_style("line_height", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("line_height", self::$_defaults["line_height"], $important); } - } else { - $this->_set_style("font_size", self::$_defaults["font_size"], $important); - $this->_set_style("line_height", self::$_defaults["line_height"], $important); } if (strlen($val) != 0) { $this->_set_style("font_family", $val, $important); + } + } + + /** + * Sets line height property + * + * @link http://www.w3.org/TR/CSS21/visudet.html#propdef-line-height + * @param $val + */ + function set_line_height($val) + { + $this->_props["line_height"] = $val; + $this->_props_computed["line_height"] = null; + $this->_prop_cache["line_height"] = null; + + if ($val === "inherit" || $val === "normal" || is_numeric($val)) { + $this->_props_computed["line_height"] = $val; } else { - $this->_set_style("font_family", self::$_defaults["font_family"], $important); + $this->_props_computed["line_height"] = ((float)$this->length_in_pt($val, $this->__get("font_size"))) . "pt"; } } @@ -2108,7 +2326,6 @@ class Style */ function set_margin($val) { - $val = str_replace("none", "0px", $val); $this->_set_style_type_important('margin', '', $val); } @@ -2152,7 +2369,6 @@ class Style */ function set_padding($val) { - $val = str_replace("none", "0px", $val); $this->_set_style_type_important('padding', '', $val); } /**#@-*/ @@ -2174,25 +2390,21 @@ class Style //For consistency of individual and combined properties, and with ie8 and firefox3 //reset all attributes, even if only partially given - $this->_set_style_side_type('border', $side, '_style', self::$_defaults['border_' . $side . '_style'], $important); - $this->_set_style_side_type('border', $side, '_width', self::$_defaults['border_' . $side . '_width'], $important); - $this->_set_style_side_type('border', $side, '_color', self::$_defaults['border_' . $side . '_color'], $important); + $this->_set_style_side_type('border', $side, 'style', self::$_defaults['border_' . $side . '_style'], $important); + $this->_set_style_side_type('border', $side, 'width', self::$_defaults['border_' . $side . '_width'], $important); + $this->_set_style_side_type('border', $side, 'color', self::$_defaults['border_' . $side . '_color'], $important); foreach ($arr as $value) { $value = trim($value); if (in_array($value, self::$BORDER_STYLES)) { - $this->_set_style_side_type('border', $side, '_style', $value, $important); + $this->_set_style_side_type('border', $side, 'style', $value, $important); } else if (preg_match("/[.0-9]+(?:px|pt|pc|em|ex|%|in|mm|cm)|(?:thin|medium|thick)/", $value)) { - $this->_set_style_side_type('border', $side, '_width', $value, $important); + $this->_set_style_side_type('border', $side, 'width', $value, $important); } else { // must be color - $this->_set_style_side_type('border', $side, '_color', $value, $important); + $this->_set_style_side_type('border', $side, 'color', $this->munge_color($value), $important); } } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache['border_' . $side] = null; - $this->_props['border_' . $side] = $border_spec; } /** @@ -2235,14 +2447,15 @@ class Style */ function set_border($val) { + $this->_prop_cache["border"] = null; + $this->_props["border"] = $val; + $this->_props_computed["border"] = $val; $important = isset($this->_important_props["border"]); + $this->_set_border("top", $val, $important); $this->_set_border("right", $val, $important); $this->_set_border("bottom", $val, $important); $this->_set_border("left", $val, $important); - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["border"] = null; - $this->_props["border"] = $val; } /** @@ -2250,7 +2463,7 @@ class Style */ function set_border_width($val) { - $this->_set_style_type_important('border', '_width', $val); + $this->_set_style_type_important('border', 'width', $val); } /** @@ -2258,7 +2471,7 @@ class Style */ function set_border_color($val) { - $this->_set_style_type_important('border', '_color', $val); + $this->_set_style_type_important('border', 'color', $val); } /** @@ -2266,7 +2479,7 @@ class Style */ function set_border_style($val) { - $this->_set_style_type_important('border', '_style', $val); + $this->_set_style_type_important('border', 'style', $val); } /** @@ -2412,11 +2625,11 @@ class Style { $important = isset($this->_important_props["outline"]); - $props = array( + $props = [ "outline_style", "outline_width", "outline_color", - ); + ]; foreach ($props as $prop) { $_val = self::$_defaults[$prop]; @@ -2449,6 +2662,7 @@ class Style //see __set and __get, on all assignments clear cache, not needed on direct set through __set $this->_prop_cache["outline"] = null; $this->_props["outline"] = $val; + $this->_props_computed["outline"] = $val; } /** @@ -2456,7 +2670,7 @@ class Style */ function set_outline_width($val) { - $this->_set_style_type_important('outline', '_width', $val); + $this->_set_style_side_type("outline", null, "width", $val, isset($this->_important_props["outline_width"])); } /** @@ -2464,7 +2678,7 @@ class Style */ function set_outline_color($val) { - $this->_set_style_type_important('outline', '_color', $val); + $this->_set_style_side_type("outline", null, "color", $val, isset($this->_important_props["outline_color"])); } /** @@ -2472,7 +2686,7 @@ class Style */ function set_outline_style($val) { - $this->_set_style_type_important('outline', '_style', $val); + $this->_set_style_side_type("outline", null, "style", $val, isset($this->_important_props["outline_style"])); } /** @@ -2518,7 +2732,7 @@ class Style $important = isset($this->_important_props["list_style"]); $arr = explode(" ", str_replace(",", " ", $val)); - static $types = array( + static $types = [ "disc", "circle", "square", "decimal-leading-zero", "decimal", "1", "lower-roman", "upper-roman", "a", "A", @@ -2528,9 +2742,9 @@ class Style "armenian", "georgian", "hebrew", "cjk-ideographic", "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", "none" - ); + ]; - static $positions = array("inside", "outside"); + static $positions = ["inside", "outside"]; foreach ($arr as $value) { /* http://www.w3.org/TR/CSS21/generate.html#list-style @@ -2569,17 +2783,22 @@ class Style */ function set_size($val) { + $this->_props["size"] = $val; + $this->_props_computed["size"] = null; + $this->_prop_cache["size"] = null; + $length_re = "/(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))/"; $val = mb_strtolower($val); if ($val === "auto") { + $this->_props["size"] = $val; return; } $parts = preg_split("/\s+/", $val); - $computed = array(); + $computed = []; if (preg_match($length_re, $parts[0])) { $computed[] = $this->length_in_pt($parts[0]); @@ -2602,7 +2821,7 @@ class Style return; } - $this->_props["size"] = $computed; + $this->_props_computed["size"] = $computed; } /** @@ -2621,7 +2840,7 @@ class Style return null; } - $functions = array( + $functions = [ //"matrix" => "\($number,$number,$number,$number,$number,$number\)", "translate" => "\($tr_value(?:,$tr_value)?\)", @@ -2637,9 +2856,9 @@ class Style "skew" => "\($angle(?:,$angle)?\)", "skewX" => "\($angle\)", "skewY" => "\($angle\)", - ); + ]; - $transforms = array(); + $transforms = []; foreach ($parts as $part) { $t = $part[0]; @@ -2671,11 +2890,11 @@ class Style break; case "skewX": $name = "skew"; - $values = array($values[0], 0); + $values = [$values[0], 0]; break; case "skewY": $name = "skew"; - $values = array(0, $values[0]); + $values = [0, $values[0]]; break; } break; @@ -2693,12 +2912,12 @@ class Style case "translateX": $name = "translate"; - $values = array($this->length_in_pt($values[0], (float)$this->length_in_pt($this->width)), 0); + $values = [$this->length_in_pt($values[0], (float)$this->length_in_pt($this->width)), 0]; break; case "translateY": $name = "translate"; - $values = array(0, $this->length_in_pt($values[0], (float)$this->length_in_pt($this->height))); + $values = [0, $this->length_in_pt($values[0], (float)$this->length_in_pt($this->height))]; break; // <number> units @@ -2710,19 +2929,19 @@ class Style case "scaleX": $name = "scale"; - $values = array($values[0], 1.0); + $values = [$values[0], 1.0]; break; case "scaleY": $name = "scale"; - $values = array(1.0, $values[0]); + $values = [1.0, $values[0]]; break; } - $transforms[] = array( + $transforms[] = [ $name, $values, - ); + ]; } } } @@ -2783,9 +3002,9 @@ class Style } $values = array_map(function($value) { - if (in_array($value, array("top", "left"))) { + if (in_array($value, ["top", "left"])) { return 0; - } else if (in_array($value, array("bottom", "right"))) { + } else if (in_array($value, ["bottom", "right"])) { return "100%"; } else { return $value; @@ -2872,29 +3091,6 @@ class Style $this->_props["z_index"] = $val; } - /** - * @param $val - */ - function set_counter_increment($val) - { - $val = trim($val); - $value = null; - - if (in_array($val, array("none", "inherit"))) { - $value = $val; - } else { - if (preg_match_all("/(" . self::CSS_IDENTIFIER . ")(?:\s+(" . self::CSS_INTEGER . "))?/", $val, $matches, PREG_SET_ORDER)) { - $value = array(); - foreach ($matches as $match) { - $value[$match[1]] = isset($match[2]) ? $match[2] : 1; - } - } - } - - $this->_prop_cache["counter_increment"] = null; - $this->_props["counter_increment"] = $value; - } - /** * @param FontMetrics $fontMetrics * @return $this @@ -2924,29 +3120,36 @@ class Style /*DEBUGCSS print: see below additional debugging util*/ function __toString() { - return print_r(array_merge(array("parent_font_size" => $this->_parent_font_size), + return print_r(array_merge(["parent_font_size" => $this->_parent_font_size], $this->_props), true); } /*DEBUGCSS*/ function debug_print() { - /*DEBUGCSS*/ - print "parent_font_size:" . $this->_parent_font_size . ";\n"; - /*DEBUGCSS*/ + print " parent_font_size:" . $this->_parent_font_size . ";\n"; + print " Props [\n"; + print " specified [\n"; foreach ($this->_props as $prop => $val) { - /*DEBUGCSS*/ - print $prop . ':' . $val; - /*DEBUGCSS*/ + print ' ' . $prop . ': ' . preg_replace("/\r\n/", ' ', print_r($val, true)); if (isset($this->_important_props[$prop])) { - /*DEBUGCSS*/ - print '!important'; - /*DEBUGCSS*/ + print ' !important'; } - /*DEBUGCSS*/ print ";\n"; - /*DEBUGCSS*/ } - /*DEBUGCSS*/ + print " ]\n"; + print " computed [\n"; + foreach ($this->_props_computed as $prop => $val) { + print ' ' . $prop . ': ' . preg_replace("/\r\n/", ' ', print_r($val, true)); + print ";\n"; + } + print " ]\n"; + print " cached [\n"; + foreach ($this->_prop_cache as $prop => $val) { + print ' ' . $prop . ': ' . preg_replace("/\r\n/", ' ', print_r($val, true)); + print ";\n"; + } + print " ]\n"; + print " ]\n"; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php b/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php index 9d1a1eceeea79a4d3e5025ede8fd7e8e026349f8..103747b5f638fe5b7c3556f63ffe3fd95b9af57d 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php @@ -66,11 +66,11 @@ class Stylesheet * not support user stylesheets, and user agent stylesheets can not include * important declarations. */ - private static $_stylesheet_origins = array( + private static $_stylesheet_origins = [ self::ORIG_UA => 0x00000000, // user agent declarations self::ORIG_USER => 0x10000000, // user normal declarations self::ORIG_AUTHOR => 0x30000000, // author normal declarations - ); + ]; /* * Non-CSS presentational hints (i.e. HTML 4 attributes) are handled as if added @@ -152,8 +152,8 @@ class Stylesheet * (Previous version $ACCEPTED_MEDIA_TYPES = $ACCEPTED_GENERIC_MEDIA_TYPES + $ACCEPTED_DEFAULT_MEDIA_TYPE) */ static $ACCEPTED_DEFAULT_MEDIA_TYPE = "print"; - static $ACCEPTED_GENERIC_MEDIA_TYPES = array("all", "static", "visual", "bitmap", "paged", "dompdf"); - static $VALID_MEDIA_TYPES = array("all", "aural", "bitmap", "braille", "dompdf", "embossed", "handheld", "paged", "print", "projection", "screen", "speech", "static", "tty", "tv", "visual"); + static $ACCEPTED_GENERIC_MEDIA_TYPES = ["all", "static", "visual", "bitmap", "paged", "dompdf"]; + static $VALID_MEDIA_TYPES = ["all", "aural", "bitmap", "braille", "dompdf", "embossed", "handheld", "paged", "print", "projection", "screen", "speech", "static", "tty", "tv", "visual"]; /** * @var FontMetrics @@ -170,14 +170,14 @@ class Stylesheet { $this->_dompdf = $dompdf; $this->setFontMetrics($dompdf->getFontMetrics()); - $this->_styles = array(); - $this->_loaded_files = array(); + $this->_styles = []; + $this->_loaded_files = []; $script = __FILE__; if(isset($_SERVER["SCRIPT_FILENAME"])){ $script = $_SERVER["SCRIPT_FILENAME"]; } list($this->_protocol, $this->_base_host, $this->_base_path) = Helpers::explode_url($script); - $this->_page_styles = array("base" => new Style($this)); + $this->_page_styles = ["base" => new Style($this)]; } /** @@ -277,7 +277,7 @@ class Stylesheet } if (!isset($this->_styles[$key])) { - $this->_styles[$key] = array(); + $this->_styles[$key] = []; } $new_style = clone $style; $new_style->set_origin($this->_current_origin); @@ -312,7 +312,10 @@ class Stylesheet */ function create_style(Style $parent = null) { - return new Style($this, $this->_current_origin); + if ($parent == null) { + $parent = $this; + } + return new Style($parent, $this->_current_origin); } /** @@ -379,7 +382,7 @@ class Stylesheet } } - if (!$good_mime_type || $css == "") { + if (!$good_mime_type || empty($css)) { Helpers::record_warnings(E_USER_WARNING, "Unable to load css file $file", __FILE__, __LINE__); return; } @@ -422,7 +425,7 @@ class Stylesheet //this can lead to a too small specificity //see _css_selector_to_xpath - if (!in_array($selector[0], array(" ", ">", ".", "#", "+", ":", "[")) && $selector !== "*") { + if (!in_array($selector[0], [" ", ">", ".", "#", "+", ":", "["]) && $selector !== "*") { $d++; } @@ -459,15 +462,15 @@ class Stylesheet $query = "//"; // Will contain :before and :after - $pseudo_elements = array(); + $pseudo_elements = []; // Will contain :link, etc - $pseudo_classes = array(); + $pseudo_classes = []; // Parse the selector //$s = preg_split("/([ :>.#+])/", $selector, -1, PREG_SPLIT_DELIM_CAPTURE); - $delimiters = array(" ", ">", ".", "#", "+", ":", "[", "("); + $delimiters = [" ", ">", ".", "#", "+", ":", "[", "("]; // Add an implicit * at the beginning of the selector // if it begins with an attribute selector @@ -757,7 +760,7 @@ class Stylesheet case "[": // Attribute selectors. All with an attribute matching the following token(s) - $attr_delimiters = array("=", "]", "~", "|", "$", "^", "*"); + $attr_delimiters = ["=", "]", "~", "|", "$", "^", "*"]; $tok_len = mb_strlen($tok); $j = 0; @@ -889,7 +892,7 @@ class Stylesheet $query = rtrim($query, "/"); } - return array("query" => $query, "pseudo_elements" => $pseudo_elements); + return ["query" => $query, "pseudo_elements" => $pseudo_elements]; } /** @@ -946,7 +949,7 @@ class Stylesheet // FIXME: this is not particularly robust... - $styles = array(); + $styles = []; $xp = new DOMXPath($tree->get_dom()); $DEBUGCSS = $this->_dompdf->getOptions()->getDebugCss(); @@ -1089,21 +1092,21 @@ class Stylesheet if (isset($styles[$id])) { /** @var array[][] $applied_styles */ - $applied_styles = $styles[$frame->get_id()]; + $applied_styles = $styles[$id]; // Sort by specificity ksort($applied_styles); if ($DEBUGCSS) { $debug_nodename = $frame->get_node()->nodeName; - print "<pre>\n[$debug_nodename\n"; + print "<pre>\n$debug_nodename [\n"; foreach ($applied_styles as $spec => $arr) { - printf("specificity: 0x%08x\n", $spec); + printf(" specificity 0x%08x\n", $spec); /** @var Style $s */ foreach ($arr as $s) { - print "[\n"; + print " [\n"; $s->debug_print(); - print "]\n"; + print " ]\n"; } } } @@ -1174,25 +1177,21 @@ class Stylesheet } } - // Inherit parent's styles if required + // Inherit parent's styles if parent exists if ($p) { - if ($DEBUGCSS) { - print "inherit:\n"; - print "[\n"; + print " inherit [\n"; $p->get_style()->debug_print(); - print "]\n"; + print " ]\n"; } - $style->inherit($p->get_style()); } if ($DEBUGCSS) { - print "DomElementStyle:\n"; - print "[\n"; + print " DomElementStyle [\n"; $style->debug_print(); - print "]\n"; - print "/$debug_nodename]\n</pre>"; + print " ]\n"; + print "]\n</pre>"; } /*DEBUGCSS print: see below different print debugging method @@ -1221,7 +1220,6 @@ class Stylesheet $this->_styles[$key] = null; unset($this->_styles[$key]); } - } /** @@ -1234,15 +1232,14 @@ class Stylesheet */ private function _parse_css($str) { - $str = trim($str); // Destroy comments and remove HTML comments - $css = preg_replace(array( + $css = preg_replace([ "'/\*.*?\*/'si", "/^<!--/", "/-->$/" - ), "", $str); + ], "", $str); // FIXME: handle '{' within strings, e.g. [attr="string {}"] @@ -1304,16 +1301,16 @@ class Stylesheet } elseif (!in_array($media_query, self::$VALID_MEDIA_TYPES)) { // otherwise conditionally parse the stylesheet assuming there are parseable media queries if (preg_match_all($media_query_regex, $media_query, $media_query_matches, PREG_SET_ORDER) !== false) { - $mq = array(); + $mq = []; foreach ($media_query_matches as $media_query_match) { if (empty($media_query_match[1]) === false) { $media_query_feature = strtolower($media_query_match[3]); $media_query_value = strtolower($media_query_match[2]); - $mq[] = array($media_query_feature, $media_query_value); + $mq[] = [$media_query_feature, $media_query_value]; } else if (empty($media_query_match[4]) === false) { $media_query_feature = strtolower($media_query_match[5]); $media_query_value = (array_key_exists(8, $media_query_match) ? strtolower($media_query_match[8]) : null); - $mq[] = array($media_query_feature, $media_query_value); + $mq[] = [$media_query_feature, $media_query_value]; } } $this->_parse_sections($match[5], $mq); @@ -1359,6 +1356,7 @@ class Stylesheet /** @noinspection PhpMissingBreakStatementInspection */ case ":first": $key = $page_selector; + break; default: break 2; @@ -1387,7 +1385,6 @@ class Stylesheet if ($match[7] !== "") { $this->_parse_sections($match[7]); } - } } @@ -1490,7 +1487,6 @@ class Stylesheet $this->_base_host = $host; $this->_base_path = $path; } - } /** @@ -1505,18 +1501,18 @@ class Stylesheet preg_match_all("/(url|local)\s*\([\"\']?([^\"\'\)]+)[\"\']?\)\s*(format\s*\([\"\']?([^\"\'\)]+)[\"\']?\))?/i", $descriptors->src, $src); - $sources = array(); - $valid_sources = array(); + $sources = []; + $valid_sources = []; foreach ($src[0] as $i => $value) { - $source = array( + $source = [ "local" => strtolower($src[1][$i]) === "local", "uri" => $src[2][$i], "format" => strtolower($src[4][$i]), "path" => Helpers::build_url($this->_protocol, $this->_base_host, $this->_base_path, $src[2][$i]), - ); + ]; - if (!$source["local"] && in_array($source["format"], array("", "truetype"))) { + if (!$source["local"] && in_array($source["format"], ["", "truetype"])) { $valid_sources[] = $source; } @@ -1528,11 +1524,11 @@ class Stylesheet return; } - $style = array( + $style = [ "family" => $descriptors->get_font_family_raw(), "weight" => $descriptors->font_weight, "style" => $descriptors->font_style, - ); + ]; $this->getFontMetrics()->registerFont($style, $valid_sources[0]["path"], $this->_dompdf->getHttpContext()); } @@ -1633,13 +1629,13 @@ class Stylesheet * @param string $str CSS selectors and rulesets * @param array $media_queries */ - private function _parse_sections($str, $media_queries = array()) + private function _parse_sections($str, $media_queries = []) { // Pre-process: collapse all whitespace and strip whitespace around '>', // '.', ':', '+', '#' - $patterns = array("/[\\s\n]+/", "/\\s+([>.:+#])\\s+/"); - $replacements = array(" ", "\\1"); + $patterns = ["/[\\s\n]+/", "/\\s+([>.:+#])\\s+/"]; + $replacements = [" ", "\\1"]; $str = preg_replace($patterns, $replacements, $str); $DEBUGCSS = $this->_dompdf->getOptions()->getDebugCss(); @@ -1650,7 +1646,7 @@ class Stylesheet if ($i === false) { continue; } //$selectors = explode(",", mb_substr($sect, 0, $i)); - $selectors = preg_split("/,(?![^\(]*\))/", mb_substr($sect, 0, $i),0, PREG_SPLIT_NO_EMPTY); + $selectors = preg_split("/,(?![^\(]*\))/", mb_substr($sect, 0, $i), 0, PREG_SPLIT_NO_EMPTY); if ($DEBUGCSS) print '[section'; $style = $this->_parse_properties(trim(mb_substr($sect, $i + 1))); @@ -1679,7 +1675,7 @@ class Stylesheet } if ($DEBUGCSS) { - print '_parse_sections]'; + print "_parse_sections]\n"; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Dompdf.php b/civicrm/vendor/dompdf/dompdf/src/Dompdf.php index 90d26ae2260324f2da4a4e0e7b63accd4401b403..1b4c157073564c07a0825fc307f7ded705bed5db 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Dompdf.php +++ b/civicrm/vendor/dompdf/dompdf/src/Dompdf.php @@ -19,6 +19,7 @@ use HTML5_TreeBuilder; use Dompdf\Image\Cache; use Dompdf\Renderer\ListBullet; use Dompdf\Css\Stylesheet; +use Dompdf\Helpers; /** * Dompdf - PHP5 HTML to PDF renderer @@ -123,7 +124,7 @@ class Dompdf * * @var array */ - private $callbacks = array(); + private $callbacks = []; /** * Experimental caching capability @@ -196,10 +197,10 @@ class Dompdf * * @var array */ - private $defaultViewOptions = array(); + private $defaultViewOptions = []; /** - * Tells wether the DOM document is in quirksmode (experimental) + * Tells whether the DOM document is in quirksmode (experimental) * * @var bool */ @@ -213,7 +214,7 @@ class Dompdf * * @var array */ - private $allowedProtocols = array(null, "", "file://", "http://", "https://"); + private $allowedProtocols = [null, "", "file://", "http://", "https://"]; /** * Local file extension whitelist @@ -222,12 +223,12 @@ class Dompdf * * @var array */ - private $allowedLocalFileExtensions = array("htm", "html"); + private $allowedLocalFileExtensions = ["htm", "html"]; /** * @var array */ - private $messages = array(); + private $messages = []; /** * @var Options @@ -245,24 +246,24 @@ class Dompdf * @var array * @deprecated */ - public static $native_fonts = array( + public static $native_fonts = [ "courier", "courier-bold", "courier-oblique", "courier-boldoblique", "helvetica", "helvetica-bold", "helvetica-oblique", "helvetica-boldoblique", "times-roman", "times-bold", "times-italic", "times-bolditalic", "symbol", "zapfdinbats" - ); + ]; /** * The list of built-in fonts * * @var array */ - public static $nativeFonts = array( + public static $nativeFonts = [ "courier", "courier-bold", "courier-oblique", "courier-boldoblique", "helvetica", "helvetica-bold", "helvetica-oblique", "helvetica-boldoblique", "times-roman", "times-bold", "times-italic", "times-bolditalic", "symbol", "zapfdinbats" - ); + ]; /** * Class constructor @@ -275,7 +276,7 @@ class Dompdf if (version_compare(PHP_VERSION, '7.0.0') >= 0) { - ini_set('pcre.jit', 0); + @ini_set('pcre.jit', 0); } if (isset($options) && $options instanceof Options) { @@ -343,15 +344,16 @@ class Dompdf * Parse errors are stored in the global array _dompdf_warnings. * * @param string $file a filename or url to load + * @param string $encoding Encoding of $file * * @throws Exception */ - public function loadHtmlFile($file) + public function loadHtmlFile($file, $encoding = null) { $this->saveLocale(); if (!$this->protocol && !$this->baseHost && !$this->basePath) { - list($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($file); + [$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file); } $protocol = strtolower($this->protocol); @@ -383,8 +385,10 @@ class Dompdf $file = $realfile; } - list($contents, $http_response_header) = Helpers::getFileContent($file, $this->httpContext); - $encoding = 'UTF-8'; + [$contents, $http_response_header] = Helpers::getFileContent($file, $this->httpContext); + if (empty($contents)) { + throw new Exception("File '$file' not found."); + } // See http://the-stickman.com/web-development/php/getting-http-response-headers-when-using-file_get_contents/ if (isset($http_response_header)) { @@ -406,7 +410,7 @@ class Dompdf * @param string $encoding * @deprecated */ - public function load_html($str, $encoding = 'UTF-8') + public function load_html($str, $encoding = null) { $this->loadHtml($str, $encoding); } @@ -414,47 +418,51 @@ class Dompdf /** * Loads an HTML string * Parse errors are stored in the global array _dompdf_warnings. - * @todo use the $encoding variable * * @param string $str HTML text to load - * @param string $encoding Not used yet + * @param string $encoding Encoding of $str */ - public function loadHtml($str, $encoding = 'UTF-8') + public function loadHtml($str, $encoding = null) { $this->saveLocale(); - // FIXME: Determine character encoding, switch to UTF8, update meta tag. Need better http/file stream encoding detection, currently relies on text or meta tag. - $known_encodings = mb_list_encodings(); - mb_detect_order('auto'); - if (($file_encoding = mb_detect_encoding($str, null, true)) === false) { - $file_encoding = "auto"; + // Determine character encoding when $encoding parameter not used + if ($encoding === null) { + mb_detect_order('auto'); + if (($encoding = mb_detect_encoding($str, null, true)) === false) { + + //"auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" + $encoding = "auto"; + } } - if (in_array(strtoupper($file_encoding), array('UTF-8','UTF8')) === false) { - $str = mb_convert_encoding($str, 'UTF-8', $file_encoding); + + if (in_array(strtoupper($encoding), array('UTF-8','UTF8')) === false) { + $str = mb_convert_encoding($str, 'UTF-8', $encoding); + + //Update encoding after converting + $encoding = 'UTF-8'; } - $metatags = array( + $metatags = [ '@<meta\s+http-equiv="Content-Type"\s+content="(?:[\w/]+)(?:;\s*?charset=([^\s"]+))?@i', '@<meta\s+content="(?:[\w/]+)(?:;\s*?charset=([^\s"]+))"?\s+http-equiv="Content-Type"@i', '@<meta [^>]*charset\s*=\s*["\']?\s*([^"\' ]+)@i', - ); + ]; foreach ($metatags as $metatag) { if (preg_match($metatag, $str, $matches)) { - if (isset($matches[1]) && in_array($matches[1], $known_encodings)) { + if (isset($matches[1]) && in_array($matches[1], mb_list_encodings())) { $document_encoding = $matches[1]; break; } } } - if (isset($document_encoding) && in_array(strtoupper($document_encoding), array('UTF-8','UTF8')) === false) { + if (isset($document_encoding) && in_array(strtoupper($document_encoding), ['UTF-8','UTF8']) === false) { $str = preg_replace('/charset=([^\s"]+)/i', 'charset=UTF-8', $str); } elseif (isset($document_encoding) === false && strpos($str, '<head>') !== false) { $str = str_replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $str); } elseif (isset($document_encoding) === false) { $str = '<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">' . $str; } - //FIXME: since we're not using this just yet - $encoding = 'UTF-8'; // remove BOM mark from UTF-8, it's treated as document text by DOMDocument // FIXME: roll this into the encoding detection using UTF-8/16/32 BOM (http://us2.php.net/manual/en/function.mb-detect-encoding.php#91051)? @@ -463,75 +471,76 @@ class Dompdf } // Store parsing warnings as messages - set_error_handler(array("\\Dompdf\\Helpers", "record_warnings")); - - // @todo Take the quirksmode into account - // http://hsivonen.iki.fi/doctype/ - // https://developer.mozilla.org/en/mozilla's_quirks_mode - $quirksmode = false; - - if ($this->options->isHtml5ParserEnabled() && class_exists("HTML5_Tokenizer")) { - $tokenizer = new HTML5_Tokenizer($str); - $tokenizer->parse(); - $doc = $tokenizer->save(); - - // Remove #text children nodes in nodes that shouldn't have - $tag_names = array("html", "table", "tbody", "thead", "tfoot", "tr"); - foreach ($tag_names as $tag_name) { - $nodes = $doc->getElementsByTagName($tag_name); - - foreach ($nodes as $node) { - self::removeTextNodes($node); - } - } - - $quirksmode = ($tokenizer->getTree()->getQuirksMode() > HTML5_TreeBuilder::NO_QUIRKS); - } else { - // loadHTML assumes ISO-8859-1 unless otherwise specified on the HTML document header. - // http://devzone.zend.com/1538/php-dom-xml-extension-encoding-processing/ (see #4) - // http://stackoverflow.com/a/11310258/264628 - $doc = new DOMDocument("1.0", $encoding); - $doc->preserveWhiteSpace = true; - $doc->loadHTML($str); - $doc->encoding = $encoding; - - // Remove #text children nodes in nodes that shouldn't have - $tag_names = array("html", "table", "tbody", "thead", "tfoot", "tr"); - foreach ($tag_names as $tag_name) { - $nodes = $doc->getElementsByTagName($tag_name); - - foreach ($nodes as $node) { - self::removeTextNodes($node); + set_error_handler([Helpers::class, 'record_warnings']); + + try { + // @todo Take the quirksmode into account + // http://hsivonen.iki.fi/doctype/ + // https://developer.mozilla.org/en/mozilla's_quirks_mode + $quirksmode = false; + + if ($this->options->isHtml5ParserEnabled() && class_exists(HTML5_Tokenizer::class)) { + $tokenizer = new HTML5_Tokenizer($str); + $tokenizer->parse(); + $doc = $tokenizer->save(); + + // Remove #text children nodes in nodes that shouldn't have + $tag_names = ["html", "head", "table", "tbody", "thead", "tfoot", "tr"]; + foreach ($tag_names as $tag_name) { + $nodes = $doc->getElementsByTagName($tag_name); + + foreach ($nodes as $node) { + self::removeTextNodes($node); + } } - } - // If some text is before the doctype, we are in quirksmode - if (preg_match("/^(.+)<!doctype/i", ltrim($str), $matches)) { - $quirksmode = true; - } // If no doctype is provided, we are in quirksmode - elseif (!preg_match("/^<!doctype/i", ltrim($str), $matches)) { - $quirksmode = true; + $quirksmode = ($tokenizer->getTree()->getQuirksMode() > HTML5_TreeBuilder::NO_QUIRKS); } else { - // HTML5 <!DOCTYPE html> - if (!$doc->doctype->publicId && !$doc->doctype->systemId) { - $quirksmode = false; + // loadHTML assumes ISO-8859-1 unless otherwise specified on the HTML document header. + // http://devzone.zend.com/1538/php-dom-xml-extension-encoding-processing/ (see #4) + // http://stackoverflow.com/a/11310258/264628 + $doc = new DOMDocument("1.0", $encoding); + $doc->preserveWhiteSpace = true; + $doc->loadHTML($str); + $doc->encoding = $encoding; + + // Remove #text children nodes in nodes that shouldn't have + $tag_names = ["html", "head", "table", "tbody", "thead", "tfoot", "tr"]; + foreach ($tag_names as $tag_name) { + $nodes = $doc->getElementsByTagName($tag_name); + + foreach ($nodes as $node) { + self::removeTextNodes($node); + } } - // not XHTML - if (!preg_match("/xhtml/i", $doc->doctype->publicId)) { + // If some text is before the doctype, we are in quirksmode + if (preg_match("/^(.+)<!doctype/i", ltrim($str), $matches)) { $quirksmode = true; + } // If no doctype is provided, we are in quirksmode + elseif (!preg_match("/^<!doctype/i", ltrim($str), $matches)) { + $quirksmode = true; + } else { + // HTML5 <!DOCTYPE html> + if (!$doc->doctype->publicId && !$doc->doctype->systemId) { + $quirksmode = false; + } + + // not XHTML + if (!preg_match("/xhtml/i", $doc->doctype->publicId)) { + $quirksmode = true; + } } } - } - - $this->dom = $doc; - $this->quirksmode = $quirksmode; - $this->tree = new FrameTree($this->dom); + $this->dom = $doc; + $this->quirksmode = $quirksmode; - restore_error_handler(); - - $this->restoreLocale(); + $this->tree = new FrameTree($this->dom); + } finally { + restore_error_handler(); + $this->restoreLocale(); + } } /** @@ -548,7 +557,7 @@ class Dompdf */ public static function removeTextNodes(DOMNode $node) { - $children = array(); + $children = []; for ($i = 0; $i < $node->childNodes->length; $i++) { $child = $node->childNodes->item($i); if ($child->nodeName === "#text") { @@ -577,7 +586,7 @@ class Dompdf // <base href="" /> $base_nodes = $this->dom->getElementsByTagName("base"); if ($base_nodes->length && ($href = $base_nodes->item(0)->getAttribute("href"))) { - list($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($href); + [$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($href); } // Set the base path of the Stylesheet to that of the file being processed @@ -688,7 +697,7 @@ class Dompdf */ public function parseDefaultView($value) { - $valid = array("XYZ", "Fit", "FitH", "FitV", "FitR", "FitB", "FitBH", "FitBV"); + $valid = ["XYZ", "Fit", "FitH", "FitV", "FitR", "FitB", "FitBH", "FitBV"]; $options = preg_split("/\s*,\s*/", trim($value)); $defaultView = array_shift($options); @@ -739,7 +748,7 @@ class Dompdf // recreation need if (is_array($basePageStyle->size)) { $basePageStyleSize = $basePageStyle->size; - $this->setPaper(array(0, 0, $basePageStyleSize[0], $basePageStyleSize[1])); + $this->setPaper([0, 0, $basePageStyleSize[0], $basePageStyleSize[1]]); } $paperSize = $this->getPaperSize(); @@ -820,11 +829,11 @@ class Dompdf } $metas = $this->dom->getElementsByTagName("meta"); - $labels = array( + $labels = [ "author" => "Author", "keywords" => "Keywords", "description" => "Subject", - ); + ]; /** @var \DOMElement $meta */ foreach ($metas as $meta) { $name = mb_strtolower($meta->getAttribute("name")); @@ -840,7 +849,7 @@ class Dompdf } } - $root->set_containing_block(0, 0,$canvas->get_width(), $canvas->get_height()); + $root->set_containing_block(0, 0, $canvas->get_width(), $canvas->get_height()); $root->set_renderer(new Renderer($this)); // This is where the magic happens: @@ -928,7 +937,7 @@ class Dompdf * @param string $filename the name of the streamed file * @param array $options header options (see above) */ - public function stream($filename = "document.pdf", $options = array()) + public function stream($filename = "document.pdf", $options = []) { $this->saveLocale(); @@ -952,7 +961,7 @@ class Dompdf * * @return string|null */ - public function output($options = array()) + public function output($options = []) { $this->saveLocale(); @@ -1442,7 +1451,7 @@ class Dompdf public function setCallbacks($callbacks) { if (is_array($callbacks)) { - $this->callbacks = array(); + $this->callbacks = []; foreach ($callbacks as $c) { if (is_array($c) && isset($c['event']) && isset($c['f'])) { $event = $c['event']; diff --git a/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php b/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php index 712bd0acc6e2dca2e164d3494ea375f52f5e9a41..7378078c2538a522b00190a5db5d5bf4c4625c1f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php +++ b/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php @@ -55,7 +55,7 @@ class FontMetrics * * @var array */ - protected $fontLookup = array(); + protected $fontLookup = []; /** * @var Options @@ -139,7 +139,7 @@ class FontMetrics $cacheData = require $this->getCacheFile(); - $this->fontLookup = array(); + $this->fontLookup = []; if (is_array($this->fontLookup)) { foreach ($cacheData as $key => $value) { $this->fontLookup[stripslashes($key)] = $value; @@ -173,28 +173,38 @@ class FontMetrics $fontname = mb_strtolower($style["family"]); $families = $this->getFontFamilies(); - $entry = array(); + $entry = []; if (isset($families[$fontname])) { $entry = $families[$fontname]; } $styleString = $this->getType("{$style['weight']} {$style['style']}"); - if (isset($entry[$styleString])) { - return true; - } $fontDir = $this->getOptions()->getFontDir(); $remoteHash = md5($remoteFile); - $localFile = $fontDir . DIRECTORY_SEPARATOR . $remoteHash; + + $prefix = $fontname . "_" . $styleString; + $prefix = preg_replace("/[^\\pL\d]+/u", "-", $prefix); + $prefix = trim($prefix, "-"); + if (function_exists('iconv')) { + $prefix = iconv('utf-8', 'us-ascii//TRANSLIT', $prefix); + } + $prefix = preg_replace("/[^-\w]+/", "", $prefix); + + $localFile = $fontDir . "/" . $prefix . "_" . $remoteHash; + + if (isset($entry[$styleString]) && $localFile == $entry[$styleString]) { + return true; + } $cacheEntry = $localFile; - $localFile .= ".".strtolower(pathinfo(parse_url($remoteFile, PHP_URL_PATH),PATHINFO_EXTENSION)); + $localFile .= ".".strtolower(pathinfo(parse_url($remoteFile, PHP_URL_PATH), PATHINFO_EXTENSION)); $entry[$styleString] = $cacheEntry; // Download the remote file list($remoteFileContent, $http_response_header) = @Helpers::getFileContent($remoteFile, $context); - if (false === $remoteFileContent) { + if (empty($remoteFileContent)) { return false; } @@ -262,7 +272,7 @@ class FontMetrics public function getTextWidth($text, $font, $size, $wordSpacing = 0.0, $charSpacing = 0.0) { // @todo Make sure this cache is efficient before enabling it - static $cache = array(); + static $cache = []; if ($text === "") { return 0; @@ -335,7 +345,7 @@ class FontMetrics */ public function getFont($familyRaw, $subtypeRaw = "normal") { - static $cache = array(); + static $cache = []; if (isset($cache[$familyRaw][$subtypeRaw])) { return $cache[$familyRaw][$subtypeRaw]; @@ -352,7 +362,7 @@ class FontMetrics $subtype = strtolower($subtypeRaw); if ($familyRaw) { - $family = str_replace(array("'", '"'), "", strtolower($familyRaw)); + $family = str_replace(["'", '"'], "", strtolower($familyRaw)); if (isset($this->fontLookup[$family][$subtype])) { return $cache[$familyRaw][$subtypeRaw] = $this->fontLookup[$family][$subtype]; @@ -412,7 +422,7 @@ class FontMetrics */ public function getFamily($family) { - $family = str_replace(array("'", '"'), "", mb_strtolower($family)); + $family = str_replace(["'", '"'], "", mb_strtolower($family)); if (isset($this->fontLookup[$family])) { return $this->fontLookup[$family]; @@ -437,19 +447,25 @@ class FontMetrics */ public function getType($type) { - if (preg_match("/bold/i", $type)) { - if (preg_match("/italic|oblique/i", $type)) { - $type = "bold_italic"; - } else { - $type = "bold"; - } - } elseif (preg_match("/italic|oblique/i", $type)) { - $type = "italic"; + if (preg_match('/bold/i', $type)) { + $weight = 700; + } elseif (preg_match('/([1-9]00)/', $type, $match)) { + $weight = (int)$match[0]; } else { - $type = "normal"; + $weight = 400; + } + $weight = $weight === 400 ? 'normal' : $weight; + $weight = $weight === 700 ? 'bold' : $weight; + + $style = preg_match('/italic|oblique/i', $type) ? 'italic' : null; + + if ($weight === 'normal' && $style !== null) { + return $style; } - return $type; + return $style === null + ? $weight + : $weight.'_'.$style; } /** @@ -495,7 +511,7 @@ class FontMetrics */ public function getCacheFile() { - return $this->getOptions()->getFontDir() . DIRECTORY_SEPARATOR . self::CACHE_FILE; + return $this->getOptions()->getFontDir() . '/' . self::CACHE_FILE; } /** diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame.php b/civicrm/vendor/dompdf/dompdf/src/Frame.php index 31ea00a1f4fae3470f3e0c64ab97c21b0c6ad785..ac38fa21eadafe40d334bb6ea27a2cd00674f106 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Frame.php +++ b/civicrm/vendor/dompdf/dompdf/src/Frame.php @@ -145,7 +145,7 @@ class Frame /** * @var array */ - protected $_is_cache = array(); + protected $_is_cache = []; /** * Tells whether the frame was already pushed to the next page @@ -188,22 +188,22 @@ class Frame $this->_style = null; $this->_original_style = null; - $this->_containing_block = array( + $this->_containing_block = [ "x" => null, "y" => null, "w" => null, "h" => null, - ); + ]; $this->_containing_block[0] =& $this->_containing_block["x"]; $this->_containing_block[1] =& $this->_containing_block["y"]; $this->_containing_block[2] =& $this->_containing_block["w"]; $this->_containing_block[3] =& $this->_containing_block["h"]; - $this->_position = array( + $this->_position = [ "x" => null, "y" => null, - ); + ]; $this->_position[0] =& $this->_position["x"]; $this->_position[1] =& $this->_position["y"]; @@ -240,7 +240,7 @@ class Frame { $whitespace = $this->get_style()->white_space; - return in_array($whitespace, array("pre", "pre-wrap", "pre-line")); + return in_array($whitespace, ["pre", "pre-wrap", "pre-line"]); } /** @@ -306,7 +306,6 @@ class Frame $this->_original_style->dispose(); $this->_original_style = null; unset($this->_original_style); - } /** @@ -475,15 +474,24 @@ class Frame { $style = $this->_style; - return (float)$style->length_in_pt(array( - $style->height, - $style->margin_top, - $style->margin_bottom, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_top, - $style->padding_bottom - ), $this->_containing_block["h"]); + return ( + (float)$style->length_in_pt( + [ + $style->height, + (float)$style->length_in_pt( + [ + $style->border_top_width, + $style->border_bottom_width, + $style->margin_top, + $style->margin_bottom, + $style->padding_top, + $style->padding_bottom + ], $this->_containing_block["w"] + ) + ], + $this->_containing_block["h"] + ) + ); } /** @@ -496,7 +504,7 @@ class Frame { $style = $this->_style; - return (float)$style->length_in_pt(array( + return (float)$style->length_in_pt([ $style->width, $style->margin_left, $style->margin_right, @@ -504,7 +512,7 @@ class Frame $style->border_right_width, $style->padding_left, $style->padding_right - ), $this->_containing_block["w"]); + ], $this->_containing_block["w"]); } /** @@ -514,15 +522,24 @@ class Frame { $style = $this->_style; - return (float)$style->length_in_pt(array( - //$style->height, - $style->margin_top, - $style->margin_bottom, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_top, - $style->padding_bottom - ), $this->_containing_block["h"]); + return ( + (float)$style->length_in_pt( + [ + //$style->height, + (float)$style->length_in_pt( + [ + $style->border_top_width, + $style->border_bottom_width, + $style->margin_top, + $style->margin_bottom, + $style->padding_top, + $style->padding_bottom + ], $this->_containing_block["w"] + ) + ], + $this->_containing_block["h"] + ) + ); } /** @@ -536,25 +553,32 @@ class Frame $cb = $this->_containing_block; $x = $this->_position["x"] + - (float)$style->length_in_pt(array($style->margin_left, + (float)$style->length_in_pt( + [ + $style->margin_left, $style->border_left_width, - $style->padding_left), - $cb["w"]); + $style->padding_left + ], + $cb["w"] + ); $y = $this->_position["y"] + - (float)$style->length_in_pt(array($style->margin_top, + (float)$style->length_in_pt( + [ + $style->margin_top, $style->border_top_width, - $style->padding_top), - $cb["h"]); + $style->padding_top + ], + $cb["w"]); $w = $style->length_in_pt($style->width, $cb["w"]); $h = $style->length_in_pt($style->height, $cb["h"]); - return array(0 => $x, "x" => $x, + return [0 => $x, "x" => $x, 1 => $y, "y" => $y, 2 => $w, "w" => $w, - 3 => $h, "h" => $h); + 3 => $h, "h" => $h]; } /** @@ -568,29 +592,44 @@ class Frame $cb = $this->_containing_block; $x = $this->_position["x"] + - (float)$style->length_in_pt(array($style->margin_left, - $style->border_left_width), + (float)$style->length_in_pt( + [ + $style->margin_left, + $style->border_left_width + ], $cb["w"]); $y = $this->_position["y"] + - (float)$style->length_in_pt(array($style->margin_top, - $style->border_top_width), - $cb["h"]); - - $w = $style->length_in_pt(array($style->padding_left, - $style->width, - $style->padding_right), - $cb["w"]); - - $h = $style->length_in_pt(array($style->padding_top, - $style->height, - $style->padding_bottom), - $cb["h"]); - - return array(0 => $x, "x" => $x, + (float)$style->length_in_pt( + [ + $style->margin_top, + $style->border_top_width + ], + $cb["h"] + ); + + $w = $style->length_in_pt( + [ + $style->padding_left, + $style->width, + $style->padding_right + ], + $cb["w"] + ); + + $h = $style->length_in_pt( + [ + $style->padding_top, + $style->padding_bottom, + $style->length_in_pt($style->height, $cb["h"]) + ], + $cb["w"] + ); + + return [0 => $x, "x" => $x, 1 => $y, "y" => $y, 2 => $w, "w" => $w, - 3 => $h, "h" => $h); + 3 => $h, "h" => $h]; } /** @@ -605,26 +644,32 @@ class Frame $x = $this->_position["x"] + (float)$style->length_in_pt($style->margin_left, $cb["w"]); - $y = $this->_position["y"] + (float)$style->length_in_pt($style->margin_top, $cb["h"]); + $y = $this->_position["y"] + (float)$style->length_in_pt($style->margin_top, $cb["w"]); - $w = $style->length_in_pt(array($style->border_left_width, + $w = $style->length_in_pt( + [ + $style->border_left_width, $style->padding_left, $style->width, $style->padding_right, - $style->border_right_width), + $style->border_right_width + ], $cb["w"]); - $h = $style->length_in_pt(array($style->border_top_width, + $h = $style->length_in_pt( + [ + $style->border_top_width, $style->padding_top, - $style->height, $style->padding_bottom, - $style->border_bottom_width), - $cb["h"]); + $style->border_bottom_width, + $style->length_in_pt($style->height, $cb["h"]) + ], + $cb["w"]); - return array(0 => $x, "x" => $x, + return [0 => $x, "x" => $x, 1 => $y, "y" => $y, 2 => $w, "w" => $w, - 3 => $h, "h" => $h); + 3 => $h, "h" => $h]; } /** @@ -726,7 +771,7 @@ class Frame public function set_position($x = null, $y = null) { if (is_array($x)) { - list($x, $y) = array($x["x"], $x["y"]); + list($x, $y) = [$x["x"], $x["y"]]; } if (is_numeric($x)) { @@ -767,7 +812,7 @@ class Frame return in_array( "auto", - array( + [ $style->height, $style->margin_top, $style->margin_bottom, @@ -776,7 +821,7 @@ class Frame $style->padding_top, $style->padding_bottom, $this->_containing_block["h"] - ), + ], true ); } @@ -792,7 +837,7 @@ class Frame return in_array( "auto", - array( + [ $style->width, $style->margin_left, $style->margin_right, @@ -801,7 +846,7 @@ class Frame $style->padding_left, $style->padding_right, $this->_containing_block["w"] - ), + ], true ); } @@ -894,7 +939,7 @@ class Frame $white_space = $this->get_style()->white_space; - return $this->_is_cache["pre"] = in_array($white_space, array("pre", "pre-wrap")); + return $this->_is_cache["pre"] = in_array($white_space, ["pre", "pre-wrap"]); } /** @@ -1206,8 +1251,8 @@ class Frame $str .= "\n"; if (php_sapi_name() === "cli") { - $str = strip_tags(str_replace(array("<br/>", "<b>", "</b>"), - array("\n", "", ""), + $str = strip_tags(str_replace(["<br/>", "<b>", "</b>"], + ["\n", "", ""], $str)); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php index 1d25854394dbc2243004343e323f286eb35fa541..944d12b2244e6390d8c180952e3334487dc09baa 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php +++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php @@ -34,7 +34,7 @@ class FrameTree * * @var array */ - protected static $HIDDEN_TAGS = array( + protected static $HIDDEN_TAGS = [ "area", "base", "basefont", @@ -46,7 +46,7 @@ class FrameTree "noembed", "param", "#comment" - ); + ]; /** * The main DomDocument @@ -86,7 +86,7 @@ class FrameTree { $this->_dom = $dom; $this->_root = null; - $this->_registry = array(); + $this->_registry = []; } /** @@ -239,7 +239,7 @@ class FrameTree } // Store the children in an array so that the tree can be modified - $children = array(); + $children = []; $length = $node->childNodes->length; for ($i = 0; $i < $length; $i++) { $children[] = $node->childNodes->item($i); diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php index ebca7e99ff65cf48b4404135757ccb47c5aa95cc..d1d82c27e906aaccb6bb920e88957a19d3e1002a 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php +++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php @@ -22,7 +22,7 @@ class FrameTreeIterator implements Iterator /** * @var array */ - protected $_stack = array(); + protected $_stack = []; /** * @var int @@ -43,7 +43,7 @@ class FrameTreeIterator implements Iterator */ public function rewind() { - $this->_stack = array($this->_root); + $this->_stack = [$this->_root]; $this->_num = 0; } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php index 777fc3ce834e7e8dc782589e0467e44a9f5fcdc6..eb86341d4a6518b9a9167e6434475d9b608f3ccc 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php @@ -31,7 +31,7 @@ abstract class AbstractFrameDecorator extends Frame { const DEFAULT_COUNTER = "-dompdf-default-counter"; - public $_counters = array(); // array([id] => counter_value) (for generated content) + public $_counters = []; // array([id] => counter_value) (for generated content) /** * The root node of the DOM tree @@ -178,7 +178,7 @@ abstract class AbstractFrameDecorator extends Frame { $this->_frame->reset(); - $this->_counters = array(); + $this->_counters = []; $this->_cached_parent = null; //clear get_parent() cache diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php index b65b3e1048c9eed79d7047348e4e31366d924256..481e58775370131e35e7b4230addba985b631573 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php @@ -42,7 +42,7 @@ class Block extends AbstractFrameDecorator { parent::__construct($frame, $dompdf); - $this->_line_boxes = array(new LineBox($this)); + $this->_line_boxes = [new LineBox($this)]; $this->_cl = 0; } @@ -53,7 +53,7 @@ class Block extends AbstractFrameDecorator { parent::reset(); - $this->_line_boxes = array(new LineBox($this)); + $this->_line_boxes = [new LineBox($this)]; $this->_cl = 0; } @@ -135,7 +135,7 @@ class Block extends AbstractFrameDecorator if ($frame instanceof Inline) { // Handle line breaks if ($frame->get_node()->nodeName === "br") { - $this->maximize_line_height($style->length_in_pt($style->line_height), $frame); + $this->maximize_line_height($style->line_height, $frame); $this->add_line(true); } @@ -188,7 +188,11 @@ class Block extends AbstractFrameDecorator $current_line->add_frame($frame); if ($frame->is_text_node()) { - $current_line->wc += count(preg_split("/\s+/", trim($frame->get_text()))); + // split the text into words (used to determine spacing between words on justified lines) + // The regex splits on everything that's a separator (^\S double negative), excluding nbsp (\xa0) + // This currently excludes the "narrow nbsp" character + $words = preg_split('/[^\S\xA0]+/u', trim($frame->get_text())); + $current_line->wc += count($words); } $this->increase_line_width($w); diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php index e831fd85e16e34fd1eb1f1bdda6f29b9104ceb0b..5b393810156bcd3d8c3e94d91fc15f88bfde4df3 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php @@ -93,7 +93,7 @@ class Inline extends AbstractFrameDecorator $split->append_child($frame); } - $page_breaks = array("always", "left", "right"); + $page_breaks = ["always", "left", "right"]; $frame_style = $frame->get_style(); if ($force_pagebreak || in_array($frame_style->page_break_before, $page_breaks) || diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php index 5b2311886673d6f10c2840e3402e7af42ef7820b..0479fc18f2359ae97496a4b558d2c668fb3abc18 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php @@ -25,7 +25,7 @@ class ListBullet extends AbstractFrameDecorator const BULLET_DESCENT = 0.3; //descent of font below baseline. Todo: Guessed for now. const BULLET_SIZE = 0.35; // bullet diameter. For now 0.5 of font_size without descent. - static $BULLET_TYPES = array("disc", "circle", "square"); + static $BULLET_TYPES = ["disc", "circle", "square"]; /** * ListBullet constructor. diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php index 39921aba8406ae437ea387d64e39aa3c89416c2f..62787766fd667057c8eb2f80650a77b1fb6a73a7 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php @@ -55,7 +55,7 @@ class Page extends AbstractFrameDecorator * * @var array */ - protected $_floating_frames = array(); + protected $_floating_frames = []; //........................................................................ @@ -125,7 +125,7 @@ class Page extends AbstractFrameDecorator */ function next_page() { - $this->_floating_frames = array(); + $this->_floating_frames = []; $this->_renderer->new_page(); $this->_page_full = false; } @@ -174,8 +174,8 @@ class Page extends AbstractFrameDecorator return null; } - $block_types = array("block", "list-item", "table", "inline"); - $page_breaks = array("always", "left", "right"); + $block_types = ["block", "list-item", "table", "inline"]; + $page_breaks = ["always", "left", "right"]; $style = $frame->get_style(); @@ -282,7 +282,7 @@ class Page extends AbstractFrameDecorator */ protected function _page_break_allowed(Frame $frame) { - $block_types = array("block", "list-item", "table", "-dompdf-image"); + $block_types = ["block", "list-item", "table", "-dompdf-image"]; Helpers::dompdf_debug("page-break", "_page_break_allowed(" . $frame->get_node()->nodeName . ")"); $display = $frame->get_style()->display; @@ -455,7 +455,6 @@ class Page extends AbstractFrameDecorator } } } - } /** diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php index 3776c60be6b7280f13d807238aa185f4d009f772..5e289390596d2c8195f69e34661bf349d944befd 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php @@ -20,7 +20,7 @@ use Dompdf\Frame\Factory; */ class Table extends AbstractFrameDecorator { - public static $VALID_CHILDREN = array( + public static $VALID_CHILDREN = [ "table-row-group", "table-row", "table-header-group", @@ -29,13 +29,13 @@ class Table extends AbstractFrameDecorator "table-column-group", "table-caption", "table-cell" - ); + ]; - public static $ROW_GROUPS = array( + public static $ROW_GROUPS = [ 'table-row-group', 'table-header-group', 'table-footer-group' - ); + ]; /** * The Cellmap object for this table. The cellmap maps table cells @@ -92,8 +92,8 @@ class Table extends AbstractFrameDecorator $this->_min_width = null; $this->_max_width = null; - $this->_headers = array(); - $this->_footers = array(); + $this->_headers = []; + $this->_footers = []; } public function reset() @@ -102,8 +102,8 @@ class Table extends AbstractFrameDecorator $this->_cellmap->reset(); $this->_min_width = null; $this->_max_width = null; - $this->_headers = array(); - $this->_footers = array(); + $this->_headers = []; + $this->_footers = []; $this->_reflower->reset(); } @@ -263,7 +263,7 @@ class Table extends AbstractFrameDecorator public function normalise() { // Store frames generated by invalid tags and move them outside the table - $erroneous_frames = array(); + $erroneous_frames = []; $anon_row = false; $iter = $this->get_first_child(); while ($iter) { diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php index 9bf77258e59f63ba187957c8dcd8888f0bfd6c2e..996e16f000360b89c6842fa60f64ba7c58683f1c 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php @@ -32,7 +32,7 @@ class TableCell extends BlockFrameDecorator function __construct(Frame $frame, Dompdf $dompdf) { parent::__construct($frame, $dompdf); - $this->_resolved_borders = array(); + $this->_resolved_borders = []; $this->_content_height = 0; } @@ -41,7 +41,7 @@ class TableCell extends BlockFrameDecorator function reset() { parent::reset(); - $this->_resolved_borders = array(); + $this->_resolved_borders = []; $this->_content_height = 0; $this->_frame->reset(); } @@ -69,14 +69,14 @@ class TableCell extends BlockFrameDecorator { $style = $this->get_style(); $v_space = (float)$style->length_in_pt( - array( + [ $style->margin_top, $style->padding_top, $style->border_top_width, $style->border_bottom_width, $style->padding_bottom, $style->margin_bottom - ), + ], (float)$style->length_in_pt($style->height) ); diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php index 4c6dcb5f9d11cc60a3615629621ba7d6aa013a1d..2fbfeb4ca34afb4aba69faceb9222dc539231675 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php @@ -39,7 +39,7 @@ class TableRow extends AbstractFrameDecorator // Find our table parent $p = TableFrameDecorator::find_parent_table($this); - $erroneous_frames = array(); + $erroneous_frames = []; foreach ($this->get_children() as $child) { $display = $child->get_style()->display; diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php index b1c1ea7a0f275c0dc63ccb289a095f64924d005e..92eafc2888007075660d88f01659c8ba1653e664 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php @@ -98,7 +98,7 @@ class Text extends AbstractFrameDecorator // This function is called in add_frame_to_line() and is used to // determine the line height, so we actually want to return the // 'line-height' property, not the actual margin box - $style = $this->get_parent()->get_style(); + $style = $this->get_style(); $font = $style->font_family; $size = $style->font_size; @@ -118,9 +118,9 @@ class Text extends AbstractFrameDecorator */ function get_padding_box() { + $style = $this->_frame->get_style(); $pb = $this->_frame->get_padding_box(); - $pb[3] = $pb["h"] = $this->_frame->get_style()->height; - + $pb[3] = $pb["h"] = $style->length_in_pt($style->height); return $pb; } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php index 946d0969e0593ba86ce69bb8191df06ac399a8bd..46d01144bf8a8bc2532a3da09d6e6b5c29f6907a 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php @@ -73,7 +73,7 @@ abstract class AbstractFrameReflower $style = $frame->get_style(); // Margins of float/absolutely positioned/inline-block elements do not collapse. - if (!$frame->is_in_flow() || $frame->is_inline_block()) { + if (!$frame->is_in_flow() || $frame->is_inline_block() || $frame->get_root() == $frame || $frame->get_parent() == $frame->get_root()) { return; } @@ -215,27 +215,27 @@ abstract class AbstractFrameReflower $style = $this->_frame->get_style(); // Account for margins & padding - $dims = array($style->padding_left, + $dims = [$style->padding_left, $style->padding_right, $style->border_left_width, $style->border_right_width, $style->margin_left, - $style->margin_right); + $style->margin_right]; $cb_w = $this->_frame->get_containing_block("w"); $delta = (float)$style->length_in_pt($dims, $cb_w); // Handle degenerate case if (!$this->_frame->get_first_child()) { - return $this->_min_max_cache = array( + return $this->_min_max_cache = [ $delta, $delta, "min" => $delta, "max" => $delta, - ); + ]; } - $low = array(); - $high = array(); + $low = []; + $high = []; for ($iter = $this->_frame->get_children()->getIterator(); $iter->valid(); $iter->next()) { $inline_min = 0; @@ -247,7 +247,7 @@ abstract class AbstractFrameReflower $minmax = $child->get_min_max_width(); - if (in_array($iter->current()->get_style()->white_space, array("pre", "nowrap"))) { + if (in_array($iter->current()->get_style()->white_space, ["pre", "nowrap"])) { $inline_min += $minmax["min"]; } else { $low[] = $minmax["min"]; @@ -287,7 +287,7 @@ abstract class AbstractFrameReflower $min += $delta; $max += $delta; - return $this->_min_max_cache = array($min, $max, "min" => $min, "max" => $max); + return $this->_min_max_cache = [$min, $max, "min" => $min, "max" => $max]; } /** @@ -306,8 +306,8 @@ abstract class AbstractFrameReflower $string = trim($string, "'\""); } - $string = str_replace(array("\\\n", '\\"', "\\'"), - array("", '"', "'"), $string); + $string = str_replace(["\\\n", '\\"', "\\'"], + ["", '"', "'"], $string); // Convert escaped hex characters into ascii characters (e.g. \A => newline) $string = preg_replace_callback("/\\\\([0-9a-fA-F]{0,6})/", @@ -333,13 +333,13 @@ abstract class AbstractFrameReflower return null; } - $quotes_array = array(); + $quotes_array = []; foreach ($matches as $_quote) { $quotes_array[] = $this->_parse_string($_quote[0], true); } if (empty($quotes_array)) { - $quotes_array = array('"', '"'); + $quotes_array = ['"', '"']; } return array_chunk($quotes_array, 2); @@ -426,7 +426,7 @@ abstract class AbstractFrameReflower } $p = $this->_frame->lookup_counter_frame($counter_id); - $tmp = array(); + $tmp = []; while ($p) { // We only want to use the counter values when they actually increment the counter if (array_key_exists($counter_id, $p->_counters)) { diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php index c6b75eb019685a636e958c3547a33ae252e490f7..fcf810ff5d5b800a1a7867f318a75be3daedda85 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php @@ -60,13 +60,13 @@ class Block extends AbstractFrameReflower $right = $style->length_in_pt($style->right, $w); // Handle 'auto' values - $dims = array($style->border_left_width, + $dims = [$style->border_left_width, $style->border_right_width, $style->padding_left, $style->padding_right, $width !== "auto" ? $width : 0, $rm !== "auto" ? $rm : 0, - $lm !== "auto" ? $lm : 0); + $lm !== "auto" ? $lm : 0]; // absolutely positioned boxes take the 'left' and 'right' properties into account if ($frame->is_absolute()) { @@ -156,13 +156,13 @@ class Block extends AbstractFrameReflower $rm = $diff; } - return array( + return [ "width" => $width, "margin_left" => $lm, "margin_right" => $rm, "left" => $left, "right" => $right, - ); + ]; } /** @@ -207,7 +207,7 @@ class Block extends AbstractFrameReflower $max_width = $style->length_in_pt($style->max_width, $cb["w"]); if ($max_width !== "none" && $min_width > $max_width) { - list($max_width, $min_width) = array($min_width, $max_width); + list($max_width, $min_width) = [$min_width, $max_width]; } if ($max_width !== "none" && $width > $max_width) { @@ -223,7 +223,7 @@ class Block extends AbstractFrameReflower $right = $calculate_width['right']; } - return array($width, $margin_left, $margin_right, $left, $right); + return [$width, $margin_left, $margin_right, $left, $right]; } /** @@ -269,7 +269,7 @@ class Block extends AbstractFrameReflower // see http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height - $dims = array($top !== "auto" ? $top : 0, + $dims = [$top !== "auto" ? $top : 0, $style->margin_top !== "auto" ? $style->margin_top : 0, $style->padding_top, $style->border_top_width, @@ -277,7 +277,7 @@ class Block extends AbstractFrameReflower $style->border_bottom_width, $style->padding_bottom, $style->margin_bottom !== "auto" ? $style->margin_bottom : 0, - $bottom !== "auto" ? $bottom : 0); + $bottom !== "auto" ? $bottom : 0]; $sum = (float)$style->length_in_pt($dims, $cb["h"]); @@ -406,7 +406,7 @@ class Block extends AbstractFrameReflower if ($max_height !== "none" && $min_height > $max_height) { // Swap 'em - list($max_height, $min_height) = array($min_height, $max_height); + list($max_height, $min_height) = [$min_height, $max_height]; } if ($max_height !== "none" && $height > $max_height) { @@ -419,7 +419,7 @@ class Block extends AbstractFrameReflower } } - return array($height, $margin_top, $margin_bottom, $top, $bottom); + return [$height, $margin_top, $margin_bottom, $top, $bottom]; } /** @@ -604,7 +604,7 @@ class Block extends AbstractFrameReflower break; case "text-top": // FIXME: this should be the height of the frame minus the height of the text - $y_offset = $height - (float)$style->length_in_pt($style->line_height, $style->font_size); + $y_offset = $height - $style->line_height; break; case "top": @@ -810,16 +810,16 @@ class Block extends AbstractFrameReflower $this->_frame->increase_line_width($indent); // Determine the content edge - $top = (float)$style->length_in_pt(array($style->margin_top, + $top = (float)$style->length_in_pt([$style->margin_top, $style->padding_top, - $style->border_top_width), $cb["h"]); + $style->border_top_width], $cb["h"]); - $bottom = (float)$style->length_in_pt(array($style->border_bottom_width, + $bottom = (float)$style->length_in_pt([$style->border_bottom_width, $style->margin_bottom, - $style->padding_bottom), $cb["h"]); + $style->padding_bottom], $cb["h"]); - $cb_x = $x + (float)$left_margin + (float)$style->length_in_pt(array($style->border_left_width, - $style->padding_left), $cb["w"]); + $cb_x = $x + (float)$left_margin + (float)$style->length_in_pt([$style->border_left_width, + $style->padding_left], $cb["w"]); $cb_y = $y + $top; diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php index 805523c52ceaa46a7297b82749195d346437c889..f74728634d7adcb7192296ea00fd19a648d2e12a 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php @@ -201,6 +201,6 @@ class Image extends AbstractFrameReflower $style->min_height = "none"; $style->max_height = "none"; - return array($width, $width, "min" => $width, "max" => $width); + return [$width, $width, "min" => $width, "max" => $width]; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php index dc87705c11a8526d2a44f667287faa7c56aabc4f..3399b97d0213174c9ac810ed02147b20dcdf1764 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php @@ -93,7 +93,7 @@ class Page extends AbstractFrameReflower */ function reflow(BlockFrameDecorator $block = null) { - $fixed_children = array(); + $fixed_children = []; $prev_child = null; $child = $this->_frame->get_first_child(); $current_page = 0; @@ -186,10 +186,10 @@ class Page extends AbstractFrameReflower } if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) { - $info = array( + $info = [ 0 => $this->_canvas, "canvas" => $this->_canvas, 1 => $frame, "frame" => $frame, - ); + ]; $fs = $this->_callbacks[$event]; foreach ($fs as $f) { if (is_callable($f)) { diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php index 1f560c053a5d803a58eeb951517cd82d91a19e66..ebf430efe43f8d8acbe7f4ef27ba58352ebf13be 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php @@ -85,11 +85,11 @@ class Table extends AbstractFrameReflower $delta = $left + $right; if (!$centered) { - $delta += (float)$style->length_in_pt(array( + $delta += (float)$style->length_in_pt([ $style->padding_left, $style->border_left_width, $style->border_right_width, - $style->padding_right), + $style->padding_right], $cb["w"]); } @@ -345,7 +345,7 @@ class Table extends AbstractFrameReflower if ($max_height !== "none" && $min_height > $max_height) { // Swap 'em - list($max_height, $min_height) = array($min_height, $max_height); + list($max_height, $min_height) = [$min_height, $max_height]; } if ($max_height !== "none" && $height > $max_height) { @@ -433,7 +433,7 @@ class Table extends AbstractFrameReflower $left = $style->margin_left; $right = $style->margin_right; - $diff = $cb["w"] - $width; + $diff = (float)$cb["w"] - (float)$width; if ($left === "auto" && $right === "auto") { if ($diff < 0) { @@ -457,11 +457,11 @@ class Table extends AbstractFrameReflower list($x, $y) = $frame->get_position(); // Determine the content edge - $content_x = $x + (float)$left + (float)$style->length_in_pt(array($style->padding_left, - $style->border_left_width), $cb["w"]); - $content_y = $y + (float)$style->length_in_pt(array($style->margin_top, + $content_x = $x + (float)$left + (float)$style->length_in_pt([$style->padding_left, + $style->border_left_width], $cb["w"]); + $content_y = $y + (float)$style->length_in_pt([$style->margin_top, $style->border_top_width, - $style->padding_top), $cb["h"]); + $style->padding_top], $cb["h"]); if (isset($cb["h"])) { $h = $cb["h"]; @@ -533,7 +533,7 @@ class Table extends AbstractFrameReflower // Find the min/max width of the table and sort the columns into // absolute/percent/auto arrays - $this->_state = array(); + $this->_state = []; $this->_state["min_width"] = 0; $this->_state["max_width"] = 0; @@ -541,9 +541,9 @@ class Table extends AbstractFrameReflower $this->_state["absolute_used"] = 0; $this->_state["auto_min"] = 0; - $this->_state["absolute"] = array(); - $this->_state["percent"] = array(); - $this->_state["auto"] = array(); + $this->_state["absolute"] = []; + $this->_state["percent"] = []; + $this->_state["auto"] = []; $columns =& $this->_frame->get_cellmap()->get_columns(); foreach (array_keys($columns) as $i) { @@ -563,12 +563,12 @@ class Table extends AbstractFrameReflower } // Account for margins & padding - $dims = array($style->border_left_width, + $dims = [$style->border_left_width, $style->border_right_width, $style->padding_left, $style->padding_right, $style->margin_left, - $style->margin_right); + $style->margin_right]; if ($style->border_collapse !== "collapse") { list($dims[]) = $style->border_spacing; @@ -579,11 +579,11 @@ class Table extends AbstractFrameReflower $this->_state["min_width"] += $delta; $this->_state["max_width"] += $delta; - return $this->_min_max_cache = array( + return $this->_min_max_cache = [ $this->_state["min_width"], $this->_state["max_width"], "min" => $this->_state["min_width"], "max" => $this->_state["max_width"], - ); + ]; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php index 87c5cf81843337b5f49c664a8cbaf8c7807e6b26..b3c93df4bc7a8eee633999f3af3344a38f935737 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php @@ -50,23 +50,23 @@ class TableCell extends Block //FIXME? $h = $this->_frame->get_containing_block("h"); - $left_space = (float)$style->length_in_pt(array($style->margin_left, + $left_space = (float)$style->length_in_pt([$style->margin_left, $style->padding_left, - $style->border_left_width), + $style->border_left_width], $w); - $right_space = (float)$style->length_in_pt(array($style->padding_right, + $right_space = (float)$style->length_in_pt([$style->padding_right, $style->margin_right, - $style->border_right_width), + $style->border_right_width], $w); - $top_space = (float)$style->length_in_pt(array($style->margin_top, + $top_space = (float)$style->length_in_pt([$style->margin_top, $style->padding_top, - $style->border_top_width), + $style->border_top_width], $h); - $bottom_space = (float)$style->length_in_pt(array($style->margin_bottom, + $bottom_space = (float)$style->length_in_pt([$style->margin_bottom, $style->padding_bottom, - $style->border_bottom_width), + $style->border_bottom_width], $h); $style->width = $cb_w = $w - $left_space - $right_space; diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php index 321efeba5e8510f0dd8af408d345c209a4238d64..16217dc039434b9d52a91ce4e029c22a28bdae94 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php @@ -54,9 +54,6 @@ class Text extends AbstractFrameReflower */ protected function _collapse_white_space($text) { - //$text = $this->_frame->get_text(); -// if ( $this->_block_parent->get_current_line_box->w == 0 ) -// $text = ltrim($text, " \n\r\t"); return preg_replace(self::$_whitespace_pattern, " ", $text); } @@ -84,12 +81,12 @@ class Text extends AbstractFrameReflower // Determine the frame width including margin, padding & border $text_width = $this->getFontMetrics()->getTextWidth($text, $font, $size, $word_spacing, $char_spacing); $mbp_width = - (float)$style->length_in_pt(array($style->margin_left, + (float)$style->length_in_pt([$style->margin_left, $style->border_left_width, $style->padding_left, $style->padding_right, $style->border_right_width, - $style->margin_right), $line_width); + $style->margin_right], $line_width); $frame_width = $text_width + $mbp_width; @@ -109,7 +106,9 @@ class Text extends AbstractFrameReflower } // split the text into words - $words = preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); + // The regex splits on everything that's a separator (^\S double negative), excluding nbsp (\xa0), plus dashes + // This currently excludes the "narrow nbsp" character + $words = preg_split('/([^\S\xA0]+|-+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); $wc = count($words); // Determine the split point @@ -396,6 +395,7 @@ class Text extends AbstractFrameReflower $word_spacing = (float)$style->length_in_pt($style->word_spacing); $char_spacing = (float)$style->length_in_pt($style->letter_spacing); + // determine minimum text width based on the whitespace setting switch ($style->white_space) { default: case "normal": @@ -405,13 +405,13 @@ class Text extends AbstractFrameReflower // Find the longest word (i.e. minimum length) - // This technique (using arrays & an anonymous function) is actually - // faster than doing a single-pass character by character scan. Heh, - // yes I took the time to bench it ;) - $words = array_flip(preg_split("/[\s-]+/u", $str, -1, PREG_SPLIT_DELIM_CAPTURE)); + // split the text into words + // The regex splits on everything that's a separator (^\S double negative), excluding nbsp (\xa0), plus dashes + // This currently excludes the "narrow nbsp" character + $words = array_flip(preg_split('/([^\S\xA0]+|-+)/u', $str, -1, PREG_SPLIT_DELIM_CAPTURE)); $root = $this; - array_walk($words, function(&$val, $str) use ($font, $size, $word_spacing, $char_spacing, $root) { - $val = $root->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); + array_walk($words, function(&$chunked_text_width, $chunked_text) use ($font, $size, $word_spacing, $char_spacing, $root) { + $chunked_text_width = $root->getFontMetrics()->getTextWidth($chunked_text, $font, $size, $word_spacing, $char_spacing); }); arsort($words); @@ -419,10 +419,10 @@ class Text extends AbstractFrameReflower break; case "pre": - $lines = array_flip(preg_split("/\n/u", $str)); + $lines = array_flip(preg_split("/\R/u", $str)); $root = $this; - array_walk($lines, function(&$val, $str) use ($font, $size, $word_spacing, $char_spacing, $root) { - $val = $root->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); + array_walk($lines, function(&$chunked_text_width, $chunked_text) use ($font, $size, $word_spacing, $char_spacing, $root) { + $chunked_text_width = $root->getFontMetrics()->getTextWidth($chunked_text, $font, $size, $word_spacing, $char_spacing); }); arsort($lines); @@ -434,6 +434,7 @@ class Text extends AbstractFrameReflower break; } + // clean up the frame text based on the whitespace setting and use to determine maximum text width switch ($style->white_space) { default: case "normal": @@ -442,30 +443,29 @@ class Text extends AbstractFrameReflower break; case "pre-line": - //XXX: Is this correct? $str = preg_replace("/[ \t]+/u", " ", $text); + break; case "pre-wrap": // Find the longest word (i.e. minimum length) - $lines = array_flip(preg_split("/\n/", $text)); + $lines = array_flip(preg_split("/\R/u", $text)); $root = $this; - array_walk($lines, function(&$val, $str) use ($font, $size, $word_spacing, $char_spacing, $root) { - $val = $root->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); + array_walk($lines, function(&$chunked_text_width, $chunked_text) use ($font, $size, $word_spacing, $char_spacing, $root) { + $chunked_text_width = $root->getFontMetrics()->getTextWidth($chunked_text, $font, $size, $word_spacing, $char_spacing); }); arsort($lines); reset($lines); $str = key($lines); break; } - $max = $this->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); - $delta = (float)$style->length_in_pt(array($style->margin_left, + $delta = (float)$style->length_in_pt([$style->margin_left, $style->border_left_width, $style->padding_left, $style->padding_right, $style->border_right_width, - $style->margin_right), $line_width); + $style->margin_right], $line_width); $min += $delta; $min_word = $min; $max += $delta; @@ -478,7 +478,7 @@ class Text extends AbstractFrameReflower $min = $delta + $min_char; } - return $this->_min_max_cache = array($min, $max, $min_word, "min" => $min, "max" => $max, 'min_word' => $min_word); + return $this->_min_max_cache = [$min, $max, $min_word, "min" => $min, "max" => $max, 'min_word' => $min_word]; } /** diff --git a/civicrm/vendor/dompdf/dompdf/src/Helpers.php b/civicrm/vendor/dompdf/dompdf/src/Helpers.php index ab05b6a7493927cddcbb84a724ce315fec097bf0..6534966befafc5bc3e49e22f4ea7fd563a7ced79 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Helpers.php +++ b/civicrm/vendor/dompdf/dompdf/src/Helpers.php @@ -69,7 +69,7 @@ class Helpers $ret = $protocol; - if (!in_array(mb_strtolower($protocol), array("http://", "https://", "ftp://", "ftps://"))) { + if (!in_array(mb_strtolower($protocol), ["http://", "https://", "ftp://", "ftps://"])) { //On Windows local file, an abs path can begin also with a '\' or a drive letter and colon //drive: followed by a relative path would be a drive specific default folder. //not known in php app code, treat as abs path @@ -137,10 +137,10 @@ class Helpers public static function dec2roman($num) { - static $ones = array("", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"); - static $tens = array("", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"); - static $hund = array("", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"); - static $thou = array("", "m", "mm", "mmm"); + static $ones = ["", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"]; + static $tens = ["", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"]; + static $hund = ["", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"]; + static $thou = ["", "m", "mm", "mmm"]; if (!is_numeric($num)) { throw new Exception("dec2roman() requires a numeric argument."); @@ -200,11 +200,11 @@ class Helpers } $match['data'] = rawurldecode($match['data']); - $result = array( + $result = [ 'charset' => $match['charset'] ? $match['charset'] : 'US-ASCII', 'mime' => $match['mime'] ? $match['mime'] : 'text/plain', 'data' => $match['base64'] ? base64_decode($match['data']) : $match['data'], - ); + ]; return $result; } @@ -226,18 +226,18 @@ class Helpers * @return string The original URL with special characters encoded */ public static function encodeURI($uri) { - $unescaped = array( + $unescaped = [ '%2D'=>'-','%5F'=>'_','%2E'=>'.','%21'=>'!', '%7E'=>'~', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')' - ); - $reserved = array( + ]; + $reserved = [ '%3B'=>';','%2C'=>',','%2F'=>'/','%3F'=>'?','%3A'=>':', '%40'=>'@','%26'=>'&','%3D'=>'=','%2B'=>'+','%24'=>'$' - ); - $score = array( + ]; + $score = [ '%23'=>'#' - ); - return strtr(rawurlencode(rawurldecode($uri)), array_merge($reserved,$unescaped,$score)); + ]; + return strtr(rawurlencode(rawurldecode($uri)), array_merge($reserved, $unescaped, $score)); } /** @@ -306,7 +306,7 @@ class Helpers { $w = floor($width / 2) + ($width % 2); $lineWidth = $w + (3 - (($width - 1) / 2) % 4); - $pixels = array(); + $pixels = []; $cnt = strlen($str); $c = 0; @@ -460,11 +460,11 @@ class Helpers } } - $ret = array($protocol, $host, $path, $file, + $ret = [$protocol, $host, $path, $file, "protocol" => $protocol, "host" => $host, "path" => $path, - "file" => $file); + "file" => $file]; return $ret; } @@ -503,7 +503,7 @@ class Helpers public static function record_warnings($errno, $errstr, $errfile, $errline) { // Not a warning or notice - if (!($errno & (E_WARNING | E_NOTICE | E_USER_NOTICE | E_USER_WARNING))) { + if (!($errno & (E_WARNING | E_NOTICE | E_USER_NOTICE | E_USER_WARNING | E_STRICT | E_DEPRECATED | E_USER_DEPRECATED))) { throw new Exception($errstr . " $errno"); } @@ -551,7 +551,7 @@ class Helpers public static function cmyk_to_rgb($c, $m = null, $y = null, $k = null) { if (is_array($c)) { - list($c, $m, $y, $k) = $c; + [$c, $m, $y, $k] = $c; } $c *= 255; @@ -573,10 +573,10 @@ class Helpers $b = 0; } - return array( + return [ $r, $g, $b, "r" => $r, "g" => $g, "b" => $b - ); + ]; } /** @@ -588,46 +588,46 @@ class Helpers */ public static function dompdf_getimagesize($filename, $context = null) { - static $cache = array(); + static $cache = []; if (isset($cache[$filename])) { return $cache[$filename]; } - list($width, $height, $type) = getimagesize($filename); + [$width, $height, $type] = getimagesize($filename); // Custom types - $types = array( + $types = [ IMAGETYPE_JPEG => "jpeg", IMAGETYPE_GIF => "gif", IMAGETYPE_BMP => "bmp", IMAGETYPE_PNG => "png", - ); + ]; $type = isset($types[$type]) ? $types[$type] : null; if ($width == null || $height == null) { - list($data, $headers) = Helpers::getFileContent($filename, $context); - - if (substr($data, 0, 2) === "BM") { - $meta = unpack('vtype/Vfilesize/Vreserved/Voffset/Vheadersize/Vwidth/Vheight', $data); - $width = (int)$meta['width']; - $height = (int)$meta['height']; - $type = "bmp"; - } - else { - if (strpos($data, "<svg") !== false) { - $doc = new \Svg\Document(); - $doc->loadFile($filename); + [$data, $headers] = Helpers::getFileContent($filename, $context); + + if (!empty($data)) { + if (substr($data, 0, 2) === "BM") { + $meta = unpack('vtype/Vfilesize/Vreserved/Voffset/Vheadersize/Vwidth/Vheight', $data); + $width = (int)$meta['width']; + $height = (int)$meta['height']; + $type = "bmp"; + } else { + if (strpos($data, "<svg") !== false) { + $doc = new \Svg\Document(); + $doc->loadFile($filename); - list($width, $height) = $doc->getDimensions(); - $type = "svg"; + [$width, $height] = $doc->getDimensions(); + $type = "svg"; + } } } - } - return $cache[$filename] = array($width, $height, $type); + return $cache[$filename] = [$width, $height, $type]; } /** @@ -693,7 +693,7 @@ class Helpers $meta['colors'] = !$meta['colors'] ? pow(2, $meta['bits']) : $meta['colors']; // read color palette - $palette = array(); + $palette = []; if ($meta['bits'] < 16) { $palette = unpack('l' . $meta['colors'], fread($fh, $meta['colors'] * 4)); // in rare cases the color value is signed @@ -818,52 +818,64 @@ class Helpers * @param resource $context (ignored if curl is used) * @param int $offset * @param int $maxlen (ignored if curl is used) - * @return bool|array + * @return string[] */ public static function getFileContent($uri, $context = null, $offset = 0, $maxlen = null) { - $result = false; + $content = null; $headers = null; - list($proto, $host, $path, $file) = Helpers::explode_url($uri); - $is_local_path = ($proto == "" || $proto === "file://"); + [$proto, $host, $path, $file] = Helpers::explode_url($uri); + $is_local_path = ($proto == '' || $proto === 'file://'); - set_error_handler(array("\\Dompdf\\Helpers", "record_warnings")); + set_error_handler([self::class, 'record_warnings']); - if ($is_local_path || ini_get("allow_url_fopen")) { - if ($is_local_path === false) { - $uri = Helpers::encodeURI($uri); - } - if (isset($maxlen)) { - $result = file_get_contents($uri, null, $context, $offset, $maxlen); - } else { - $result = file_get_contents($uri, null, $context, $offset); - } - if (isset($http_response_header)) { - $headers = $http_response_header; - } + try { + if ($is_local_path || ini_get('allow_url_fopen')) { + if ($is_local_path === false) { + $uri = Helpers::encodeURI($uri); + } + if (isset($maxlen)) { + $result = file_get_contents($uri, null, $context, $offset, $maxlen); + } else { + $result = file_get_contents($uri, null, $context, $offset); + } + if ($result !== false) { + $content = $result; + } + if (isset($http_response_header)) { + $headers = $http_response_header; + } - } elseif (function_exists("curl_exec")) { - $curl = curl_init($uri); + } elseif (function_exists('curl_exec')) { + $curl = curl_init($uri); - //TODO: use $context to define additional curl options - curl_setopt($curl, CURLOPT_TIMEOUT, 10); - curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl, CURLOPT_HEADER, true); - if ($offset > 0) { - curl_setopt($curl, CURLOPT_RESUME_FROM, $offset); - } + //TODO: use $context to define additional curl options + curl_setopt($curl, CURLOPT_TIMEOUT, 10); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HEADER, true); + if ($offset > 0) { + curl_setopt($curl, CURLOPT_RESUME_FROM, $offset); + } - $data = curl_exec($curl); - $raw_headers = substr($data, 0, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); - $headers = preg_split("/[\n\r]+/", trim($raw_headers)); - $result = substr($data, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); - curl_close($curl); - } + $data = curl_exec($curl); - restore_error_handler(); + if ($data !== false && !curl_errno($curl)) { + switch ($http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE)) { + case 200: + $raw_headers = substr($data, 0, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); + $headers = preg_split("/[\n\r]+/", trim($raw_headers)); + $content = substr($data, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); + break; + } + } + curl_close($curl); + } + } finally { + restore_error_handler(); + } - return array($result, $headers); + return [$content, $headers]; } public static function mb_ucwords($str) { @@ -874,7 +886,7 @@ class Helpers $str = mb_strtoupper(mb_substr($str, 0, 1)) . mb_substr($str, 1); - foreach (array(' ', '.', ',', '!', '?', '-', '+') as $s) { + foreach ([' ', '.', ',', '!', '?', '-', '+'] as $s) { $pos = 0; while (($pos = mb_strpos($str, $s, $pos)) !== false) { $pos++; diff --git a/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php b/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php index e1139b11d95c984aceb5dec888a2210624fe153b..16c837d56fa5e844de33df6e9aabf9bc3394a480 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php +++ b/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php @@ -27,7 +27,7 @@ class Cache * * @var array */ - protected static $_cache = array(); + protected static $_cache = []; /** * The url to the "broken image" used when images can't be loaded @@ -88,7 +88,9 @@ class Cache } // From remote else { $tmp_dir = $dompdf->getOptions()->getTempDir(); - $resolved_url = @tempnam($tmp_dir, "ca_dompdf_img_"); + if (($resolved_url = @tempnam($tmp_dir, "ca_dompdf_img_")) === false) { + throw new ImageException("Unable to create temporary image in " . $tmp_dir, E_WARNING); + } $image = ""; if ($data_uri) { @@ -100,7 +102,7 @@ class Cache } // Image not found or invalid - if (strlen($image) == 0) { + if (empty($image)) { $msg = ($data_uri ? "Data-URI could not be parsed" : "Image not found"); throw new ImageException($msg, E_WARNING); } // Image found, put in cache and process @@ -110,7 +112,9 @@ class Cache //- a remote url does not need to have a file extension at all //- local cached file does not have a matching file extension //Therefore get image type from the content - file_put_contents($resolved_url, $image); + if (@file_put_contents($resolved_url, $image) === false) { + throw new ImageException("Unable to create temporary image in " . $tmp_dir, E_WARNING); + } } } } // Not remote, local image @@ -127,7 +131,7 @@ class Cache list($width, $height, $type) = Helpers::dompdf_getimagesize($resolved_url, $dompdf->getHttpContext()); // Known image type - if ($width && $height && in_array($type, array("gif", "png", "jpeg", "bmp", "svg"))) { + if ($width && $height && in_array($type, ["gif", "png", "jpeg", "bmp", "svg"])) { //Don't put replacement image into cache - otherwise it will be deleted on cache cleanup. //Only execute on successful caching of remote image. if ($enable_remote && $remote || $data_uri) { @@ -145,7 +149,7 @@ class Cache Helpers::record_warnings($e->getCode(), $e->getMessage() . " \n $url", $e->getFile(), $e->getLine()); } - return array($resolved_url, $type, $message); + return [$resolved_url, $type, $message]; } /** @@ -165,7 +169,7 @@ class Cache unlink($file); } - self::$_cache = array(); + self::$_cache = []; } static function detect_type($file, $context = null) diff --git a/civicrm/vendor/dompdf/dompdf/src/LineBox.php b/civicrm/vendor/dompdf/dompdf/src/LineBox.php index 1634fb17dd7feac2a9eb4930d7226b389a67338a..68e1f7087ea8b698caa33773496d5ef24ff595c5 100644 --- a/civicrm/vendor/dompdf/dompdf/src/LineBox.php +++ b/civicrm/vendor/dompdf/dompdf/src/LineBox.php @@ -29,7 +29,7 @@ class LineBox /** * @var Frame[] */ - protected $_frames = array(); + protected $_frames = []; /** * @var integer @@ -69,7 +69,7 @@ class LineBox /** * @var bool[] */ - public $floating_blocks = array(); + public $floating_blocks = []; /** * @var bool @@ -85,7 +85,7 @@ class LineBox public function __construct(Block $frame, $y = 0) { $this->_block_frame = $frame; - $this->_frames = array(); + $this->_frames = []; $this->y = $y; $this->get_float_offsets(); @@ -124,7 +124,7 @@ class LineBox $parent = $p; - $childs = array(); + $childs = []; foreach ($floating_frames as $_floating) { $p = $_floating->get_parent(); @@ -279,7 +279,7 @@ class LineBox */ public function __toString() { - $props = array("wc", "y", "w", "h", "left", "right", "br"); + $props = ["wc", "y", "w", "h", "left", "right", "br"]; $s = ""; foreach ($props as $prop) { $s .= "$prop: " . $this->$prop . "\n"; diff --git a/civicrm/vendor/dompdf/dompdf/src/Options.php b/civicrm/vendor/dompdf/dompdf/src/Options.php index b6c7c362c5e65ff87f854026809f36da3c93f6a2..8c373160e9b4e88b21ea1ae3e0ff903f2071b415 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Options.php +++ b/civicrm/vendor/dompdf/dompdf/src/Options.php @@ -294,9 +294,9 @@ class Options $this->setChroot(realpath(__DIR__ . "/../")); $this->setRootDir($this->getChroot()); $this->setTempDir(sys_get_temp_dir()); - $this->setFontDir($this->chroot . DIRECTORY_SEPARATOR . "lib" . DIRECTORY_SEPARATOR . "fonts"); + $this->setFontDir($this->chroot . "/lib/fonts"); $this->setFontCache($this->getFontDir()); - $this->setLogOutputFile($this->getTempDir() . DIRECTORY_SEPARATOR . "log.htm"); + $this->setLogOutputFile($this->getTempDir() . "/log.htm"); if (null !== $attributes) { $this->set($attributes); @@ -311,7 +311,7 @@ class Options public function set($attributes, $value = null) { if (!is_array($attributes)) { - $attributes = array($attributes => $value); + $attributes = [$attributes => $value]; } foreach ($attributes as $key => $value) { if ($key === 'tempDir' || $key === 'temp_dir') { diff --git a/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php b/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php index 0058027a0282e4fdf03cbec7677dbaee84c19099..cdebc7a41f5a778bde6d4387e3318a5d112e9747 100644 --- a/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php +++ b/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php @@ -33,7 +33,7 @@ class PhpEvaluator * @param $code * @param array $vars */ - public function evaluate($code, $vars = array()) + public function evaluate($code, $vars = []) { if (!$this->_canvas->get_dompdf()->getOptions()->getIsPhpEnabled()) { return; diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php index 30dac509a9a190ce9e793aa5b28fe9a8991edd89..ef34a5c4801b66034f344a7d87f10315b702a447 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php +++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php @@ -37,7 +37,7 @@ class Absolute extends AbstractPositioner list($x, $y, $w, $h) = $p->get_padding_box(); } - list($width, $height) = array($frame->get_margin_width(), $frame->get_margin_height()); + list($width, $height) = [$frame->get_margin_width(), $frame->get_margin_height()]; $orig_style = $frame->get_original_style(); $orig_width = $orig_style->width; diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php index 36691f232d8a064161e1e56f17b62a37ccfee224..70bc2833b2c1bd26907e93e4414df1d326a19b20 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php +++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php @@ -41,8 +41,10 @@ class ListBullet extends AbstractPositioner $n = $frame->get_next_sibling(); if ($n) { $style = $n->get_style(); - $line_height = $style->length_in_pt($style->line_height, $style->font_size); - $offset = (float)$style->length_in_pt($line_height, $n->get_containing_block("h")) - $frame->get_height(); + $line_height = $style->line_height; + // TODO: should offset take into account the line height of the next sibling (per previous logic)? + // $offset = (float)$style->length_in_pt($line_height, $n->get_containing_block("h")) - $frame->get_height(); + $offset = $line_height - $frame->get_height(); $y += $offset / 2; } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer.php b/civicrm/vendor/dompdf/dompdf/src/Renderer.php index aa3bf2f88db28a421ea18a92339b4e776935df96..535fec750d3b6ccbf678a3a0d7ecd6da80e3ef6d 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer.php @@ -65,7 +65,7 @@ class Renderer extends AbstractRenderer $style = $frame->get_style(); - if (in_array($style->visibility, array("hidden", "collapse"))) { + if (in_array($style->visibility, ["hidden", "collapse"])) { return; } @@ -87,7 +87,7 @@ class Renderer extends AbstractRenderer $values[] = $x + (float)$style->length_in_pt($origin[0], (float)$style->length_in_pt($style->width)); $values[] = $y + (float)$style->length_in_pt($origin[1], (float)$style->length_in_pt($style->height)); - call_user_func_array(array($this->_canvas, $function), $values); + call_user_func_array([$this->_canvas, $function], $values); } } @@ -167,7 +167,7 @@ class Renderer extends AbstractRenderer } } - $stack = array(); + $stack = []; foreach ($frame->get_children() as $child) { // < 0 : nagative z-index @@ -222,8 +222,8 @@ class Renderer extends AbstractRenderer } if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) { - $info = array(0 => $this->_canvas, "canvas" => $this->_canvas, - 1 => $frame, "frame" => $frame); + $info = [0 => $this->_canvas, "canvas" => $this->_canvas, + 1 => $frame, "frame" => $frame]; $fs = $this->_callbacks[$event]; foreach ($fs as $f) { if (is_callable($f)) { diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php index 502e78a023174dbf97745c635d1708c70b68d485..768037b008e319c773089d66bc51ecde9a77b8d1 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php @@ -287,8 +287,9 @@ abstract class AbstractRenderer //However on transparent image preset the composed image with the transparency color, //to keep the transparency when copying over the non transparent parts of the tiles. $ti = imagecolortransparent($src); + $palletsize = imagecolorstotal($src); - if ($ti >= 0) { + if ($ti >= 0 && $ti < $palletsize) { $tc = imagecolorsforindex($src, $ti); $ti = imagecolorallocate($bg, $tc['red'], $tc['green'], $tc['blue']); imagefill($bg, 0, 0, $ti); @@ -434,7 +435,7 @@ abstract class AbstractRenderer */ protected function _get_dash_pattern($style, $width) { - $pattern = array(); + $pattern = []; switch ($style) { default: @@ -449,14 +450,14 @@ abstract class AbstractRenderer case "dotted": if ($width <= 1) { - $pattern = array($width, $width * 2); + $pattern = [$width, $width * 2]; } else { - $pattern = array($width); + $pattern = [$width]; } break; case "dashed": - $pattern = array(3 * $width); + $pattern = [3 * $width]; break; } @@ -556,34 +557,34 @@ abstract class AbstractRenderer // All this polygon business is for beveled corners... switch ($side) { case "top": - $points = array($x, $y, + $points = [$x, $y, $x + $length, $y, $x + $length - $right, $y + $top, - $x + $left, $y + $top); + $x + $left, $y + $top]; $this->_canvas->polygon($points, $color, null, null, true); break; case "bottom": - $points = array($x, $y, + $points = [$x, $y, $x + $length, $y, $x + $length - $right, $y - $bottom, - $x + $left, $y - $bottom); + $x + $left, $y - $bottom]; $this->_canvas->polygon($points, $color, null, null, true); break; case "left": - $points = array($x, $y, + $points = [$x, $y, $x, $y + $length, $x + $left, $y + $length - $bottom, - $x + $left, $y + $top); + $x + $left, $y + $top]; $this->_canvas->polygon($points, $color, null, null, true); break; case "right": - $points = array($x, $y, + $points = [$x, $y, $x, $y + $length, $x - $right, $y + $length - $bottom, - $x - $right, $y + $top); + $x - $right, $y + $top]; $this->_canvas->polygon($points, $color, null, null, true); break; @@ -660,7 +661,7 @@ abstract class AbstractRenderer { list($top, $right, $bottom, $left) = $widths; - $third_widths = array($top / 3, $right / 3, $bottom / 3, $left / 3); + $third_widths = [$top / 3, $right / 3, $bottom / 3, $left / 3]; // draw the outer border $this->_border_solid($x, $y, $length, $color, $third_widths, $side, $corner_style, $r1, $r2); @@ -685,14 +686,13 @@ abstract class AbstractRenderer { list($top, $right, $bottom, $left) = $widths; - $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2); + $half_widths = [$top / 2, $right / 2, $bottom / 2, $left / 2]; $this->_border_inset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); $this->_apply_ratio($side, 0.5, $top, $right, $bottom, $left, $x, $y, $length, $r1, $r2); $this->_border_outset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); - } /** @@ -710,14 +710,13 @@ abstract class AbstractRenderer { list($top, $right, $bottom, $left) = $widths; - $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2); + $half_widths = [$top / 2, $right / 2, $bottom / 2, $left / 2]; $this->_border_outset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); $this->_apply_ratio($side, 0.5, $top, $right, $bottom, $left, $x, $y, $length, $r1, $r2); $this->_border_inset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); - } /** @@ -762,13 +761,13 @@ abstract class AbstractRenderer switch ($side) { case "top": case "left": - $shade = array_map(array($this, "_shade"), $color); + $shade = array_map([$this, "_shade"], $color); $this->_border_solid($x, $y, $length, $shade, $widths, $side, $corner_style, $r1, $r2); break; case "bottom": case "right": - $tint = array_map(array($this, "_tint"), $color); + $tint = array_map([$this, "_tint"], $color); $this->_border_solid($x, $y, $length, $tint, $widths, $side, $corner_style, $r1, $r2); break; @@ -793,13 +792,13 @@ abstract class AbstractRenderer switch ($side) { case "top": case "left": - $tint = array_map(array($this, "_tint"), $color); + $tint = array_map([$this, "_tint"], $color); $this->_border_solid($x, $y, $length, $tint, $widths, $side, $corner_style, $r1, $r2); break; case "bottom": case "right": - $shade = array_map(array($this, "_shade"), $color); + $shade = array_map([$this, "_shade"], $color); $this->_border_solid($x, $y, $length, $shade, $widths, $side, $corner_style, $r1, $r2); break; @@ -916,7 +915,7 @@ abstract class AbstractRenderer * @param string $color * @param array $style */ - protected function _debug_layout($box, $color = "red", $style = array()) + protected function _debug_layout($box, $color = "red", $style = []) { $this->_canvas->rectangle($box[0], $box[1], $box[2], $box[3], Color::parse($color), 0.1, $style); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php index ee0705d8f6fdd1f65be291df1a19bedf0558671f..16c57885d3f746f73707610b0be1eddc39b0de02 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php @@ -32,11 +32,11 @@ class Block extends AbstractRenderer $this->_set_opacity($frame->get_opacity($style->opacity)); if ($node->nodeName === "body") { - $h = $frame->get_containing_block("h") - (float)$style->length_in_pt(array( + $h = $frame->get_containing_block("h") - (float)$style->length_in_pt([ $style->margin_top, $style->border_top_width, $style->border_bottom_width, - $style->margin_bottom), + $style->margin_bottom], (float)$style->length_in_pt($style->width)); } @@ -65,20 +65,20 @@ class Block extends AbstractRenderer $this->_canvas->clipping_end(); } - $border_box = array($x, $y, $w, $h); + $border_box = [$x, $y, $w, $h]; $this->_render_border($frame, $border_box); $this->_render_outline($frame, $border_box); if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutBlocks()) { $this->_debug_layout($frame->get_border_box(), "red"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($frame->get_padding_box(), "red", array(0.5, 0.5)); + $this->_debug_layout($frame->get_padding_box(), "red", [0.5, 0.5]); } } if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutLines() && $frame->get_decorator()) { foreach ($frame->get_decorator()->get_line_boxes() as $line) { - $frame->_debug_layout(array($line->x, $line->y, $line->w, $line->h), "orange"); + $frame->_debug_layout([$line->x, $line->y, $line->w, $line->h], "orange"); } } @@ -107,7 +107,7 @@ class Block extends AbstractRenderer // Short-cut: If all the borders are "solid" with the same color and style, and no radius, we'd better draw a rectangle if ( - in_array($bp["top"]["style"], array("solid", "dashed", "dotted")) && + in_array($bp["top"]["style"], ["solid", "dashed", "dotted"]) && $bp["top"] == $bp["right"] && $bp["right"] == $bp["bottom"] && $bp["bottom"] == $bp["left"] && @@ -126,12 +126,12 @@ class Block extends AbstractRenderer } // Do it the long way - $widths = array( + $widths = [ (float)$style->length_in_pt($bp["top"]["width"]), (float)$style->length_in_pt($bp["right"]["width"]), (float)$style->length_in_pt($bp["bottom"]["width"]), (float)$style->length_in_pt($bp["left"]["width"]) - ); + ]; foreach ($bp as $side => $props) { list($x, $y, $w, $h) = $border_box; @@ -192,11 +192,11 @@ class Block extends AbstractRenderer { $style = $frame->get_style(); - $props = array( + $props = [ "width" => $style->outline_width, "style" => $style->outline_style, "color" => $style->outline_color, - ); + ]; if (!$props["style"] || $props["style"] === "none" || $props["width"] <= 0) { return; @@ -210,7 +210,7 @@ class Block extends AbstractRenderer $pattern = $this->_get_dash_pattern($props["style"], $offset); // If the outline style is "solid" we'd better draw a rectangle - if (in_array($props["style"], array("solid", "dashed", "dotted"))) { + if (in_array($props["style"], ["solid", "dashed", "dotted"])) { $border_box[0] -= $offset / 2; $border_box[1] -= $offset / 2; $border_box[2] += $offset; @@ -228,7 +228,7 @@ class Block extends AbstractRenderer $method = "_border_" . $props["style"]; $widths = array_fill(0, 4, (float)$style->length_in_pt($props["width"])); - $sides = array("top", "right", "left", "bottom"); + $sides = ["top", "right", "left", "bottom"]; $length = 0; foreach ($sides as $side) { diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php index 87333af71e3755cdff87ded2dd805e3a75bbe593..7cf55e023fbcbe782eb706f5751bddcd0edd695e 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php @@ -64,12 +64,12 @@ class Image extends Block $h = (float)$style->length_in_pt($style->height, $cb["h"]); if ($has_border_radius) { - list($wt, $wr, $wb, $wl) = array( + list($wt, $wr, $wb, $wl) = [ $style->border_top_width, $style->border_right_width, $style->border_bottom_width, $style->border_left_width, - ); + ]; // we have to get the "inner" radius if ($tl > 0) { @@ -120,14 +120,14 @@ class Image extends Block $_y = $alt ? $y + $h - count($parts) * $height : $y; foreach ($parts as $i => $_part) { - $this->_canvas->text($x, $_y + $i * $height, $_part, "times", $height * 0.8, array(0.5, 0.5, 0.5)); + $this->_canvas->text($x, $_y + $i * $height, $_part, "times", $height * 0.8, [0.5, 0.5, 0.5]); } } if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutBlocks()) { $this->_debug_layout($frame->get_border_box(), "blue"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($frame->get_padding_box(), "blue", array(0.5, 0.5)); + $this->_debug_layout($frame->get_padding_box(), "blue", [0.5, 0.5]); } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php index 263fd6f1a54d3408c0a45215ce2585156f65c0dd..f496f9d0e3a6b2514b98a92c4ba337f1ab1fde41 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php @@ -32,105 +32,45 @@ class Inline extends AbstractRenderer // Draw the left border if applicable $bp = $style->get_border_properties(); - $widths = array( + $widths = [ (float)$style->length_in_pt($bp["top"]["width"]), (float)$style->length_in_pt($bp["right"]["width"]), (float)$style->length_in_pt($bp["bottom"]["width"]), (float)$style->length_in_pt($bp["left"]["width"]) - ); + ]; // Draw the background & border behind each child. To do this we need // to figure out just how much space each child takes: list($x, $y) = $frame->get_first_child()->get_position(); $w = null; $h = 0; - // $x += $widths[3]; - // $y += $widths[0]; $this->_set_opacity($frame->get_opacity($style->opacity)); - $first_row = true; - $DEBUGLAYOUTINLINE = $this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutInline(); foreach ($frame->get_children() as $child) { list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box(); - if (!is_null($w) && $child_x < $x + $w) { - //This branch seems to be supposed to being called on the first part - //of an inline html element, and the part after the if clause for the - //parts after a line break. - //But because $w initially mostly is 0, and gets updated only on the next - //round, this seem to be never executed and the common close always. - - // The next child is on another line. Draw the background & - // borders on this line. - - // Background: - if (($bg = $style->background_color) !== "transparent") { - $this->_canvas->filled_rectangle($x, $y, $w, $h, $bg); - } - - if (($url = $style->background_image) && $url !== "none") { - $this->_background_image($url, $x, $y, $w, $h, $style); - } - - // If this is the first row, draw the left border - if ($first_row) { - if ($bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $bp["left"]["width"] > 0) { - $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left"); - } - $first_row = false; - } - - // Draw the top & bottom borders - if ($bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $bp["top"]["width"] > 0) { - $method = "_border_" . $bp["top"]["style"]; - $this->$method($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top"); - } - - if ($bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $bp["bottom"]["width"] > 0) { - $method = "_border_" . $bp["bottom"]["style"]; - $this->$method($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom"); - } - - // Handle anchors & links - $link_node = null; - if ($frame->get_node()->nodeName === "a") { - $link_node = $frame->get_node(); - } else if ($frame->get_parent()->get_node()->nodeName === "a") { - $link_node = $frame->get_parent()->get_node(); - } - - if ($link_node && $href = $link_node->getAttribute("href")) { - $href = Helpers::build_url($this->_dompdf->getProtocol(), $this->_dompdf->getBaseHost(), $this->_dompdf->getBasePath(), $href); - $this->_canvas->add_link($href, $x, $y, $w, $h); - } - - $x = $child_x; - $y = $child_y; - $w = (float)$child_w; - $h = (float)$child_h; - continue; - } - if (is_null($w)) { $w = (float)$child_w; - }else { + } else { $w += (float)$child_w; } - $h = max($h, $child_h); if ($DEBUGLAYOUTINLINE) { $this->_debug_layout($child->get_border_box(), "blue"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($child->get_padding_box(), "blue", array(0.5, 0.5)); + $this->_debug_layout($child->get_padding_box(), "blue", [0.5, 0.5]); } } } + // make sure the border and background start inside the left margin + $left_margin = (float)$style->length_in_pt($style->margin_left); + $x += $left_margin; + // Handle the last child if (($bg = $style->background_color) !== "transparent") { $this->_canvas->filled_rectangle($x + $widths[3], $y + $widths[0], $w, $h, $bg); @@ -152,12 +92,8 @@ class Inline extends AbstractRenderer $w += (float)$widths[1] + (float)$widths[3]; $h += (float)$widths[0] + (float)$widths[2]; - // make sure the border and background start inside the left margin - $left_margin = (float)$style->length_in_pt($style->margin_left); - $x += $left_margin; - // If this is the first row, draw the left border too - if ($first_row && $bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $widths[3] > 0) { + if ($bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $widths[3] > 0) { $method = "_border_" . $bp["left"]["style"]; $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left"); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php index fa0bc37310c1675cc19a2acfaa2fc8a2d26df773..d3df02902ee23205be3a74af47ac19479a6e1a7f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php @@ -27,7 +27,7 @@ class ListBullet extends AbstractRenderer */ static function get_counter_chars($type) { - static $cache = array(); + static $cache = []; if (isset($cache[$type])) { return $cache[$type]; @@ -135,7 +135,7 @@ class ListBullet extends AbstractRenderer { $style = $frame->get_style(); $font_size = $style->font_size; - $line_height = (float)$style->length_in_pt($style->line_height, $frame->get_containing_block("h")); + $line_height = $style->line_height; $this->_set_opacity($frame->get_opacity($style->opacity)); @@ -230,11 +230,13 @@ class ListBullet extends AbstractRenderer $font_family = $style->font_family; $line = $li->get_containing_line(); - list($x, $y) = array($frame->get_position("x"), $line->y); + list($x, $y) = [$frame->get_position("x"), $line->y]; $x -= $this->_dompdf->getFontMetrics()->getTextWidth($text, $font_family, $font_size, $spacing); // Take line-height into account + // TODO: should the line height take into account the line height of the containing block (per previous logic) + // $line_height = (float)$style->length_in_pt($style->line_height, $frame->get_containing_block("h")); $line_height = $style->line_height; $y += ($line_height - $font_size) / 4; // FIXME I thought it should be 2, but 4 gives better results diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php index 8e607927c038c6d54a32181a21833ed4337b73a9..25bdb56a28d25f4c38fe5bff3f2052eddb6a8439 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php @@ -29,21 +29,26 @@ class TableCell extends Block return; } - $this->_set_opacity($frame->get_opacity($style->opacity)); - list($x, $y, $w, $h) = $frame->get_border_box(); - - // Draw our background, border and content - if (($bg = $style->background_color) !== "transparent") { - $this->_canvas->filled_rectangle($x, $y, (float)$w, (float)$h, $bg); + $id = $frame->get_node()->getAttribute("id"); + if (strlen($id) > 0) { + $this->_canvas->add_named_dest($id); } - if (($url = $style->background_image) && $url !== "none") { - $this->_background_image($url, $x, $y, $w, $h, $style); - } + $this->_set_opacity($frame->get_opacity($style->opacity)); + list($x, $y, $w, $h) = $frame->get_border_box(); + $table = Table::find_parent_table($frame); if ($table->get_style()->border_collapse !== "collapse") { + if (($bg = $style->background_color) !== "transparent") { + $this->_canvas->filled_rectangle($x, $y, (float)$w, (float)$h, $bg); + } + + if (($url = $style->background_image) && $url !== "none") { + $this->_background_image($url, $x, $y, $w, $h, $style); + } + $this->_render_border($frame); $this->_render_outline($frame); return; @@ -52,6 +57,10 @@ class TableCell extends Block // The collapsed case is slightly complicated... // @todo Add support for outlines here + $background_position_x = $x; $background_position_y = $y; $background_width = (float)$w; $background_height = (float)$h; + $border_right_width = 0; $border_left_width = 0; $border_top_width = 0; $border_bottom_width = 0; + $border_right_length = 0; $border_left_length = 0; $border_top_length = 0; $border_bottom_length = 0; + $cellmap = $table->get_cellmap(); $cells = $cellmap->get_spanned_cells($frame); @@ -77,43 +86,50 @@ class TableCell extends Block } // Draw the horizontal borders + $border_function_calls = []; foreach ($cells["columns"] as $j) { $bp = $cellmap->get_border_properties($i, $j); - - $y = $top_row["y"] - $bp["top"]["width"] / 2; - $col = $cellmap->get_column($j); + $x = $col["x"] - $bp["left"]["width"] / 2; + $y = $top_row["y"] - $bp["top"]["width"] / 2; $w = $col["used-width"] + ($bp["left"]["width"] + $bp["right"]["width"]) / 2; - if ($bp["top"]["style"] !== "none" && $bp["top"]["width"] > 0) { - $widths = array( + if ($bp["top"]["width"] > 0) { + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); + ]; + + $border_top_width = max($border_top_width, $widths[0]); + $method = "_border_" . $bp["top"]["style"]; - $this->$method($x, $y, $w, $bp["top"]["color"], $widths, "top", "square"); + $border_function_calls[] = [$method, [$x, $y, $w, $bp["top"]["color"], $widths, "top", "square"]]; } if ($draw_bottom) { $bp = $cellmap->get_border_properties($num_rows - 1, $j); - if ($bp["bottom"]["style"] === "none" || $bp["bottom"]["width"] <= 0) { + if ($bp["bottom"]["width"] <= 0) { continue; } - - $y = $bottom_row["y"] + $bottom_row["height"] + $bp["bottom"]["width"] / 2; - - $widths = array( + + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); - $method = "_border_" . $bp["bottom"]["style"]; - $this->$method($x, $y, $w, $bp["bottom"]["color"], $widths, "bottom", "square"); + ]; + $y = $bottom_row["y"] + $bottom_row["height"] + $bp["bottom"]["width"] / 2; + $border_bottom_width = max($border_bottom_width, $widths[2]); + + $method = "_border_" . $bp["bottom"]["style"]; + $border_function_calls[] = [$method, [$x, $y, $w, $bp["bottom"]["color"], $widths, "bottom", "square"]]; + } else { + $adjacent_bp = $cellmap->get_border_properties($i+1, $j); + $border_bottom_width = max($border_bottom_width, $adjacent_bp["top"]["width"]); } } @@ -131,49 +147,73 @@ class TableCell extends Block // Draw the vertical borders foreach ($cells["rows"] as $i) { $bp = $cellmap->get_border_properties($i, $j); - - $x = $left_col["x"] - $bp["left"]["width"] / 2; - $row = $cellmap->get_row($i); + $x = $left_col["x"] - $bp["left"]["width"] / 2; $y = $row["y"] - $bp["top"]["width"] / 2; $h = $row["height"] + ($bp["top"]["width"] + $bp["bottom"]["width"]) / 2; - if ($bp["left"]["style"] !== "none" && $bp["left"]["width"] > 0) { - $widths = array( + if ($bp["left"]["width"] > 0) { + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); + ]; + + $border_left_width = max($border_left_width, $widths[3]); $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left", "square"); + $border_function_calls[] = [$method, [$x, $y, $h, $bp["left"]["color"], $widths, "left", "square"]]; } if ($draw_right) { $bp = $cellmap->get_border_properties($i, $num_cols - 1); - if ($bp["right"]["style"] === "none" || $bp["right"]["width"] <= 0) { + if ($bp["right"]["width"] <= 0) { continue; } - $x = $right_col["x"] + $right_col["used-width"] + $bp["right"]["width"] / 2; - - $widths = array( + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); + ]; + + $x = $right_col["x"] + $right_col["used-width"] + $bp["right"]["width"] / 2; + $border_right_width = max($border_right_width, $widths[1]); $method = "_border_" . $bp["right"]["style"]; - $this->$method($x, $y, $h, $bp["right"]["color"], $widths, "right", "square"); + $border_function_calls[] = [$method, [$x, $y, $h, $bp["right"]["color"], $widths, "right", "square"]]; + } else { + $adjacent_bp = $cellmap->get_border_properties($i, $j+1); + $border_right_width = max($border_right_width, $adjacent_bp["left"]["width"]); } } - $id = $frame->get_node()->getAttribute("id"); - if (strlen($id) > 0) { - $this->_canvas->add_named_dest($id); + // Draw our background, border and content + if (($bg = $style->background_color) !== "transparent") { + $this->_canvas->filled_rectangle( + $background_position_x + ($border_left_width/2), + $background_position_y + ($border_top_width/2), + (float)$background_width - (($border_left_width + $border_right_width)/2), + (float)$background_height - (($border_top_width + $border_bottom_width)/2), + $bg + ); + } + if (($url = $style->background_image) && $url !== "none") { + $this->_background_image( + $url, + $background_position_x + ($border_left_width/2), + $background_position_y + ($border_top_width/2), + (float)$background_width - (($border_left_width + $border_right_width)/2), + (float)$background_height - (($border_top_width + $border_bottom_width)/2), + $style + ); + } + foreach ($border_function_calls as $border_function_call_params) + { + call_user_func_array([$this, $border_function_call_params[0]], $border_function_call_params[1]); } } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php index 6742f9970eb0346ac227ad221fcf784ebf00ef68..41ddd87afdea4cefd1621243bb2669cb755d7f26 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php @@ -32,13 +32,13 @@ class TableRowGroup extends Block if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutBlocks()) { $this->_debug_layout($frame->get_border_box(), "red"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($frame->get_padding_box(), "red", array(0.5, 0.5)); + $this->_debug_layout($frame->get_padding_box(), "red", [0.5, 0.5]); } } if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutLines() && $frame->get_decorator()) { foreach ($frame->get_decorator()->get_line_boxes() as $line) { - $frame->_debug_layout(array($line->x, $line->y, $line->w, $line->h), "orange"); + $frame->_debug_layout([$line->x, $line->y, $line->w, $line->h], "orange"); } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php index 51e6e62598a7dcaa6eaf4baa8e8f3e8978f35014..ed458d905586bc4702f549b583920e321b32f550 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php @@ -66,7 +66,7 @@ class Text extends AbstractRenderer $bl = 0; } - $x += (float)$style->length_in_pt(array($ml, $pl, $bl), $cb["w"]); + $x += (float)$style->length_in_pt([$ml, $pl, $bl], $cb["w"]); $font = $style->font_family; $size = $style->font_size; @@ -121,7 +121,7 @@ class Text extends AbstractRenderer // Draw all applicable text-decorations. Start with the root and work our way down. $p = $frame; - $stack = array(); + $stack = []; while ($p = $p->get_parent()) { $stack[] = $p; } @@ -161,7 +161,7 @@ class Text extends AbstractRenderer if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutLines()) { $text_width = $this->_dompdf->getFontMetrics()->getTextWidth($text, $font, $size); - $this->_debug_layout(array($x, $y, $text_width + ($line->wc - 1) * $word_spacing, $frame_font_size), "orange", array(0.5, 0.5)); + $this->_debug_layout([$x, $y, $text_width + ($line->wc - 1) * $word_spacing, $frame_font_size], "orange", [0.5, 0.5]); } } } diff --git a/civicrm/vendor/pear/mail_mime/.gitattributes b/civicrm/vendor/pear/mail_mime/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..3726835a685976ead7315e71550a59ec4e3a3482 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/.gitattributes @@ -0,0 +1,4 @@ +tests/ export-ignore +.gitignore export-ignore +.travis.yml export-ignore +package.xml export-ignore diff --git a/civicrm/packages/Mail/mime.php b/civicrm/vendor/pear/mail_mime/Mail/mime.php similarity index 87% rename from civicrm/packages/Mail/mime.php rename to civicrm/vendor/pear/mail_mime/Mail/mime.php index 8ed49b1087870b8e0e468a28c17ef492a61a25cc..25342f86aa3e983d6fb99c239428ce167f3ae597 100644 --- a/civicrm/packages/Mail/mime.php +++ b/civicrm/vendor/pear/mail_mime/Mail/mime.php @@ -24,8 +24,8 @@ * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * - Neither the name of the authors, nor the names of its contributors - * may be used to endorse or promote products derived from this + * - Neither the name of the authors, nor the names of its contributors + * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" @@ -494,14 +494,14 @@ class Mail_mime } // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } $cont = file_get_contents($file_name); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } return $cont; @@ -769,8 +769,8 @@ class Mail_mime } // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } if (!($fh = fopen($filename, 'ab'))) { @@ -785,14 +785,14 @@ class Mail_mime fclose($fh); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } // Write the rest of the message into file $res = $this->get($params, $filename); - return $res ? $res : true; + return $res ?: true; } /** @@ -822,8 +822,8 @@ class Mail_mime } // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } // Write the rest of the message into file @@ -833,11 +833,11 @@ class Mail_mime fclose($fh); } - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } - return $res ? $res : true; + return $res ?: true; } /** @@ -896,137 +896,7 @@ class Mail_mime $this->checkParams(); - $attachments = count($this->parts) > 0; - $html_images = count($this->html_images) > 0; - $html = strlen($this->htmlbody) > 0; - $calendar = strlen($this->calbody) > 0; - $has_text = strlen($this->txtbody) > 0; - $text = !$html && $has_text; - $mixed_params = array('preamble' => $this->build_params['preamble']); - - switch (true) { - case $calendar && !$attachments && !$text && !$html: - $message = $this->addCalendarPart(); - break; - - case $calendar && !$attachments: - $message = $this->addAlternativePart($mixed_params); - if ($has_text) { - $this->addTextPart($message); - } - if ($html) { - $this->addHtmlPart($message); - } - $this->addCalendarPart($message); - break; - - case $text && !$attachments: - $message = $this->addTextPart(); - break; - - case !$text && !$html && $attachments: - $message = $this->addMixedPart($mixed_params); - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - - case $text && $attachments: - $message = $this->addMixedPart($mixed_params); - $this->addTextPart($message); - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - - case $html && !$attachments && !$html_images: - if ($has_text) { - $message = $this->addAlternativePart(); - $this->addTextPart($message); - $this->addHtmlPart($message); - } else { - $message = $this->addHtmlPart(); - } - break; - - case $html && !$attachments && $html_images: - // * Content-Type: multipart/alternative; - // * text - // * Content-Type: multipart/related; - // * html - // * image... - if ($has_text) { - $message = $this->addAlternativePart(); - $this->addTextPart($message); - - $ht = $this->addRelatedPart($message); - $this->addHtmlPart($ht); - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($ht, $this->html_images[$i]); - } - } else { - // * Content-Type: multipart/related; - // * html - // * image... - $message = $this->addRelatedPart(); - $this->addHtmlPart($message); - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($message, $this->html_images[$i]); - } - } - /* - // #13444, #9725: the code below was a non-RFC compliant hack - // * Content-Type: multipart/related; - // * Content-Type: multipart/alternative; - // * text - // * html - // * image... - $message = $this->addRelatedPart(); - if ($has_text) { - $alt = $this->addAlternativePart($message); - $this->addTextPart($alt); - $this->addHtmlPart($alt); - } else { - $this->addHtmlPart($message); - } - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($message, $this->html_images[$i]); - } - */ - break; - - case $html && $attachments && !$html_images: - $message = $this->addMixedPart($mixed_params); - if ($has_text) { - $alt = $this->addAlternativePart($message); - $this->addTextPart($alt); - $this->addHtmlPart($alt); - } else { - $this->addHtmlPart($message); - } - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - - case $html && $attachments && $html_images: - $message = $this->addMixedPart($mixed_params); - if ($has_text) { - $alt = $this->addAlternativePart($message); - $this->addTextPart($alt); - $rel = $this->addRelatedPart($alt); - } else { - $rel = $this->addRelatedPart($message); - } - $this->addHtmlPart($rel); - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($rel, $this->html_images[$i]); - } - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - } + $message = $this->buildBodyPart(); if (!isset($message)) { return null; @@ -1047,15 +917,129 @@ class Mail_mime return $headers; } $this->headers = array_merge($this->headers, $headers); - return null; } else { $output = $message->encode($boundary, $skip_head); if (self::isError($output)) { return $output; } $this->headers = array_merge($this->headers, $output['headers']); - return $output['body']; } + + // remember the boundary used, in case we'd handle headers() call later + if (empty($boundary) && !empty($this->headers['Content-Type'])) { + if (preg_match('/boundary="([^"]+)/', $this->headers['Content-Type'], $m)) { + $this->build_params['boundary'] = $m[1]; + } + } + + return $filename ? null : $output['body']; + } + + /** + * Builds the main body MIME part for the email body. It will add a mixed part + * if attachments are found. If no attachments are found it will return an + * alternative part if several body texts are found (text, html, calendar), + * or a single part if only one body text is found. + * + * @return Mail_mimePart|null The corresponding part for the body or null. + * + * @see buildAlternativeParts + * @see buildHtmlParts + */ + protected function buildBodyPart() + { + $parts_count = count($this->parts); + $mixed_params = array('preamble' => $this->build_params['preamble']); + $message = null; + + if ($parts_count > 0) { + $message = $this->addMixedPart($mixed_params); + $this->buildAlternativeParts($message, null); + for ($i = 0; $i < $parts_count; $i++) { + $this->addAttachmentPart($message, $this->parts[$i]); + } + } else { + $message = $this->buildAlternativeParts(null, $mixed_params); + } + + return $message; + } + + /** + * Builds a single text, html, or calendar part only if one of them is found. + * If two or more parts are found, then an alternative part containing them is built. + * + * @param Mail_mimePart|null $parent_part The parent mime part to add + * the part or null + * @param array $mixed_params The needed params to create the + * part when no parent_part is + * received. + * + * @return null|object The main part built inside the method. It will be an + * alternative part or text, html, or calendar part. + * Null if no body texts are found. + */ + protected function buildAlternativeParts($parent_part, $mixed_params = null) + { + $html = strlen($this->htmlbody) > 0; + $calendar = strlen($this->calbody) > 0; + $has_text = strlen($this->txtbody) > 0; + $alternatives_count = $html + $calendar + $has_text; + + if ($alternatives_count > 1) { + $alt_part = $this->addAlternativePart($parent_part ?: $mixed_params); + } else { + $alt_part = null; + } + + $dest_part = $alt_part ?: $parent_part; + $part = null; + + if ($has_text) { + $part = $this->addTextPart($dest_part); + } + + if ($html) { + $part = $this->buildHtmlParts($dest_part); + } + + if ($calendar) { + $part = $this->addCalendarPart($dest_part); + } + + return $dest_part ?: $part; + } + + /** + * Builds html part as a single part or inside a related part with the html + * images thar were found. + * + * @param Mail_mimePart|null $parent_part The object to add the part to, + * or anything else if a new object + * is to be created. + * + * @return Mail_mimePart|null The created part or null if no htmlbody found. + */ + protected function buildHtmlParts($parent_part) + { + if (!strlen($this->htmlbody)) { + return null; + } + + $count_html_images = count($this->html_images); + + if ($count_html_images > 0) { + $part = $this->addRelatedPart($parent_part); + $this->addHtmlPart($part); + } else { + $part = $this->addHtmlPart($parent_part); + } + + for ($i = 0; $i < $count_html_images; $i++) { + $this->addHtmlImagePart($part, $this->html_images[$i]); + } + + return $part; } /** @@ -1076,14 +1060,6 @@ class Mail_mime // Add mime version header $headers['MIME-Version'] = '1.0'; - // Content-Type and Content-Transfer-Encoding headers should already - // be present if get() was called, but we'll re-set them to make sure - // we got them when called before get() or something in the message - // has been changed after get() [#14780] - if (!$skip_content) { - $headers += $this->contentHeaders(); - } - if (!empty($xtra_headers)) { $headers = array_merge($headers, $xtra_headers); } @@ -1094,6 +1070,14 @@ class Mail_mime $this->headers = array_merge($headers, $this->headers); } + // Always reset Content-Type/Content-Transfer-Encoding headers + // In case the message structure changed in meantime + unset($this->headers['Content-Type']); + unset($this->headers['Content-Transfer-Encoding']); + unset($this->headers['Content-Disposition']); + + $this->headers = array_merge($this->headers, $this->contentHeaders()); + $headers = $this->headers; if ($skip_content) { @@ -1104,8 +1088,7 @@ class Mail_mime $headers['Content-Type'] = $this->build_params['ctype']; } - $encodedHeaders = $this->encodeHeaders($headers); - return $encodedHeaders; + return $this->encodeHeaders($headers); } /** @@ -1366,49 +1349,44 @@ class Mail_mime */ protected function contentHeaders() { - $attachments = count($this->parts) > 0; - $html_images = count($this->html_images) > 0; - $html = strlen($this->htmlbody) > 0; - $calendar = strlen($this->calbody) > 0; - $has_text = strlen($this->txtbody) > 0; - $text = !$html && $has_text; - $headers = array(); + $attachments = count($this->parts) > 0; + $html_images = count($this->html_images) > 0; + $html = strlen($this->htmlbody) > 0; + $calendar = strlen($this->calbody) > 0; + $has_text = strlen($this->txtbody) > 0; + $has_alternatives = ($html + $calendar + $has_text) > 1; + $headers = array(); // See get() switch (true) { - case $calendar && !$attachments && !$html && !$has_text: - $headers['Content-Type'] = 'text/calendar'; + case $has_text && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'text/plain'; break; - case $calendar && !$attachments: - $headers['Content-Type'] = 'multipart/alternative'; + case $html && !$html_images && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'text/html'; break; - case $text && !$attachments: - $headers['Content-Type'] = 'text/plain'; + case $html && $html_images && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'multipart/related'; break; - case !$text && !$html && $attachments: - case $text && $attachments: - case $html && $attachments && !$html_images: - case $html && $attachments && $html_images: - $headers['Content-Type'] = 'multipart/mixed'; + case $calendar && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'text/calendar'; break; - case $html && !$attachments && !$html_images && $has_text: - case $html && !$attachments && $html_images && $has_text: + case $has_alternatives && !$attachments: $headers['Content-Type'] = 'multipart/alternative'; break; - case $html && !$attachments && !$html_images && !$has_text: - $headers['Content-Type'] = 'text/html'; - break; - - case $html && !$attachments && $html_images && !$has_text: - $headers['Content-Type'] = 'multipart/related'; + case $attachments: + $headers['Content-Type'] = 'multipart/mixed'; break; + } - default: + // Note: This is outside of the above switch construct to workaround + // opcache bug: https://bugzilla.opensuse.org/show_bug.cgi?id=1166235 + if (empty($headers)) { return $headers; } diff --git a/civicrm/packages/Mail/mimePart.php b/civicrm/vendor/pear/mail_mime/Mail/mimePart.php similarity index 93% rename from civicrm/packages/Mail/mimePart.php rename to civicrm/vendor/pear/mail_mime/Mail/mimePart.php index 187b1652daa83ef14efc3765e6e2e9603c3148bd..b66c840c450cc15c8fabe2abbf5ffd061107d0dc 100644 --- a/civicrm/packages/Mail/mimePart.php +++ b/civicrm/vendor/pear/mail_mime/Mail/mimePart.php @@ -145,27 +145,26 @@ class Mail_mimePart * * @param string $body The body of the mime part if any. * @param array $params An associative array of optional parameters: - * content_type - The content type for this part eg multipart/mixed - * encoding - The encoding to use, 7bit, 8bit, - * base64, or quoted-printable - * charset - Content character set - * cid - Content ID to apply - * disposition - Content disposition, inline or attachment - * filename - Filename parameter for content disposition - * description - Content description - * name_encoding - Encoding of the attachment name (Content-Type) - * By default filenames are encoded using RFC2231 - * Here you can set RFC2047 encoding (quoted-printable - * or base64) instead - * filename_encoding - Encoding of the attachment filename (Content-Disposition) - * See 'name_encoding' - * headers_charset - Charset of the headers e.g. filename, description. - * If not set, 'charset' will be used - * eol - End of line sequence. Default: "\r\n" - * headers - Hash array with additional part headers. Array keys - * can be in form of <header_name>:<parameter_name> - * body_file - Location of file with part's body (instead of $body) - * preamble - short text of multipart part preamble (RFC2046 5.1.1) + * - content_type: The content type for this part eg multipart/mixed + * - encoding: The encoding to use, 7bit, 8bit, base64, or quoted-printable + * - charset: Content character set + * - cid: Content ID to apply + * - disposition: Content disposition, inline or attachment + * - filename: Filename parameter for content disposition + * - description: Content description + * - name_encoding: Encoding of the attachment name (Content-Type) + * By default filenames are encoded using RFC2231 + * Here you can set RFC2047 encoding (quoted-printable + * or base64) instead + * - filename_encoding: Encoding of the attachment filename (Content-Disposition) + * See 'name_encoding' + * - headers_charset: Charset of the headers e.g. filename, description. + * If not set, 'charset' will be used + * - eol: End of line sequence. Default: "\r\n" + * - headers: Hash array with additional part headers. Array keys + * can be in form of <header_name>:<parameter_name> + * - body_file: Location of file with part's body (instead of $body) + * - preamble: short text of multipart part preamble (RFC2046 5.1.1) */ public function __construct($body = '', $params = array()) { @@ -340,12 +339,12 @@ class Mail_mimePart $encoded['body'] = $this->getEncodedData($this->body, $this->encoding); } else if ($this->body_file) { // Temporarily reset magic_quotes_runtime for file reads and writes - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } $body = $this->getEncodedDataFromFile($this->body_file, $this->encoding); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } if (is_a($body, 'PEAR_Error')) { @@ -392,8 +391,8 @@ class Mail_mimePart } // Temporarily reset magic_quotes_runtime for file reads and writes - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } $res = $this->encodePartToFile($fh, $boundary, $skip_head); @@ -402,8 +401,8 @@ class Mail_mimePart fclose($fh); } - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } return is_a($res, 'PEAR_Error') ? $res : $this->headers; @@ -773,7 +772,7 @@ class Mail_mimePart $add_len = strlen($prefix . $suffix) + strlen($name) + 6; $len = $add_len + strlen($value); - while ($len > $maxLength) { + while ($len > $maxLength) { // We can cut base64-encoded string every 4 characters $real_len = floor(($maxLength - $add_len) / 4) * 4; $_quote = substr($value, 0, $real_len); @@ -814,6 +813,27 @@ class Mail_mimePart return " {$name}=\"{$quoted}\""; } + /** + * Return charset for mbstring functions. + * Replace ISO-2022-JP with ISO-2022-JP-MS to convert Windows dependent + * characters. + * + * @param string $charset A original charset + * + * @return string A charset for mbstring + * @since 1.10.8 + */ + protected static function mbstringCharset($charset) + { + $mb_charset = $charset; + + if ($charset == 'ISO-2022-JP') { + $mb_charset = 'ISO-2022-JP-MS'; + } + + return $mb_charset; + } + /** * Encodes a header as per RFC2047 * @@ -856,6 +876,7 @@ class Mail_mimePart // exploding quoted strings as well as some regexes below do not // work properly with some charset e.g. ISO-2022-JP, we'll use UTF-8 $mb = $charset != 'UTF-8' && function_exists('mb_convert_encoding'); + $mb_charset = Mail_mimePart::mbstringCharset($charset); // Structured header (make sure addr-spec inside is not encoded) if (!empty($separator)) { @@ -863,7 +884,7 @@ class Mail_mimePart $email_regexp = '([^\s<]+|("[^\r\n"]+"))@\S+'; if ($mb) { - $value = mb_convert_encoding($value, 'UTF-8', $charset); + $value = mb_convert_encoding($value, 'UTF-8', $mb_charset); } $parts = Mail_mimePart::explodeQuotedString("[\t$separator]", $value); @@ -905,7 +926,7 @@ class Mail_mimePart $word = preg_replace('/\\\\([\\\\"])/', '$1', $word); } if ($mb) { - $word = mb_convert_encoding($word, $charset, 'UTF-8'); + $word = mb_convert_encoding($word, $mb_charset, 'UTF-8'); } // find length of last line @@ -929,7 +950,7 @@ class Mail_mimePart $value .= $word.' '.$address; } else { if ($mb) { - $part = mb_convert_encoding($part, $charset, 'UTF-8'); + $part = mb_convert_encoding($part, $mb_charset, 'UTF-8'); } // addr-spec not found, don't encode (?) $value .= $part; @@ -949,14 +970,14 @@ class Mail_mimePart if (preg_match('#([^\s\x21-\x7E]){1}#', $value)) { if ($value[0] == '"' && $value[strlen($value)-1] == '"') { if ($mb) { - $value = mb_convert_encoding($value, 'UTF-8', $charset); + $value = mb_convert_encoding($value, 'UTF-8', $mb_charset); } // de-quote quoted-string, encoding changes // string to atom $value = substr($value, 1, -1); $value = preg_replace('/\\\\([\\\\"])/', '$1', $value); if ($mb) { - $value = mb_convert_encoding($value, $charset, 'UTF-8'); + $value = mb_convert_encoding($value, $mb_charset, 'UTF-8'); } } @@ -1157,11 +1178,12 @@ class Mail_mimePart $prefix = '=?' . $charset . '?'.$encoding.'?'; $suffix = '?='; $maxLength = 75 - strlen($prefix . $suffix); + $mb_charset = Mail_mimePart::mbstringCharset($charset); // A multi-octet character may not be split across adjacent encoded-words // So, we'll loop over each character // mb_stlen() with wrong charset will generate a warning here and return null - $length = mb_strlen($str, $charset); + $length = mb_strlen($str, $mb_charset); $result = ''; $line_length = $prefix_len; @@ -1172,7 +1194,7 @@ class Mail_mimePart for ($i=1; $i<=$length; $i++) { // See #17311 - $chunk = mb_substr($str, $start, $i-$start, $charset); + $chunk = mb_substr($str, $start, $i-$start, $mb_charset); $chunk = base64_encode($chunk); $chunk_len = strlen($chunk); @@ -1202,7 +1224,7 @@ class Mail_mimePart $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/'; for ($i=0; $i<=$length; $i++) { - $char = mb_substr($str, $i, 1, $charset); + $char = mb_substr($str, $i, 1, $mb_charset); // RFC recommends underline (instead of =20) in place of the space // that's one of the reasons why we're not using iconv_mime_encode() if ($char == ' ') { diff --git a/civicrm/vendor/pear/mail_mime/PATCHES.txt b/civicrm/vendor/pear/mail_mime/PATCHES.txt new file mode 100644 index 0000000000000000000000000000000000000000..bb4c565889b5b6dd806769de9db2a381ec486d8c --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/PATCHES.txt @@ -0,0 +1,7 @@ +This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches) +Patches applied to this directory: + +Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821 +Source: https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch + + diff --git a/civicrm/vendor/pear/mail_mime/README b/civicrm/vendor/pear/mail_mime/README new file mode 100644 index 0000000000000000000000000000000000000000..d725a7f6b40e2ba7ecc8e63055b0c36383267a28 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/README @@ -0,0 +1,19 @@ +This package is http://pear.php.net/package/Mail_Mime and has been migrated from http://svn.php.net/repository/pear/packages/Mail_Mime + +Please report all new issues via the PEAR bug tracker. + +If this package is marked as unmaintained and you have fixes, please submit your pull requests and start discussion on the pear-qa mailing list. + +To test, run either +$ phpunit tests/ + or +$ pear run-tests -r + +To build, simply +$ pear package + +To install from scratch +$ pear install package.xml + +To upgrade +$ pear upgrade -f package.xml diff --git a/civicrm/vendor/pear/mail_mime/composer.json b/civicrm/vendor/pear/mail_mime/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..08498e564060b9f6d2bc5251b1b5a3b94e077905 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/composer.json @@ -0,0 +1,34 @@ +{ + "authors": [ + { + "email": "cipri@php.net", + "name": "Cipriano Groenendal", + "role": "Lead" + }, + { + "email": "alec@php.net", + "name": "Aleksander Machniak", + "role": "Lead" + } + ], + "autoload": { + "psr-0": { + "Mail": "./" + } + }, + "description": "Mail_Mime provides classes to create MIME messages", + "homepage": "http://pear.php.net/package/Mail_Mime", + "include-path": [ + "./" + ], + "license": "BSD-3-clause", + "name": "pear/mail_mime", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Mail_Mime", + "source": "https://github.com/pear/Mail_Mime" + }, + "type": "library", + "require": { + "pear/pear-core-minimal": "*" + } +} diff --git a/civicrm/vendor/phenx/php-font-lib/.travis.yml b/civicrm/vendor/phenx/php-font-lib/.travis.yml index 7eb1316ff128ad4edef9bddf5bf3a5de4784475d..a38c93e9fdb237425cb327a2b4f280e0741c74ea 100644 --- a/civicrm/vendor/phenx/php-font-lib/.travis.yml +++ b/civicrm/vendor/phenx/php-font-lib/.travis.yml @@ -5,15 +5,22 @@ env: - PREFER_LOWEST="" php: - - 5.4 - - 5.5 - 5.6 - 7.0 - - hhvm + - 7.1 + - 7.2 + - 7.3 + - 7.4 + - nightly matrix: + include: + - php: 5.4 + dist: trusty + - php: 5.5 + dist: trusty allow_failures: - - php: hhvm + - php: nightly fast_finish: true before_script: diff --git a/civicrm/vendor/phenx/php-font-lib/composer.json b/civicrm/vendor/phenx/php-font-lib/composer.json index 31f7e24729cb5bde9d2adf14ec9931d9bdb7a566..18cf0ca9642dd6c428a4d88ba8b978ce3df8dac5 100644 --- a/civicrm/vendor/phenx/php-font-lib/composer.json +++ b/civicrm/vendor/phenx/php-font-lib/composer.json @@ -19,6 +19,6 @@ "bin-dir": "bin" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" } } diff --git a/civicrm/vendor/phenx/php-font-lib/sample-fonts/NotoSansShavian-Regular.ttf b/civicrm/vendor/phenx/php-font-lib/sample-fonts/NotoSansShavian-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..29ebdb5fc2c77895ea77bb7697e462467177b1ea Binary files /dev/null and b/civicrm/vendor/phenx/php-font-lib/sample-fonts/NotoSansShavian-Regular.ttf differ diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php index a62daaa995b74e0da43a499a5384665f0f759f7f..a0e973bcbda5754c7ca278064e47edfa26550f10 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php @@ -139,7 +139,7 @@ class AdobeFontMetrics { $this->endSection("CharMetrics"); $kern = $font->getData("kern", "subtable"); - $tree = $kern["tree"]; + $tree = is_array($kern) ? $kern["tree"] : null; if (!$encoding && is_array($tree)) { $this->startSection("KernData"); diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php index 562f51ea93a73992939ed27bcbb74f424e39959c..7db77e1ae8d8943d06901aeb548071ce42834d21 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php @@ -35,6 +35,12 @@ class cmap extends Table { "rangeShift" => self::uint16, ); + private static $subtable_v12_format = array( + "length" => self::uint32, + "language" => self::uint32, + "ngroups" => self::uint32 + ); + protected function _parse() { $font = $this->getFont(); @@ -46,6 +52,7 @@ class cmap extends Table { for ($i = 0; $i < $data["numberSubtables"]; $i++) { $subtables[] = $font->unpack(self::$subtable_header_format); } + $data["subtables"] = $subtables; foreach ($data["subtables"] as $i => &$subtable) { @@ -53,67 +60,100 @@ class cmap extends Table { $subtable["format"] = $font->readUInt16(); - // @todo Only CMAP version 4 - if ($subtable["format"] != 4) { + // @todo Only CMAP version 4 and 12 + if (($subtable["format"] != 4) && ($subtable["format"] != 12)) { unset($data["subtables"][$i]); $data["numberSubtables"]--; continue; } - $subtable += $font->unpack(self::$subtable_v4_format); - $segCount = $subtable["segCountX2"] / 2; - $subtable["segCount"] = $segCount; + if ($subtable["format"] == 12) { - $endCode = $font->readUInt16Many($segCount); + $font->readUInt16(); - $font->readUInt16(); // reservedPad + $subtable += $font->unpack(self::$subtable_v12_format); - $startCode = $font->readUInt16Many($segCount); - $idDelta = $font->readInt16Many($segCount); + $glyphIndexArray = array(); + $endCodes = array(); + $startCodes = array(); - $ro_start = $font->pos(); - $idRangeOffset = $font->readUInt16Many($segCount); + for ($p = 0; $p < $subtable['ngroups']; $p++) { - $glyphIndexArray = array(); - for ($i = 0; $i < $segCount; $i++) { - $c1 = $startCode[$i]; - $c2 = $endCode[$i]; - $d = $idDelta[$i]; - $ro = $idRangeOffset[$i]; + $startCode = $startCodes[] = $font->readUInt32(); + $endCode = $endCodes[] = $font->readUInt32(); + $startGlyphCode = $font->readUInt32(); - if ($ro > 0) { - $font->seek($subtable["offset"] + 2 * $i + $ro); + for ($c = $startCode; $c <= $endCode; $c++) { + $glyphIndexArray[$c] = $startGlyphCode; + $startGlyphCode++; + } } - for ($c = $c1; $c <= $c2; $c++) { - if ($ro == 0) { - $gid = ($c + $d) & 0xFFFF; + $subtable += array( + "startCode" => $startCodes, + "endCode" => $endCodes, + "glyphIndexArray" => $glyphIndexArray, + ); + + } + else if ($subtable["format"] == 4) { + + $subtable += $font->unpack(self::$subtable_v4_format); + + $segCount = $subtable["segCountX2"] / 2; + $subtable["segCount"] = $segCount; + + $endCode = $font->readUInt16Many($segCount); + + $font->readUInt16(); // reservedPad + + $startCode = $font->readUInt16Many($segCount); + $idDelta = $font->readInt16Many($segCount); + + $ro_start = $font->pos(); + $idRangeOffset = $font->readUInt16Many($segCount); + + $glyphIndexArray = array(); + for ($i = 0; $i < $segCount; $i++) { + $c1 = $startCode[$i]; + $c2 = $endCode[$i]; + $d = $idDelta[$i]; + $ro = $idRangeOffset[$i]; + + if ($ro > 0) { + $font->seek($subtable["offset"] + 2 * $i + $ro); } - else { - $offset = ($c - $c1) * 2 + $ro; - $offset = $ro_start + 2 * $i + $offset; - $font->seek($offset); - $gid = $font->readUInt16(); + for ($c = $c1; $c <= $c2; $c++) { + if ($ro == 0) { + $gid = ($c + $d) & 0xFFFF; + } + else { + $offset = ($c - $c1) * 2 + $ro; + $offset = $ro_start + 2 * $i + $offset; + + $font->seek($offset); + $gid = $font->readUInt16(); - if ($gid != 0) { - $gid = ($gid + $d) & 0xFFFF; + if ($gid != 0) { + $gid = ($gid + $d) & 0xFFFF; + } } - } - if ($gid > 0) { - $glyphIndexArray[$c] = $gid; + if ($gid > 0) { + $glyphIndexArray[$c] = $gid; + } } } - } - $subtable += array( - "endCode" => $endCode, - "startCode" => $startCode, - "idDelta" => $idDelta, - "idRangeOffset" => $idRangeOffset, - "glyphIndexArray" => $glyphIndexArray, - ); + $subtable += array( + "endCode" => $endCode, + "startCode" => $startCode, + "idDelta" => $idDelta, + "idRangeOffset" => $idRangeOffset, + "glyphIndexArray" => $glyphIndexArray, + ); + } } $this->data = $data; diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php index 2458e20be3970fb5f85b2bbce94d3e07ca16d121..76e3307e8dbe3fd08770efd181177e1e906cda21 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php @@ -27,8 +27,10 @@ class hmtx extends Table { $data = array(); $metrics = $font->readUInt16Many($numOfLongHorMetrics * 2); for ($gid = 0, $mid = 0; $gid < $numOfLongHorMetrics; $gid++) { - $advanceWidth = $metrics[$mid++]; - $leftSideBearing = $metrics[$mid++]; + $advanceWidth = isset($metrics[$mid]) ? $metrics[$mid] : 0; + $mid += 1; + $leftSideBearing = isset($metrics[$mid]) ? $metrics[$mid] : 0; + $mid += 1; $data[$gid] = array($advanceWidth, $leftSideBearing); } diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php index f6397c31ec87c8141c25cc21b603b21ce7c133a5..cbc2a2004b1059b0fb676072af43a151fad45f70 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php @@ -32,7 +32,7 @@ class loca extends Table { $loc = unpack("n*", $d); for ($i = 0; $i <= $numGlyphs; $i++) { - $data[] = $loc[$i + 1] * 2; + $data[] = isset($loc[$i + 1]) ? $loc[$i + 1] * 2 : 0; } } @@ -43,7 +43,7 @@ class loca extends Table { $loc = unpack("N*", $d); for ($i = 0; $i <= $numGlyphs; $i++) { - $data[] = $loc[$i + 1]; + $data[] = isset($loc[$i + 1]) ? $loc[$i + 1] : 0; } } } diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php index b8a580afd21482cf23f420ebf15aa24ad63f6eb0..b61da0f2e17ffe206edd9adf003647463e0fa56f 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php @@ -305,7 +305,7 @@ class File extends BinaryStream { $class = "FontLib\\Table\\Type\\$name_canon"; - if (!isset($this->directory[$tag]) || !class_exists($class)) { + if (!isset($this->directory[$tag]) || !@class_exists($class)) { return; } } diff --git a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php index 17c68142eb74c91253922b8800bd65674890acf2..15742423deb1660ee829e34cd74c03b7f40e64b2 100644 --- a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php +++ b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php @@ -69,9 +69,34 @@ abstract class CSSBlockList extends CSSList { if ($sSpecificitySearch === null) { $aResult[] = $oSelector; } else { - $sComparison = "\$bRes = {$oSelector->getSpecificity()} $sSpecificitySearch;"; - eval($sComparison); - if ($bRes) { + $sComparator = '==='; + $aSpecificitySearch = explode(' ', $sSpecificitySearch); + $iTargetSpecificity = $aSpecificitySearch[0]; + if(count($aSpecificitySearch) > 1) { + $sComparator = $aSpecificitySearch[0]; + $iTargetSpecificity = $aSpecificitySearch[1]; + } + $iTargetSpecificity = (int)$iTargetSpecificity; + $iSelectorSpecificity = $oSelector->getSpecificity(); + $bMatches = false; + switch($sComparator) { + case '<=': + $bMatches = $iSelectorSpecificity <= $iTargetSpecificity; + break; + case '<': + $bMatches = $iSelectorSpecificity < $iTargetSpecificity; + break; + case '>=': + $bMatches = $iSelectorSpecificity >= $iTargetSpecificity; + break; + case '>': + $bMatches = $iSelectorSpecificity > $iTargetSpecificity; + break; + default: + $bMatches = $iSelectorSpecificity === $iTargetSpecificity; + break; + } + if ($bMatches) { $aResult[] = $oSelector; } } diff --git a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php index 873df755f7f0d8a3df4fd681d7547df43e6f7d85..1658aee8dbb033b525946309220afcf3a06b4c38 100644 --- a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php +++ b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php @@ -72,9 +72,6 @@ class Document extends CSSBlockList { * @example getSelectorsBySpecificity('>= 100') */ public function getSelectorsBySpecificity($sSpecificitySearch = null) { - if (is_numeric($sSpecificitySearch) || is_numeric($sSpecificitySearch[0])) { - $sSpecificitySearch = "== $sSpecificitySearch"; - } $aResult = array(); $this->allSelectors($aResult, $sSpecificitySearch); return $aResult; diff --git a/civicrm/xml/schema/Contact/RelationshipCache.xml b/civicrm/xml/schema/Contact/RelationshipCache.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd6c2c401a7d7cdbfd04a6ca146f8e85ba019e1b --- /dev/null +++ b/civicrm/xml/schema/Contact/RelationshipCache.xml @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> + +<table> + <base>CRM/Contact</base> + <class>RelationshipCache</class> + <name>civicrm_relationship_cache</name> + <comment>The cache permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the cache. Joins should begin on the near side and extract info from the far side.</comment> + <add>5.29</add> + <log>false</log> + <icon>fa-handshake-o</icon> + + <field> + <name>id</name> + <type>int unsigned</type> + <title>Relationship Cache ID</title> + <required>true</required> + <comment>Relationship Cache ID</comment> + <add>5.29</add> + </field> + <primaryKey> + <name>id</name> + <autoincrement>true</autoincrement> + </primaryKey> + + <field> + <name>relationship_id</name> + <type>int unsigned</type> + <title>Relationship</title> + <required>true</required> + <comment>id of the relationship (FK to civicrm_relationship.id)</comment> + <add>5.29</add> + </field> + <foreignKey> + <name>relationship_id</name> + <table>civicrm_relationship</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>relationship_type_id</name> + <type>int unsigned</type> + <title>Relationship Type</title> + <required>true</required> + <comment>id of the relationship type</comment> + <add>5.29</add> + </field> + <foreignKey> + <name>relationship_type_id</name> + <table>civicrm_relationship_type</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>orientation</name> + <type>char</type> + <length>3</length> + <title>Orientation (a_b or b_a)</title> + <required>true</required> + <pseudoconstant> + <callback>CRM_Core_SelectValues::relationshipOrientation</callback> + </pseudoconstant> + <comment>The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.</comment> + <add>5.29</add> + </field> + + <field> + <name>near_contact_id</name> + <type>int unsigned</type> + <title>Contact ID (Near side)</title> + <required>true</required> + <comment>id of the first contact</comment> + <add>5.29</add> + <html> + <type>EntityRef</type> + </html> + </field> + <foreignKey> + <name>near_contact_id</name> + <table>civicrm_contact</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>near_relation</name> + <type>varchar</type> + <title>Relationship Name (Near side)</title> + <length>64</length> + <comment>name for relationship of near_contact to far_contact.</comment> + <add>5.29</add> + <pseudoconstant> + <callback>CRM_Core_PseudoConstant::relationshipTypeOptions</callback> + </pseudoconstant> + </field> + + <field> + <name>far_contact_id</name> + <type>int unsigned</type> + <title>Contact ID (Far side)</title> + <required>true</required> + <comment>id of the second contact</comment> + <add>5.29</add> + <html> + <type>EntityRef</type> + </html> + </field> + <foreignKey> + <name>far_contact_id</name> + <table>civicrm_contact</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>far_relation</name> + <type>varchar</type> + <title>Relationship Name (Near side)</title> + <length>64</length> + <comment>name for relationship of far_contact to near_contact.</comment> + <add>5.29</add> + <pseudoconstant> + <callback>CRM_Core_PseudoConstant::relationshipTypeOptions</callback> + </pseudoconstant> + </field> + + <index> + <name>UI_relationship</name> + <fieldName>relationship_id</fieldName> + <fieldName>orientation</fieldName> + <unique>true</unique> + <add>5.29</add> + </index> + <index> + <!-- Ex: select ... from contact inner join relcache on contact.id=relcache.near_contact_id and near_relation = 'Parent of' --> + <name>index_nearid_nearrelation</name> + <fieldName>near_contact_id</fieldName> + <fieldName>near_relation</fieldName> + <add>5.29</add> + </index> + <index> + <!-- Ex: select ... from contact inner join relcache on contact.id=relcache.near_contact_id and far_relation = 'Child of' --> + <name>index_nearid_farrelation</name> + <fieldName>near_contact_id</fieldName> + <fieldName>far_relation</fieldName> + <add>5.29</add> + </index> + <index> + <!-- Ex: select relation, count(*) from relcache group by near_relation --> + <name>index_near_relation</name> + <fieldName>near_relation</fieldName> + <add>5.29</add> + </index> + + <!-- Passive mirror fields --> + + <field> + <name>is_active</name> + <type>boolean</type> + <title>Relationship Is Active</title> + <default>1</default> + <comment>is the relationship active ?</comment> + <add>5.29</add> + <html> + <type>CheckBox</type> + </html> + </field> + <field> + <name>start_date</name> + <uniqueName>relationship_start_date</uniqueName> + <type>date</type> + <title>Relationship Start Date</title> + <comment>date when the relationship started</comment> + <add>5.29</add> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> + </field> + <field> + <name>end_date</name> + <uniqueName>relationship_end_date</uniqueName> + <type>date</type> + <title>Relationship End Date</title> + <comment>date when the relationship ended</comment> + <add>5.29</add> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> + </field> +</table> diff --git a/civicrm/xml/schema/Contact/files.xml b/civicrm/xml/schema/Contact/files.xml index fd9cfb946ff271bc0190ea5afa3a71e0f7a8b4b5..7ffa2241cecccda936c5220bd5aa8d847235f1df 100644 --- a/civicrm/xml/schema/Contact/files.xml +++ b/civicrm/xml/schema/Contact/files.xml @@ -13,6 +13,7 @@ <xi:include href="GroupOrganization.xml" parse="xml" /> <xi:include href="Relationship.xml" parse="xml" /> <xi:include href="RelationshipType.xml" parse="xml" /> +<xi:include href="RelationshipCache.xml" parse="xml" /> <xi:include href="SavedSearch.xml" parse="xml" /> <xi:include href="ContactType.xml" parse="xml" /> diff --git a/civicrm/xml/schema/Event/Cart/Cart.xml b/civicrm/xml/schema/Event/Cart/Cart.xml index 35a96bfb3a9a681123a01b7c9a3d84a2d5df45d9..48c4ae3fd21c7544c3291e2818e248474322896e 100644 --- a/civicrm/xml/schema/Event/Cart/Cart.xml +++ b/civicrm/xml/schema/Event/Cart/Cart.xml @@ -3,6 +3,7 @@ <table> <base>CRM/Event/Cart</base> <class>Cart</class> + <useBao>1</useBao> <name>civicrm_event_carts</name> <field> <name>id</name> diff --git a/civicrm/xml/schema/Event/Cart/EventInCart.xml b/civicrm/xml/schema/Event/Cart/EventInCart.xml index 6fd487202d7dfa9b949c5df9ff52e735d5a91bd3..f8ac8d506b792f97e13c48a3be18e4967b59c67e 100644 --- a/civicrm/xml/schema/Event/Cart/EventInCart.xml +++ b/civicrm/xml/schema/Event/Cart/EventInCart.xml @@ -3,6 +3,7 @@ <table> <base>CRM/Event/Cart</base> <class>EventInCart</class> + <useBao>1</useBao> <name>civicrm_events_in_carts</name> <field> <name>id</name> diff --git a/civicrm/xml/templates/civicrm_country.tpl b/civicrm/xml/templates/civicrm_country.tpl index 49c4882e3585dfe221af001c20c3b3cd4a3e3de7..93dd53524984b5bb9fbcfc155dbcd1a5a4a7efa7 100644 --- a/civicrm/xml/templates/civicrm_country.tpl +++ b/civicrm/xml/templates/civicrm_country.tpl @@ -9,7 +9,7 @@ -- Generated from {$smarty.template} -- {$generated} -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; /******************************************************* * diff --git a/civicrm/xml/templates/civicrm_data.tpl b/civicrm/xml/templates/civicrm_data.tpl index bff3a755aca4c2246ca455c438a09df495629615..dc9967e4fec5e4a6463761017d15ee14bfcbb9c1 100644 --- a/civicrm/xml/templates/civicrm_data.tpl +++ b/civicrm/xml/templates/civicrm_data.tpl @@ -96,7 +96,7 @@ VALUES {ldelim}domain.address{rdelim}{/ts}',1,1), ('{ts escape="sql"}Subscribe Message{/ts}','Subscribe','{ts escape="sql"}Subscription Confirmation Request{/ts}','{ts escape="sql" 1=$subgroup 2=$suburl}You have a pending subscription to the %1 mailing list. To confirm this subscription, reply to this email or click <a href="%2">here</a>.{/ts}','{ts escape="sql" 1=$subgroup 2=$suburl}You have a pending subscription to the %1 mailing list. To confirm this subscription, reply to this email or click on this link: %2{/ts}',1,1), ('{ts escape="sql"}Welcome Message{/ts}','Welcome','{ts escape="sql"}Your Subscription has been Activated{/ts}','{ts escape="sql" 1=$welgroup}Welcome. Your subscription to the %1 mailing list has been activated.{/ts}','{ts escape="sql" 1=$welgroup}Welcome. Your subscription to the %1 mailing list has been activated.{/ts}',1,1), - ('{ts escape="sql"}Unsubscribe Message{/ts}','Unsubscribe','{ts escape="sql"}Un-subscribe Confirmation{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking <a href="%3">here</a>.{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}',1,1), + ('{ts escape="sql"}Unsubscribe Message{/ts}','Unsubscribe','{ts escape="sql"}Un-subscribe Confirmation{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking <a href="%3">here</a>.{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}',1,1), ('{ts escape="sql"}Resubscribe Message{/ts}','Resubscribe','{ts escape="sql"}Re-subscribe Confirmation{/ts}','{ts escape="sql" 1=$resubgroup 2=$actunsub 3=$actunsuburl}You have been re-subscribed to the following groups: %1. You can un-subscribe by mailing %2 or clicking <a href="%3">here</a>.{/ts}','{ts escape="sql" 1=$resubgroup 2=$actunsub 3=$actunsuburl}You have been re-subscribed to the following groups: %1. You can un-subscribe by mailing %2 or clicking %3{/ts}',1,1), ('{ts escape="sql"}Opt-out Message{/ts}','OptOut','{ts escape="sql"}Opt-out Confirmation{/ts}','{ts escape="sql" 1=$domname}Your email address has been removed from %1 mailing lists.{/ts}','{ts escape="sql" 1=$domname}Your email address has been removed from %1 mailing lists.{/ts}',1,1), ('{ts escape="sql"}Auto-responder{/ts}','Reply','{ts escape="sql"}Please Send Inquiries to Our Contact Email Address{/ts}','{ts escape="sql"}This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.{/ts}','{ts escape="sql"}This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.{/ts}',1,1); @@ -1158,7 +1158,6 @@ VALUES ('AuthNet', '{ts escape="sql"}Authorize.Net{/ts}', NULL,1,0,'{ts escape="sql"}API Login{/ts}','{ts escape="sql"}Payment Key{/ts}','{ts escape="sql"}MD5 Hash{/ts}',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1), ('PayJunction', '{ts escape="sql"}PayJunction{/ts}', NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1), ('eWAY', '{ts escape="sql"}eWAY (Single Currency){/ts}', NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0), - ('Payment_Express', '{ts escape="sql"}DPS Payment Express{/ts}', NULL,0,0,'User ID','Key','Mac Key - pxaccess only',NULL,'Payment_PaymentExpress','https://www.paymentexpress.com/pleaseenteraurl',NULL,NULL,NULL,'https://www.paymentexpress.com/pleaseenteratesturl',NULL,NULL,NULL,4,0), ('Dummy', '{ts escape="sql"}Dummy Payment Processor{/ts}',NULL,1,1,'{ts escape="sql"}User Name{/ts}',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1), ('Elavon', '{ts escape="sql"}Elavon Payment Processor{/ts}','{ts escape="sql"}Elavon / Nova Virtual Merchant{/ts}',0,0,'{ts escape="sql"}SSL Merchant ID {/ts}','{ts escape="sql"}SSL User ID{/ts}','{ts escape="sql"}SSL PIN{/ts}',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0), ('Realex', '{ts escape="sql"}Realex Payment{/ts}', NULL,0,0,'Merchant ID', 'Password', NULL, 'Account', 'Payment_Realex', 'https://epage.payandshop.com/epage.cgi', NULL, NULL, NULL, 'https://epage.payandshop.com/epage-remote.cgi', NULL, NULL, NULL, 1, 0), @@ -1781,3 +1780,4 @@ VALUES -- in the setup routine based on their tags & using the standard extension install api. -- do not try this at home folks. INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'sequentialcreditnotes', 'Sequential credit notes', 'Sequential credit notes', 'sequentialcreditnotes', 1); +INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'eventcart', 'Event cart', 'Event cart', 'eventcart', 1); diff --git a/civicrm/xml/templates/civicrm_state_province.tpl b/civicrm/xml/templates/civicrm_state_province.tpl index a51b0e0be809f3ec5be0cca43e120d312d77d1c7..614c34c071c8da26a18ffcb5b31dd0d586de9378 100644 --- a/civicrm/xml/templates/civicrm_state_province.tpl +++ b/civicrm/xml/templates/civicrm_state_province.tpl @@ -9,7 +9,7 @@ -- Generated from {$smarty.template} -- {$generated} -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (1000, 1228, "AL", "Alabama"), diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index 90be6845ed21a6f6bf274266fc43a9107e6a610b..1f477e75ac15145a92b093b3b47475abaa807c06 100644 --- a/civicrm/xml/version.xml +++ b/civicrm/xml/version.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="iso-8859-1" ?> <version> - <version_no>5.28.4</version_no> + <version_no>5.29.0</version_no> </version> diff --git a/wp-rest/Plugin.php b/wp-rest/Plugin.php index 3531e597e40aae1b9b58562263ca0fc122b06540..5fadffa29013357b5cc60d5f94dba556634845e2 100644 --- a/wp-rest/Plugin.php +++ b/wp-rest/Plugin.php @@ -352,7 +352,6 @@ class Plugin { $session = \CRM_Core_Session::singleton(); $session->set( 'ufID', $wp_user->ID ); $session->set( 'userID', $uf_match['contact_id'] ); - $session->set( 'ufUniqID', $uf_match['uf_name'] ); }