CRM-17991: Fix Safari JS bug in COntribution popups (affects softcredits, pledges).
$value = CRM_Utils_Array::value(key($value), $value);
}
if (strpos($id, '_date_low') !== FALSE || strpos($id, '_date_high') !== FALSE) {
- $result[$id] = date($dateFormat, strtotime($value));
$entityName = strstr($id, '_date', TRUE);
- $result["{$entityName}_date_relative"] = 0;
+ if (!empty($result['relative_dates']) && array_key_exists($entityName, $result['relative_dates'])) {
+ $result["{$entityName}_date_relative"] = $result['relative_dates'][$entityName];
+ }
+ else {
+ $result[$id] = date($dateFormat, strtotime($value));
+ $result["{$entityName}_date_relative"] = 0;
+ }
}
else {
$result[$id] = $value;
}
}
+ /**
+ * Store relative dates in separate array format
+ *
+ * @param array $queryParams
+ * @param array $formValues
+ */
+ public static function saveRelativeDates(&$queryParams, $formValues) {
+ $relativeDates = array('relative_dates' => array());
+ foreach ($formValues as $id => $value) {
+ if (preg_match('/_date_relative$/', $id) && !empty($value)) {
+ $entityName = strstr($id, '_date', TRUE);
+ $relativeDates['relative_dates'][$entityName] = $value;
+ }
+ }
+ // merge with original queryParams if relative date value(s) found
+ if (count($relativeDates['relative_dates'])) {
+ $queryParams = array_merge($queryParams, $relativeDates);
+ }
+ }
+
}
// Ideally per CRM-17075 we will use entity reference fields heavily in the form layer & convert to the
// sql operator syntax at the query layer.
if (!$isSearchBuilder) {
+ CRM_Contact_BAO_SavedSearch::saveRelativeDates($queryParams, $formValues);
$savedSearch->form_values = serialize($queryParams);
}
else {
// run the import
$importJob->runImport($this);
- // update cache after we done with runImport
- if (!CRM_Core_Permission::check('view all contacts')) {
- CRM_ACL_BAO_Cache::updateEntry($userID);
- }
-
- // clear all caches
+ // Clear all caches, forcing any searches to recheck the ACLs or group membership as the import
+ // may have changed it.
CRM_Contact_BAO_Contact_Utils::clearContactCaches();
// add all the necessary variables to the form
public static function del($params) {
//delete from contribution soft table
$contributionSoft = new CRM_Contribute_DAO_ContributionSoft();
+ $contributionSoft->id = $params['id'];
+ if (!$contributionSoft->find()) {
+ return FALSE;
+ }
+ unset($params['id']);
foreach ($params as $column => $value) {
$contributionSoft->$column = $value;
}
$contributionSoft->delete();
+ return TRUE;
}
/**
public static function deleteDashlet($dashletID) {
$dashlet = new CRM_Core_DAO_Dashboard();
$dashlet->id = $dashletID;
+ if (!$dashlet->find(TRUE)) {
+ return FALSE;
+ }
$dashlet->delete();
return TRUE;
}
public static function del($optionValueId) {
$optionValue = new CRM_Core_DAO_OptionValue();
$optionValue->id = $optionValueId;
+ if (!$optionValue->find()) {
+ return FALSE;
+ }
if (self::updateRecords($optionValueId, CRM_Core_Action::DELETE)) {
CRM_Core_PseudoConstant::flush();
- return $optionValue->delete();
+ $optionValue->delete();
+ return TRUE;
}
return FALSE;
}
// drop old indices
if (isset($indices[$table])) {
foreach ($indices[$table] as $index) {
- $queries[] = "DROP INDEX {$index['name']} ON {$table}";
+ if (CRM_Core_BAO_SchemaHandler::checkIfIndexExists($table, $index['name'])) {
+ $queries[] = "DROP INDEX {$index['name']} ON {$table}";
+ }
}
}
// deal with columns
foreach ($hash as $column => $type) {
$queries[] = "ALTER TABLE {$table} ADD {$column}_{$locale} {$type}";
- $queries[] = "UPDATE {$table} SET {$column}_{$locale} = {$column}";
- $queries[] = "ALTER TABLE {$table} DROP {$column}";
+ if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists($table, $column)) {
+ $queries[] = "UPDATE {$table} SET {$column}_{$locale} = {$column}";
+ $queries[] = "ALTER TABLE {$table} DROP {$column}";
+ }
}
// add view
'version' => 3,
'id' => $dao->entity_id,
);
- $result = civicrm_api($dao->entity_type, 'delete', $params);
- if ($result['is_error']) {
- $this->onApiError($dao->entity_type, 'delete', $params, $result);
- }
+ $check = civicrm_api3($dao->entity_type, 'get', $params);
+ if ((bool) $check['count']) {
+ $result = civicrm_api($dao->entity_type, 'delete', $params);
+ if ($result['is_error']) {
+ $this->onApiError($dao->entity_type, 'delete', $params, $result);
+ }
- CRM_Core_DAO::executeQuery('DELETE FROM civicrm_managed WHERE id = %1', array(
- 1 => array($dao->id, 'Integer'),
- ));
+ CRM_Core_DAO::executeQuery('DELETE FROM civicrm_managed WHERE id = %1', array(
+ 1 => array($dao->id, 'Integer'),
+ ));
+ }
}
}
* @return \CRM_Event_DAO_Participant
*/
public static function deleteParticipant($id) {
+ $participant = new CRM_Event_DAO_Participant();
+ $participant->id = $id;
+ if (!$participant->find()) {
+ return FALSE;
+ }
CRM_Utils_Hook::pre('delete', 'Participant', $id, CRM_Core_DAO::$_nullArray);
$transaction = new CRM_Core_Transaction();
CRM_Core_BAO_Note::del($noteId, FALSE);
}
- $participant = new CRM_Event_DAO_Participant();
- $participant->id = $id;
$participant->delete();
$transaction->commit();
$dao = new CRM_Event_DAO_ParticipantStatusType();
$dao->id = $id;
- $dao->find(TRUE);
+ if (!$dao->find()) {
+ return FALSE;
+ }
$dao->delete();
return TRUE;
}
if (!empty($cols[$alterType])) {
foreach ($cols[$alterType] as $col) {
$line = $this->_getColumnQuery($col, $create);
- CRM_Core_DAO::executeQuery("ALTER TABLE `{$this->db}`.log_$table {$alterType} {$line}");
+ CRM_Core_DAO::executeQuery("ALTER TABLE `{$this->db}`.log_$table {$alterType} {$line}", array(), TRUE, NULL, FALSE, FALSE);
}
}
}
foreach ($cols['OBSOLETE'] as $col) {
$line = $this->_getColumnQuery($col, $create);
// This is just going to make a not null column to nullable
- CRM_Core_DAO::executeQuery("ALTER TABLE `{$this->db}`.log_$table MODIFY {$line}");
+ CRM_Core_DAO::executeQuery("ALTER TABLE `{$this->db}`.log_$table MODIFY {$line}", array(), TRUE, NULL, FALSE, FALSE);
}
}
* @return array
*/
private function _getCreateQuery($table) {
- $dao = CRM_Core_DAO::executeQuery("SHOW CREATE TABLE {$table}");
+ $dao = CRM_Core_DAO::executeQuery("SHOW CREATE TABLE {$table}", array(), TRUE, NULL, FALSE, FALSE);
$dao->fetch();
$create = explode("\n", $dao->Create_Table);
return $create;
//delete from membership Type table
$membershipStatus = new CRM_Member_DAO_MembershipStatus();
$membershipStatus->id = $membershipStatusId;
+ if (!$membershipStatus->find()) {
+ throw new CRM_Core_Exception(ts('Cannot delete membership status ' . $membershipStatusId));
+ }
$membershipStatus->delete();
CRM_Member_PseudoConstant::flush('membershipStatus');
$membershipStatus->free();
// make everything absolute from the baseFilePath
$basePath = ($basePath === NULL) ? self::baseFilePath() : $basePath;
+ // ensure that $basePath has a trailing slash
+ $basePath = self::addTrailingSlash($basePath);
return $basePath . $directory;
}
ng-model="mailing.recipients.groups.base[0]"
ng-required="true"
>
- <option ng-repeat="grp in crmMailingConst.groupNames | orderBy:'title'" value="{{grp.id}}">{{grp.title}}</option>
+ <option ng-repeat="grp in crmMailingConst.groupNames | filter:{is_hidden:0} | orderBy:'title'" value="{{grp.id}}">{{grp.title}}</option>
</select>
</div>
</span>
* @deprecated use OptionValue api
*/
function civicrm_api3_activity_type_delete($params) {
- return civicrm_api3_create_success(CRM_Core_BAO_OptionValue::del($params['id']), $params);
+ $result = CRM_Core_BAO_OptionValue::del($params['id']);
+ if ($result) {
+ return civicrm_api3_create_success(TRUE, $params);
+ }
+ throw new API_Exception("Failure to delete activity type id {$params['id']}");
}
*/
function civicrm_api3_contribution_soft_delete($params) {
// Non standard BAO - we have to write custom code to cope.
- CRM_Contribute_BAO_ContributionSoft::del(array('id' => $params['id']));
-
+ $result = CRM_Contribute_BAO_ContributionSoft::del(array('id' => $params['id']));
+ if (!$result) {
+ throw new API_Exception('Cannot delete contributionSoft ' . $params['id']);
+ }
+ civicrm_api3_create_success(TRUE);
}
/**
return civicrm_api3_create_success(1, $params, 'Dashboard', 'delete');
}
else {
- return civicrm_api3_create_error('Could not delete dashlet');
+ throw new API_Exception('Could not delete dashlet');
}
}
* API result array
*/
function civicrm_api3_group_delete($params) {
-
+ $group = civicrm_api3_group_get(array('id' => $params['id']));
+ if ($group['count'] == 0) {
+ throw new API_Exception('Could not delete group ' . $params['id']);
+ }
CRM_Contact_BAO_Group::discard($params['id']);
return civicrm_api3_create_success(TRUE);
}
* @deprecated
*/
function civicrm_api3_group_contact_delete($params) {
+ $groupContact = civicrm_api3('GroupContact', 'get', $params);
+ if ($groupContact['count'] == 0) {
+ throw new API_Exception('Cannot Delete GroupContact');
+ }
$params['status'] = CRM_Utils_Array::value('status', $params, empty($params['skip_undelete']) ? 'Removed' : 'Deleted');
// "Deleted" isn't a real option so skip the api wrapper to avoid pseudoconstant validation
return civicrm_api3_group_contact_create($params);
function civicrm_api3_job_group_rebuild($params) {
$lock = Civi::lockManager()->acquire('worker.core.GroupRebuild');
if (!$lock->isAcquired()) {
- throw new API_Exception('Could not acquire lock, another EmailProcessor process is running');
+ throw new API_Exception('Could not acquire lock, another GroupRebuild process is running');
}
$limit = CRM_Utils_Array::value('limit', $params, 0);
function civicrm_api3_membership_status_delete($params) {
$memberStatusDelete = CRM_Member_BAO_MembershipStatus::del($params['id'], TRUE);
- return $memberStatusDelete ? civicrm_api3_create_error($memberStatusDelete['error_message']) : civicrm_api3_create_success();
+ if ($memberStatusDelete) {
+ throw new API_Exception($memberStatusDelete['error_message']);
+ }
+ return civicrm_api3_create_success();
}
/**
function civicrm_api3_option_value_delete($params) {
// We will get the option group id before deleting so we can flush pseudoconstants.
$optionGroupID = civicrm_api('option_value', 'getvalue', array('version' => 3, 'id' => $params['id'], 'return' => 'option_group_id'));
- if (CRM_Core_BAO_OptionValue::del((int) $params['id'])) {
+ $result = CRM_Core_BAO_OptionValue::del($params['id']);
+ if ($result) {
civicrm_api('option_value', 'getfields', array('version' => 3, 'cache_clear' => 1, 'option_group_id' => $optionGroupID));
return civicrm_api3_create_success();
}
else {
- civicrm_api3_create_error('Could not delete OptionValue ' . $params['id']);
+ throw new API_Exception('Could not delete OptionValue ' . $params['id']);
}
}
return civicrm_api3_create_success(TRUE);
}
- return civicrm_api3_create_error(TRUE);
+ throw new API_Exception('Could not delete participant status type id ' . $params['id']);
}
* @return array
*/
function civicrm_api3_system_log_delete($params) {
- return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, TRUE, 'SystemLog');
+ return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
}
/**
_civicrm_api3_check_edit_permissions($bao_name, array('id' => $params['id']));
$args = array(&$params['id']);
if (method_exists($bao_name, 'del')) {
- $bao = call_user_func_array(array($bao_name, 'del'), $args);
- if ($bao !== FALSE) {
- return civicrm_api3_create_success(TRUE);
+ $dao = new $bao_name();
+ $dao->id = $params['id'];
+ if ($dao->find()) {
+ $bao = call_user_func_array(array($bao_name, 'del'), $args);
+ if ($bao !== FALSE) {
+ return civicrm_api3_create_success();
+ }
+ throw new API_Exception('Could not delete entity id ' . $params['id']);
}
throw new API_Exception('Could not delete entity id ' . $params['id']);
}
float: left;
margin: 0;
/* padding-bottom and min-height make sure that there is always a sizable drop zone. */
- min-height: 400px;
- height: 400px;
- height: auto !important;
- padding: 0 0 250px;
+ min-height: 200px;
+ padding: 0 0 40px;
list-style-type: none;
}
{/if}
{if $contributionMode}
<div class="help">
- {if $contactId}
- {ts 1=$displayName 2=$contributionMode|upper}Use this form to {if $payNow} edit {else} submit a new {/if} contribution on behalf of %1. <strong>A
- %2 transaction will be submitted</strong> using the selected payment processor.{/ts}
+ {if $contactId && $payNow}
+ {ts 1=$displayName 2=$contributionMode|upper}Use this form to edit a contribution on behalf of %1. <strong>A
+ %2 transaction will be submitted</strong> using the selected payment processor.{/ts}
+ {elseif $contactId}
+ {ts 1=$displayName 2=$contributionMode|upper}Use this form to submit a new contribution on behalf of %1. <strong>A
+ %2 transaction will be submitted</strong> using the selected payment processor.{/ts}
{else}
{ts 1=$displayName 2=$contributionMode|upper}Use this form to submit a new contribution. <strong>A %2 transaction will be submitted</strong> using the selected payment processor.{/ts}
{/if}
--- /dev/null
+{"org.civicrm.module.cividiscount":"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<extension key=\"org.civicrm.module.cividiscount\" type=\"module\">\n <file>cividiscount<\/file>\n <name>CiviDiscount<\/name>\n <description>Enables discount codes and automatic discounts for events and memberships.<\/description>\n <urls>\n <url desc=\"Main Extension Page\">\n http:\/\/civicrm.org\/extension\/cividiscount-extension\n <\/url>\n <url desc=\"Documentation\">\n https:\/\/github.com\/dlobo\/org.civicrm.module.cividiscount\/\n <\/url>\n <url desc=\"Support\">http:\/\/civicrm.stackexchange.com<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>CiviCRM LLC<\/author>\n <email>info@civicrm.org<\/email>\n <\/maintainer>\n <releaseDate>2016-03-04<\/releaseDate>\n <version>3.2<\/version>\n <compatibility>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>\n For support, please contact the team on the forums. (http:\/\/forum.civicrm.org)\n <\/comments>\n <civix>\n <namespace>CRM\/CiviDiscount<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/dlobo\/org.civicrm.module.cividiscount\/archive\/3.2.zip<\/downloadUrl><develStage>stable<\/develStage><\/extension>\n","nz.co.fuzion.extendedreport":"<?xml version=\"1.0\"?>\n<extension key=\"nz.co.fuzion.extendedreport\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.extendedreport\/archive\/2.4.zip<\/downloadUrl>\n <file>extendedreport<\/file>\n <name>ExtendedReport<\/name>\n <description>Extended reports<\/description>\n <license>AGPL<\/license>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/civicrm.org<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <maintainer>\n <author>Eileen McNaughton<\/author>\n <email>eileen@fuzion.co.nz<\/email>\n <\/maintainer>\n <releaseDate>2016-07-25<\/releaseDate>\n <version>2.4<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>Extended reports create other report options such as crosstab urls, multiple contact custom fields, price\n set reports\n <\/comments>\n <civix>\n <namespace>CRM\/Extendedreport<\/namespace>\n <\/civix>\n<\/extension>\n","ca.bidon.reporterror":"<?xml version=\"1.0\"?>\n<extension key=\"ca.bidon.reporterror\" type=\"module\">\n <file>reporterror<\/file>\n <name>CiviCRM Report Error<\/name>\n <description>Advanced error handler for CiviCRM that sends an e-mail with detailed information when fatal errors are encountered.<\/description>\n <license>AGPL 3<\/license>\n <maintainer>\n <author>Mathieu Lutfy<\/author>\n <email>mathieu@bidon.ca<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/mlutfy\/ca.bidon.reporterror<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/mlutfy\/ca.bidon.reporterror\/blob\/master\/README.md<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org\/index.php\/board,57.0.html<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <releaseDate>2016-03-06<\/releaseDate>\n <version>2.9<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.2<\/ver>\n <ver>4.3<\/ver>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/ReportError<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/mlutfy\/ca.bidon.reporterror\/archive\/2.9.zip<\/downloadUrl><\/extension>\n","org.civicrm.multisite":"<?xml version=\"1.0\"?>\n<extension key=\"org.civicrm.multisite\" type=\"module\">\n <file>multisite<\/file>\n <name>CiviCRM Multisite<\/name>\n <description>Multisite permissioning for CiviCRM<\/description>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/wiki.civicrm.org\/confluence\/pages\/viewpage.action?pageId=86213708<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org\/index.php\/board,51.0.html<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <license>AGPL<\/license>\n <maintainer>\n <author>CiviCRM LLC<\/author>\n <email>info@civicrm.org<\/email>\n <\/maintainer>\n <releaseDate>2016-07-25<\/releaseDate>\n <version>2.5<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This is a port of the CiviCRM multisite module to an extension. You will need to review the changes in this version<\/comments>\n <civix>\n <namespace>CRM\/Multisite<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/eileenmcnaughton\/org.civicrm.multisite\/archive\/2.5.zip<\/downloadUrl><\/extension>\n","org.civicrm.sms.twilio":"<?xml version=\"1.0\"?>\n<extension key=\"org.civicrm.sms.twilio\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/civicrm\/org.civicrm.sms.twilio\/archive\/1.1.1.zip<\/downloadUrl>\n <file>twilio<\/file>\n <name>twilio<\/name>\n <description>Twilio integration allows delivering short message service (SMS) messages through its Twilio Gateway to mobile phone users.<\/description>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/civicrm.org<\/url>\n <url desc=\"Documentation\">http:\/\/wiki.civicrm.org\/confluence\/display\/CRMDOC\/Setting+up+a+SMS+Provider+for+CiviSMS<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <license>AGPL<\/license>\n <maintainer>\n <author>Community Contributed<\/author>\n <email>info@civicrm.org<\/email>\n <\/maintainer>\n <releaseDate>2016-06-24<\/releaseDate>\n <version>1.1.1<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>For support, please contact project team on the forums.<\/comments>\n<\/extension>\n","com.webaccessglobal.module.civimobile":"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<extension key=\"com.webaccessglobal.module.civimobile\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/webaccess\/com.webaccessglobal.module.civimobile\/archive\/2.0.zip<\/downloadUrl>\n <file>civimobile<\/file>\n <name>CiviMobile<\/name>\n <description>Mobile interface for CiviCRM<\/description>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/civicrm.org\/extensions\/civimobile<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/webaccess\/com.webaccessglobal.module.civimobile<\/url>\n <url desc=\"Support\">https:\/\/github.com\/webaccess\/com.webaccessglobal.module.civimobile\/issues<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Web Access<\/author>\n <email>info@webaccessglobal.com<\/email>\n <\/maintainer>\n <releaseDate>2016-04-12<\/releaseDate>\n <version>2.0<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>For support, please contact the team on github. (https:\/\/github.com\/webaccess\/com.webaccessglobal.module.civimobile\/issues)<\/comments>\n<\/extension>\n","net.ourpowerbase.sumfields":"<?xml version=\"1.0\"?>\n<extension key=\"net.ourpowerbase.sumfields\" type=\"module\">\n <file>sumfields<\/file>\n <name>Summary Fields<\/name>\n <description>The Summary Fields extension creates read-only custom data fields that extend Contact and are automatically populated with up-to-date totals such as total lifetime contributions, last contribution amount, last attended event, etc.<\/description>\n <license>GPL version 3<\/license>\n <maintainer>\n <author>Jamie McClelland\/Progressive Technology Project<\/author>\n <email>jamie@progressivetech.org<\/email>\n <\/maintainer>\n <releaseDate>2016-07-27<\/releaseDate>\n <version>2.0.6<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This extension adds custom data fields and triggers to your database. Disabling this extension will cause the custom data fields to be deleted and triggers removed.<\/comments>\n <civix>\n <namespace>CRM\/Sumfields<\/namespace>\n <\/civix>\n <urls>\n <url description=\"Main Extension Page\">https:\/\/github.com\/progressivetech\/net.ourpowerbase.sumfields<\/url>\n <url description=\"Documentation\">https:\/\/github.com\/progressivetech\/net.ourpowerbase.sumfields<\/url>\n <\/urls>\n<downloadUrl>https:\/\/github.com\/progressivetech\/net.ourpowerbase.sumfields\/archive\/v2.0.6.zip<\/downloadUrl><\/extension>\n","uk.co.compucorp.civicrm.booking":"<?xml version=\"1.0\"?>\n<extension key=\"uk.co.compucorp.civicrm.booking\" type=\"module\">\n <file>booking<\/file>\n <name>CiviBooking<\/name>\n <description>A CMS independent extension to allow organisations to manage a group of resources (i.e. rooms) offering these to constituents for a fee.<\/description>\n <license>the GNU Affero General Public License 3 (GNU AGPL 3) and the CiviCRM Licensing Exception.<\/license>\n <maintainer>\n <author>Erawat Chamanont, Jamie Novick, Guanhuan Chen<\/author>\n <email>jamie@compucorpc.o.uk, guanhuan@compucorp.co.uk<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/civicrm.org\/extensions\/civibooking<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/compucorp\/civibooking<\/url>\n <url desc=\"Support\">support@compucorp.co.uk<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <documentation\/>\n <releaseDate>2016-07-25<\/releaseDate>\n <version>1.5<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/Booking<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/compucorp\/civibooking\/archive\/v1.5.zip<\/downloadUrl><\/extension>\n","org.civicrm.volunteer":"<?xml version=\"1.0\"?>\n<extension key=\"org.civicrm.volunteer\" type=\"module\">\n <file>volunteer<\/file>\n <name>CiviVolunteer<\/name>\n <description>The CiviVolunteer extension provides tools for signing up, managing, and tracking volunteers.<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Ginkgo Street Labs; CiviCRM, LLC; and the CiviCRM community<\/author>\n <email>inquire@ginkgostreet.com<\/email>\n <\/maintainer>\n <releaseDate>2016-08-10<\/releaseDate>\n <version>4.6-2.1.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>\n Developed by Ginkgo Street Labs and CiviCRM, LLC with contributions from the community. Special thanks to Friends of Georgia State Parks & Historic Sites for funding the initial release, and to The Manhattan Neighborhood Network for funding the 1.4 release.\n <\/comments>\n <civix>\n <namespace>CRM\/Volunteer<\/namespace>\n <\/civix>\n <urls>\n <url desc=\"Documentation\">http:\/\/civicrm.github.io\/org.civicrm.volunteer\/docs<\/url>\n <\/urls>\n<downloadUrl>https:\/\/github.com\/civicrm\/org.civicrm.volunteer\/archive\/v4.6-2.1.2.zip<\/downloadUrl><\/extension>\n","nz.co.fuzion.csvimport":"<?xml version=\"1.0\"?>\n<extension key=\"nz.co.fuzion.csvimport\" type=\"module\">\n <file>csvimport<\/file>\n <name>CSV GUI Import to api<\/name>\n <description>Simply makes gui import available to api<\/description>\n <license>AGPL<\/license>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.csvimport\/blob\/master\/README<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.csvimport\/blob\/master\/README<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <maintainer>\n <author>Eileen<\/author>\n <email>eileen@fuzion.co.nz<\/email>\n <\/maintainer>\n <releaseDate>2016-06-11<\/releaseDate>\n <version>1.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This is module which adds a UI to api create actions. There are no plans to provide free support for it<\/comments>\n <civix>\n <namespace>CRM\/Csvimport<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.csvimport\/archive\/1.2.zip<\/downloadUrl><\/extension>\n","com.chrischinchilla.ewayrecurring":"<?xml version=\"1.0\"?>\n<extension key=\"com.chrischinchilla.ewayrecurring\" type=\"module\">\n <file>ewayrecurring<\/file>\n <name>eWay Recurring<\/name>\n <description>Recurring payments payment processor for eWay<\/description>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/civicrm.org<\/url>\n <url desc=\"Documentation\">http:\/\/civicrm.org<\/url>\n <url desc=\"Support\">http:\/\/civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org<\/url>\n <\/urls>\n <license>AGPL<\/license>\n <maintainer>\n <author>Melbourne CiviCRM<\/author>\n <email>noreply@civicrm.org<\/email>\n <\/maintainer>\n <releaseDate>2016-09-04<\/releaseDate>\n <version>1.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/Ewayrecurring<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/ChrisChinchilla\/CiviCRM-eWay-recurring-payment-processor\/archive\/1.2.zip<\/downloadUrl><\/extension>\n","nz.co.fuzion.entitysetting":"<?xml version=\"1.0\"?>\n<extension key=\"nz.co.fuzion.entitysetting\" type=\"module\">\n <file>entitysetting<\/file>\n <name>Entity Settings Helper Extension<\/name>\n <description>This module provides a mechanism for managing settings associated with CiviCRM entities without a table per setting<\/description>\n <license>AGPL<\/license>\n <maintainer>\n <author>Eileen<\/author>\n <email>eileen@fuzion.co.nz<\/email>\n <\/maintainer>\n <releaseDate>2016-06-17<\/releaseDate>\n <urls>\n <url desc=\"Main Extension Page\">http:\/\/civicrm.org<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.entitysetting\/blob\/master\/README.md<\/url>\n <\/urls>\n <version>1.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.2<\/ver>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This extension is provided to be a 'soft' dependency for other extension. It does not provide functionality itself<\/comments>\n <civix>\n <namespace>CRM\/Entitysetting<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.entitysetting\/archive\/1.2.zip<\/downloadUrl><\/extension>\n","biz.jmaconsulting.grantapplications":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<extension key=\"biz.jmaconsulting.grantapplications\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.grantapplications\/archive\/v1.5.zip<\/downloadUrl>\n <file>grantapplications<\/file>\n <name>Grant Applications<\/name>\n <description>This extension enhances profile creation for Grants. Applicants can submit online grant applications after filling in fields that are configured through CiviProfile. Core and custom grant fields can be added to CiviProfiles to collect information about various applicants that will be applying online for grants. Online grant application pages can be created and managed from the grant dashboard.<\/description>\n <urls>\n <url desc=\"Support\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.grantapplications\/issues?state=open<\/url>\n <url desc=\"Main Extension Page\">\n https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.grantapplications\/wiki\/About-grant-applications\n <\/url>\n <url desc=\"Installation Instructions for 1.5\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.grantapplications\/blob\/4.7\/README.md<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>JMA Consulting<\/author>\n <email>joe.murray@jmaconsulting.biz<\/email>\n <\/maintainer>\n <releaseDate>2016-03-30<\/releaseDate>\n <version>1.5<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/Grantapplications<\/namespace>\n <\/civix>\n<\/extension>\n","biz.jmaconsulting.ode":"<?xml version=\"1.0\"?>\n<extension key=\"biz.jmaconsulting.ode\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.ode\/archive\/v1.4.zip<\/downloadUrl>\n <file>ode<\/file>\n <name>Outbound Domain Enforcement<\/name>\n <description>This CiviCRM extension is designed to preserve the email reputation of your server and its IP by ensuring that all outbound emailis sent from an address with the same domain as the System-generated Mail Settings From Email Address configured at Administer > Communications > Organization Address and Contact Info.<\/description>\n <urls>\n <url desc=\"Support\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.ode\/issues?state=open<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.ode\/blob\/master\/README.md<\/url>\n <url desc=\"Installation Instructions for 1.4\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.ode\/blob\/master\/README.md<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <license>AGPL 3.0<\/license>\n <maintainer>\n <author>JMA Consulting<\/author>\n <email>joe.murray@jmaconsulting.biz<\/email>\n <\/maintainer>\n <releaseDate>2016-04-04<\/releaseDate>\n <version>1.4<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>Thanks to Brescia University College for sponsoring the development of this module.<\/comments>\n <civix>\n <namespace>CRM\/Ode<\/namespace>\n <\/civix>\n<\/extension>\n","biz.jmaconsulting.olarkchat":"<?xml version=\"1.0\"?>\n<extension key=\"biz.jmaconsulting.olarkchat\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.olarkchat\/archive\/1.3.zip<\/downloadUrl>\n <file>olarkchat<\/file>\n <name>Olark Chat Integration<\/name>\n <description>Olark is a chat service that enables web site visitors to chat with staff of an organization. It has a good set of features for services in this space (http:\/\/www.olark.com\/features). This extension integrates the service with CiviCRM by posting chat transcripts as CiviCRM activities attached to the visitor's existing or newly created contact record and assigned to the relevant staff person's record.<\/description>\n <urls>\n <url desc=\"Support\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.olarkchat\/issues?state=open<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.olarkchat\/blob\/1.0\/README.md<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>JMA Consulting<\/author>\n <email>joe.murray@jmaconsulting.biz<\/email>\n <\/maintainer>\n <releaseDate>2016-02-26<\/releaseDate>\n <version>1.3<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/Olarkchat<\/namespace>\n <\/civix>\n<\/extension>\n","com.pogstone.fancytokens":"<?xml version=\"1.0\"?>\n<extension key=\"com.pogstone.fancytokens\" type=\"module\">\n <file>fancytokens<\/file>\n <name>Save time preparing newsletters: Fancy tokens for upcoming events, contribution pages, and forms<\/name>\n <description>Additional tokens for contribution pages, upcoming event lists, individual event registration pages, and stand-alone CiviCRM profiles. If Drupal WebForm is in use, then any webforms that use CiviCRM integration will also be available as a token. All hyperlinks include the recipient checksum as appropriate. To see the additional tokens, start composing an email and click 'insert tokens'.<\/description>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/civicrm.org\/extensions\/fancy-tokens<\/url>\n <url desc=\"Documentation\">https:\/\/civicrm.org\/extensions\/fancy-tokens<\/url>\n <url desc=\"Support\">https:\/\/github.com\/sgladstone\/com.pogstone.fancytokens\/issues<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Sarah Gladstone<\/author>\n <email>info@fountaintribe.com<\/email>\n <\/maintainer>\n <releaseDate>2016-09-05<\/releaseDate>\n <version>4.0<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/Fancytokens<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/sgladstone\/com.pogstone.fancytokens\/archive\/4.0.zip<\/downloadUrl><\/extension>\n","com.aghstrategies.uscounties":"<?xml version=\"1.0\"?>\n<extension key=\"com.aghstrategies.uscounties\" type=\"module\">\n <file>uscounties<\/file>\n <name>US County Loader<\/name>\n <description>Loads counties of the United States<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Andrew Hunt<\/author>\n <email>andrew@aghstrategies.com<\/email>\n <\/maintainer>\n <releaseDate>2015-06-08<\/releaseDate>\n <version>1.1<\/version>\n <develStage>stable<\/develStage>\n <urls>\n\t <url desc=\"documentation\">http:\/\/aghstrategies.com\/counties<\/url>\n <\/urls>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>Use this extension to load counties for the United States. After installation, this extension does nothing (and can even be disabled).<\/comments>\n<downloadUrl>https:\/\/github.com\/agh1\/com.aghstrategies.uscounties\/archive\/1.1.zip<\/downloadUrl><\/extension>\n","net.ourpowerbase.report.advancedfundraising":"<?xml version=\"1.0\"?>\n<extension key=\"net.ourpowerbase.report.advancedfundraising\" type=\"module\">\n <file>advancedfundraising<\/file>\n <name>Advanced Fundraising Reports<\/name>\n <description>Reports to help fundraisers view their progress sponsored by PTP<\/description>\n <urls>\n <url desc=\"specifications\">http:\/\/wiki.civicrm.org\/confluence\/display\/CRM\/CiviEngage+Enhancements+for+fund-raising<\/url>\n <\/urls>\n <license>agpl<\/license>\n <maintainer>\n <author>Eileen McNaughton<\/author>\n <email>eileen@fuzion.co.nz<\/email>\n <\/maintainer>\n <releaseDate>2016-08-01<\/releaseDate>\n <version>1.0.5<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/AdvancedFundraising<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/jmcclelland\/net.ourpowerbase.report.advancedfundraising\/archive\/v1.0.5.zip<\/downloadUrl><\/extension>\n","nz.co.fuzion.omnipaymultiprocessor":"<?xml version=\"1.0\"?>\n<extension key=\"nz.co.fuzion.omnipaymultiprocessor\" type=\"module\">\n <file>omnipaymultiprocessor<\/file>\n <name>Omnipay multiprocessor support<\/name>\n <description>Support for Multiple processors using OmniPay library<\/description>\n <license>AGPL<\/license>\n <maintainer>\n <author>eileen<\/author>\n <email>eileen@fuzion.co.nz<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.omnipaymultiprocessor<\/url>\n <url desc=\"Documentation\">https:\/\/civicrm.org\/blogs\/eileen\/rethinking-payment-processing<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <releaseDate>2016-06-17<\/releaseDate>\n <version>1.9<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This module integrates the omnipay library with CiviCRM<\/comments>\n <civix>\n <namespace>CRM\/Omnipaymultiprocessor<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/eileenmcnaughton\/nz.co.fuzion.omnipaymultiprocessor\/archive\/1.9.zip<\/downloadUrl><\/extension>\n","ca.bidon.civiexportexcel":"<?xml version=\"1.0\"?>\n<extension key=\"ca.bidon.civiexportexcel\" type=\"module\">\n <file>civiexportexcel<\/file>\n <name>CiviCRM Export to Excel<\/name>\n <description>Adds the possibility to export directly to Excel from CiviCRM.<\/description>\n <license>AGPL3<\/license>\n <maintainer>\n <author>Mathieu Lutfy<\/author>\n <email>mathieu@symbiotic.coop<\/email>\n <\/maintainer>\n <releaseDate>2016-08-17<\/releaseDate>\n <version>1.8<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>Commercial support available from https:\/\/www.SymbioTIC.coop<\/comments>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/mlutfy\/ca.bidon.civiexportexcel<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/mlutfy\/ca.bidon.civiexportexcel\/blob\/master\/README.md<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org\/index.php\/board,57.0.html<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <civix>\n <namespace>CRM\/CiviExportExcel<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/mlutfy\/ca.bidon.civiexportexcel\/archive\/1.8.zip<\/downloadUrl><\/extension>\n","eu.tttp.civisualize":"<?xml version=\"1.0\"?>\n<extension key=\"eu.tttp.civisualize\" type=\"module\">\n <file>civisualize<\/file>\n <name>Civisualize. The missing data visualization extension<\/name>\n <description>Framework to generate easily (as in, if you know SQL and d3 at least) better visualisation about what's happening in your CiviCRM<\/description>\n <license>aGPL<\/license>\n <maintainer>\n <author>Xavier<\/author>\n <email>xavier@tttp.eu<\/email>\n <\/maintainer>\n <releaseDate>2016-02-23<\/releaseDate>\n <version>1.42<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.3<\/ver>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <civix>\n <namespace>CRM\/Civisualize<\/namespace>\n <\/civix>\n<urls>\n <url desc=\"Main Extension Page\">http:\/\/github.com\/TechToThePeople\/civisualize<\/url>\n <url desc=\"Documentation\">http:\/\/github.com\/TechToThePeople\/civisualize<\/url>\n <url desc=\"Support\">http:\/\/forum.civicrm.org<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n<\/urls>\n\n\n<downloadUrl>https:\/\/github.com\/TechToThePeople\/civisualize\/archive\/v1.42.zip<\/downloadUrl><\/extension>\n","biz.jmaconsulting.bugp":"<?xml version=\"1.0\"?>\n<extension key=\"biz.jmaconsulting.bugp\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.bugp\/archive\/1.3.zip<\/downloadUrl>\n <file>bugp<\/file>\n <name>Batch Update of Grants via Profile<\/name>\n <description>Batch Update of Grants via Profile\n This extension provides batch update functionality for grants similar that for contacts in CiviCRM core. Up to 50 grants can be edited simultanously in a table-like grid on a webpage.\n <\/description>\n <urls>\n <url desc=\"Support\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.bugp\/issues?state=open<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.bugp\/blob\/1.3\/README.md<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>JMA Consulting<\/author>\n <email>joe.murray@jmaconsulting.biz<\/email>\n <\/maintainer>\n <releaseDate>2016-02-27<\/releaseDate>\n <version>1.3<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments\/>\n <civix>\n <namespace>CRM\/biz.jmaconsulting.bugp<\/namespace>\n <\/civix>\n<\/extension>\n","com.pogstone.contenttokens":"<?xml version=\"1.0\"?>\n<extension key=\"com.pogstone.contenttokens\" type=\"module\">\n <file>contenttokens<\/file>\n <name>Content Tokens<\/name>\n <description>This extension provides mail merge tokens that list various content. If running under Drupal, then there are tokens for each content type, taxonomy term, and feed items. If running under WordPress then there are tokens for each post type and post term. If running under Joomla then there are tokens for each type and category. This is meant to help save time when preparing an email newsletter. If used in combination with a CMS aggregator (Such as the core Drupal aggregator module), then tokens are available for virtually any content source, local or remote. <\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Sarah Gladstone<\/author>\n <email>info@fountaintribe.com<\/email>\n <\/maintainer>\n <releaseDate>2016-07-26<\/releaseDate>\n <version>3.1<\/version>\n <develStage>stable<\/develStage>\n <urls>\n<url>http:\/\/fountaintribe.com<\/url>\n<url>https:\/\/github.com\/sgladstone\/com.pogstone.contenttokens<\/url>\n<\/urls>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This extension checks which CMS its running under before attempting to do CMS-specific things. It has been tested primarily with Drupal 6, Drupal 7, and Joomla 3. It should work under WordPress, but testing has been limited. Its safe to install under any CMS or stand-alone. However no useful functionality is provided for CiviCRM stand-alone. (Please help improve this on GitHub at https:\/\/github.com\/sgladstone\/com.pogstone.contenttokens). The formatting of the results is fairly simple: each item is wrapped in a DIV tag and relative URLs are converted to absolute URLs. The original formatting from the content item is not altered. <\/comments>\n <civix>\n <namespace>CRM\/Contenttokens<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/sgladstone\/com.pogstone.contenttokens\/archive\/3.1.zip<\/downloadUrl><\/extension>\n","com.webaccessglobal.simpledonate":"<?xml version=\"1.0\"?>\n<extension key=\"com.webaccessglobal.simpledonate\" type=\"module\">\n <downloadUrl>https:\/\/github.com\/webaccess\/com.webaccessglobal.simpledonate\/archive\/1.2.zip<\/downloadUrl>\n <file>simpledonate<\/file>\n <name>Simple Donate<\/name>\n <description>Simplified donation form<\/description>\n <urls>\n <url desc=\"Main Extension Page\">\n https:\/\/civicrm.org\/extensions\/simple-donate\n <\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/webaccess\/com.webaccessglobal.simpledonate\/blob\/master\/README.md<\/url>\n <url desc=\"Support\">https:\/\/github.com\/webaccess\/com.webaccessglobal.simpledonate\/issues<\/url>\n <url desc=\"Licensing\">http:\/\/civicrm.org\/licensing<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Web Access<\/author>\n <email>info@webaccessglobal.com<\/email>\n <\/maintainer>\n <releaseDate>2016-04-12<\/releaseDate>\n <version>1.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>For support, please contact the team on github. (https:\/\/github.com\/webaccess\/com.webaccessglobal.simpledonate\/issues)<\/comments>\n <civix>\n <namespace>CRM\/SimpleDonate<\/namespace>\n <\/civix>\n<\/extension>\n","uk.co.vedaconsulting.module.civicrmpostcodelookup":"<?xml version=\"1.0\"?>\n<extension key=\"uk.co.vedaconsulting.module.civicrmpostcodelookup\" type=\"module\">\n <file>civicrmpostcodelookup<\/file>\n <name>CiviCRM Postcode Lookup<\/name>\n <description>Extension to enable postcode lookup feature in CiviCRM using AFD, Civipostcode, Experian or PostcodeAnywhere.<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Parvez Saleh<\/author>\n <email>parvez@vedaconsulting.co.uk<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/civicrm.org\/extensions\/postcode-lookup-civicrm<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/veda-consulting\/uk.co.vedaconsulting.module.civicrmpostcodelookup\/blob\/master\/README.md<\/url>\n <url desc=\"Support\">https:\/\/github.com\/veda-consulting\/uk.co.vedaconsulting.module.civicrmpostcodelookup<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <releaseDate>2016-08-04<\/releaseDate>\n <version>1.3<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>Developed by Veda NFP Consulting LTD.<\/comments>\n <civix>\n <namespace>CRM\/Civicrmpostcodelookup<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/veda-consulting\/uk.co.vedaconsulting.module.civicrmpostcodelookup\/archive\/v1.3.zip<\/downloadUrl><\/extension>\n","org.civicoop.documents":"<?xml version=\"1.0\"?>\n<extension key=\"org.civicoop.documents\" type=\"module\">\n <file>documents<\/file>\n <name>Documenten<\/name>\n <description>Documenten opslag in CiviCRM voor PUM<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>CiviCooP<\/author>\n <email>helpdesk@civicoop.org<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/guthub.com\/CiviCooP\/org.civicoop.documents<\/url>\n <url desc=\"documentation\">https:\/\/guthub.com\/CiviCooP\/org.civicoop.documents\/README.md<\/url>\n <url desc=\"Support\">http:\/\/civicoop.org<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <releaseDate>2016-05-03<\/releaseDate>\n <version>1.5<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>Extension is live at several clients<\/comments>\n <civix>\n <namespace>CRM\/Documents<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/CiviCooP\/org.civicoop.documents\/archive\/1.5.zip<\/downloadUrl><\/extension>\n","com.aghstrategies.idbsurvey":"<?xml version=\"1.0\"?>\n<extension key=\"com.aghstrategies.idbsurvey\" type=\"module\">\n <file>idbsurvey<\/file>\n <name>Individual Donor Benchmark Survey 2016<\/name>\n <description>Calculates donor data to compare to other nonprofits in the Individual Donor Benchmark Survey.<\/description>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/civicrm.org\/extensions\/individual-donor-benchmark-survey-report<\/url>\n <url desc=\"Documentation\">https:\/\/civicrm.org\/extensions\/individual-donor-benchmark-survey-report<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>AGH Strategies<\/author>\n <email>info@aghstrategies.com<\/email>\n <\/maintainer>\n <releaseDate>2016-03-08<\/releaseDate>\n <version>2.0<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <civix>\n <namespace>CRM\/Idbsurvey<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/aghstrategies\/com.aghstrategies.idbsurvey\/archive\/v2.0.zip<\/downloadUrl><\/extension>\n","biz.jmaconsulting.printgrantpdfs":"<?xml version=\"1.0\"?>\n<extension key=\"biz.jmaconsulting.printgrantpdfs\" type=\"module\">\n <file>printgrantpdfs<\/file>\n <name>Print Grants as PDF<\/name>\n <description>Enhances the print grants to include custom fields and attachments while generating PDFs<\/description>\n <downloadUrl>https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.printgrantpdfs\/archive\/v1.2.zip<\/downloadUrl>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>JMA Consulting<\/author>\n <email>joe.murray@jmaconsulting.biz<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Support\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.printgrantpdfs\/issues?state=open<\/url>\n <url desc=\"Installation Instructions for 1.2\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.printgrantpdfs\/blob\/1.2\/README.md<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/JMAConsulting\/biz.jmaconsulting.printgrantpdfs\/blob\/1.2\/README.md<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <releaseDate>2016-02-27<\/releaseDate>\n <version>1.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>This extension supports printing Grants to PDFs for download. Custom fields and attached files are included in the PDF. Printing Word documents attachments depends on the unoconv library from LibreOffice, which requires about half of LibreOffice to be installed.<\/comments>\n <civix>\n <namespace>CRM\/Printgrantpdfs<\/namespace>\n <\/civix>\n<\/extension>\n","com.aghstrategies.tinymce":"<?xml version=\"1.0\"?>\n<extension key=\"com.aghstrategies.tinymce\" type=\"module\">\n <file>tinymce<\/file>\n <name>TinyMCE<\/name>\n <description>Adds TinyMCE as a WYSIWYG editor for CiviCRM<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Tyrell Cook<\/author>\n <email>tyrell@aghstrategies.com<\/email>\n <\/maintainer>\n <url desc=\"Documentation\">http:\/\/www.tinymce.com<\/url>\n <url desc=\"Main Extension Page\">https:\/\/civicrm.org\/extensions\/tinymce<\/url>\n <releaseDate>2016-01-31<\/releaseDate>\n <version>1.3<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>TinyMCE version 4.3.3<\/comments>\n <civix>\n <namespace>CRM\/Tinymce<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/relldoesphp\/com.aghstrategies.tinymce\/archive\/1.3.zip<\/downloadUrl><\/extension>\n","org.woolman.genderselfidentify":"<?xml version=\"1.0\"?>\n<extension key=\"org.woolman.genderselfidentify\" type=\"module\">\n <file>genderselfidentify<\/file>\n <name>Gender Self-Identify<\/name>\n <description>A more inclusive way to input gender in CiviCRM.<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Coleman Watts<\/author>\n <email>coleman@civicrm.org<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/civicrm.org\/extensions\/gender-self-identify<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <releaseDate>2015-10-17<\/releaseDate>\n <version>1.2<\/version>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>There are no configuration options for this extension. Simply install it and users will be able to enter gender in an unrestricted way.<\/comments>\n <civix>\n <namespace>CRM\/Genderselfidentify<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/woolman\/genderselfidentify\/archive\/1.2.zip<\/downloadUrl><develStage>stable<\/develStage><\/extension>\n","org.civicrm.angularprofiles":"<?xml version=\"1.0\"?>\n<extension key=\"org.civicrm.angularprofiles\" type=\"module\">\n <file>angularprofiles<\/file>\n <name>Angular Profiles<\/name>\n <description>A Utility extension that provides Profile support to AngularJS pages<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Tobias Lounsbury<\/author>\n <email>toby@ginkgostreet.com<\/email>\n <\/maintainer>\n <releaseDate>2016-06-20<\/releaseDate>\n <version>4.6-1.0.2<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>\n This extension is a utility for allowing AngularJS pages to load CiviCRM's Backbone.js-based profile editor\/selector\n widget. It comes prebuilt with a service for loading Backbone.js and necessary files as well as an AngularJS directive\n to turn a standard input into the profile widget.\n <\/comments>\n <civix>\n <namespace>CRM\/AngularProfiles<\/namespace>\n <\/civix>\n <urls>\n <url desc=\"Documentation\">https:\/\/github.com\/ginkgostreet\/org.civicrm.angularprofiles<\/url>\n <\/urls>\n<downloadUrl>https:\/\/github.com\/ginkgostreet\/org.civicrm.angularprofiles\/archive\/v4.6-1.0.2.zip<\/downloadUrl><\/extension>\n","coop.palantetech.nodrilldown":"<?xml version=\"1.0\"?>\n<extension key=\"coop.palantetech.nodrilldown\" type=\"module\">\n <file>nodrilldown<\/file>\n <name>No Drill Down<\/name>\n <description>When viewing reports, clicking on a contact's name brings you to the contact's record, not their Contact Detail Report or Contribution Detail Report.<\/description>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Jon Goldberg<\/author>\n <email>jon@palantetech.coop<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/PalanteJon\/coop.palantetech.nodrilldown<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/PalanteJon\/coop.palantetech.nodrilldown\/README.md<\/url>\n <url desc=\"Support\">https:\/\/github.com\/PalanteJon\/coop.palantetech.nodrilldown<\/url>\n <url desc=\"Licensing\">http:\/\/www.gnu.org\/licenses\/agpl-3.0.html<\/url>\n <\/urls>\n <releaseDate>2016-02-10<\/releaseDate>\n <version>1.0<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>There is no unpaid support for this module - but if you submit a bugfix, I'll try to merge it.<\/comments>\n <civix>\n <namespace>CRM\/Nodrilldown<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/PalanteJon\/coop.palantetech.nodrilldown\/archive\/1.0.zip<\/downloadUrl><\/extension>\n","eu.tttp.bootstrapvisualize":"<?xml version=\"1.0\"?>\n<extension key=\"eu.tttp.bootstrapvisualize\" type=\"module\">\n <file>bootstrapvisualize<\/file>\n <name>Bootstrap layout for civisualize<\/name>\n <description>If you theme is already based on boostrap, civisualize works fine out of the box. If you don't, enable this extension that will add the missing stylesheets so the default datavisualisations work fine<\/description>\n <license>MIT<\/license>\n <maintainer>\n <author>xavier<\/author>\n <email>xavier@tttp.eu<\/email>\n <\/maintainer>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/TechToThePeople\/bootstrapvisualize<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/TechToThePeople\/bootstrapvisualize<\/url>\n <url desc=\"Support\">https:\/\/github.com\/TechToThePeople\/bootstrapvisualize<\/url>\n <url desc=\"Licensing\">https:\/\/opensource.org\/licenses\/MIT<\/url>\n <\/urls>\n <releaseDate>2016-02-23<\/releaseDate>\n <version>1.0<\/version>\n <compatibility>\n <ver>4.2<\/ver>\n <ver>4.3<\/ver>\n <ver>4.4<\/ver>\n <ver>4.5<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>I'm not sure about the license, take the one from bootstrap<\/comments>\n <civix>\n <namespace>CRM\/Bootstrapvisualize<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/TechToThePeople\/bootstrapvisualize\/archive\/v1.0.zip<\/downloadUrl><develStage>stable<\/develStage><\/extension>\n","com.cividesk.email.sparkpost":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<extension key=\"com.cividesk.email.sparkpost\" type=\"module\">\n <file>sparkpost<\/file>\n <name>SparkPost integration<\/name>\n <description>This extension allows CiviCRM to send emails and process bounces through the SparkPost service.<\/description>\n <urls>\n <url desc=\"Main Extension Page\">https:\/\/github.com\/cividesk\/com.cividesk.email.sparkpost<\/url>\n <url desc=\"Documentation\">https:\/\/github.com\/cividesk\/com.cividesk.email.sparkpost<\/url>\n <url desc=\"Support\">https:\/\/github.com\/cividesk\/com.cividesk.email.sparkpost\/issues?state=open<\/url>\n <\/urls>\n <license>AGPL-3.0<\/license>\n <maintainer>\n <author>Cividesk<\/author>\n <email>info@cividesk.com<\/email>\n <\/maintainer>\n <releaseDate>2016-05-18<\/releaseDate>\n <version>1.1<\/version>\n <develStage>stable<\/develStage>\n <compatibility>\n <ver>4.4<\/ver>\n <ver>4.6<\/ver>\n <ver>4.7<\/ver>\n <\/compatibility>\n <comments>As always, read the documentation first! Once the extension is enabled, go to Administer >> System Settings >> Outboud Email (SparkPost) to configure and send a test email.<\/comments>\n <civix>\n <namespace>CRM\/Sparkpost<\/namespace>\n <\/civix>\n<downloadUrl>https:\/\/github.com\/cividesk\/com.cividesk.email.sparkpost\/archive\/v1.1.zip<\/downloadUrl><\/extension>\n"}
\ No newline at end of file
if ($this->callAPISuccessGetCount('membership', array('id' => $this->_membershipTypeID))) {
$this->membershipTypeDelete(array('id' => $this->_membershipTypeID));
}
- $this->membershipStatusDelete($this->_membershipStatusID);
+ if ($this->callAPISuccessGetCount('MembershipStatus', array('id' => $this->_membershipStatusID))) {
+ $this->membershipStatusDelete($this->_membershipStatusID);
+ }
$this->contactDelete($this->_contactID);
$this->contactDelete($this->_contactID2);
$this->contactDelete($this->_orgContactID);
FALSE
);
- $this->assertEquals(array(
+ $expectedPairs = array(
0 => array(
'srcID' => $this->contacts[5]['id'],
'srcName' => 'Walt Disney Ltd',
'weight' => 10,
'canMerge' => TRUE,
),
- ), $pairs);
+ );
+ usort($pairs, array(__CLASS__, 'compareDupes'));
+ usort($expectedPairs, array(__CLASS__, 'compareDupes'));
+ $this->assertEquals($expectedPairs, $pairs);
+ }
+
+ /**
+ * Function to sort $duplicate records in a stable way.
+ *
+ * @param array $a
+ * @param array $b
+ * @return int
+ */
+ public static function compareDupes($a, $b) {
+ foreach (array('srcName', 'dstName', 'srcID', 'dstID') as $field) {
+ if ($a[$field] != $b[$field]) {
+ return ($a[$field] < $b[$field]) ? 1 : -1;
+ }
+ }
+ return 0;
}
/**
--- /dev/null
+<?php
+
+/**
+ * Class CRM_Core_DAOTest
+ * @group headless
+ */
+class CRM_Logging_LoggingTest extends CiviUnitTestCase {
+
+ public function setUp() {
+ parent::setUp();
+ }
+
+ public function tearDown() {
+ CRM_Core_I18n_Schema::makeSinglelingual('en_US');
+ $logging = new CRM_Logging_Schema();
+ $logging->dropAllLogTables();
+ parent::tearDown();
+ }
+
+ /**
+ * Test creating logging schema when database is in multilingual mode.
+ */
+ public function testMultilingualLogging() {
+ CRM_Core_I18n_Schema::makeMultilingual('en_US');
+ $logging = new CRM_Logging_Schema();
+ $logging->enableLogging();
+ $value = CRM_Core_DAO::singleValueQuery("SELECT id FROM log_civicrm_contact LIMIT 1", array(), FALSE, FALSE);
+ $this->assertNotNull($value, 'Logging not enabled successfully');
+ $logging->disableLogging();
+ }
+
+
+ /**
+ * Test creating logging schema when database is in multilingual mode.
+ * Also test altering a multilingual table.
+ */
+ public function testMultilingualAlterSchemaLogging() {
+ CRM_Core_I18n_Schema::makeMultilingual('en_US');
+ $logging = new CRM_Logging_Schema();
+ $logging->enableLogging();
+ $value = CRM_Core_DAO::singleValueQuery("SELECT id FROM log_civicrm_contact LIMIT 1", array(), FALSE, FALSE);
+ $this->assertNotNull($value, 'Logging not enabled successfully');
+ $logging->disableLogging();
+ CRM_Core_DAO::executeQuery("ALTER TABLE `civicrm_option_value` ADD COLUMN `logging_test` INT DEFAULT NULL", array(), FALSE, NULL, FALSE, TRUE);
+ CRM_Core_I18n_Schema::rebuildMultilingualSchema(array('en_US'));
+ $logging->enableLogging();
+ $query = CRM_Core_DAO::executeQuery("SHOW CREATE TABLE `log_civicrm_option_value`", array(), TRUE, NULL, FALSE, FALSE);
+ $query->fetch();
+ $create = explode("\n", $query->Create_Table);
+ CRM_Core_DAO::executeQuery("ALTER TABLE `civicrm_option_value` DROP COLUMN `logging_test`", array(), FALSE, NULL, FALSE, TRUE);
+ $this->assertTrue(in_array(" `logging_test` int(11) DEFAULT NULL", $create));
+ $logging->disableLogging();
+ }
+
+}
*/
public function relationshipTypeDelete($relationshipTypeID) {
$params['id'] = $relationshipTypeID;
- $this->callAPISuccess('relationship_type', 'delete', $params);
+ $check = $this->callAPISuccess('relationship_type', 'get', $params);
+ if (!empty($check['count'])) {
+ $this->callAPISuccess('relationship_type', 'delete', $params);
+ }
}
/**
$params = array(
'id' => $participantID,
);
- return $this->callAPISuccess('Participant', 'delete', $params);
+ $check = $this->callAPISuccess('Participant', 'get', $params);
+ if ($check['count'] > 0) {
+ return $this->callAPISuccess('Participant', 'delete', $params);
+ }
}
/**
'civicrm_uf_match',
);
$this->quickCleanup($tablesToTruncate, TRUE);
- $this->callAPISuccess('option_value', 'delete', array('id' => $this->test_activity_type_id));
+ $type = $this->callAPISuccess('optionValue', 'get', array('id' => $this->test_activity_type_id));
+ if (!empty($type['count'])) {
+ $this->callAPISuccess('option_value', 'delete', array('id' => $this->test_activity_type_id));
+ }
}
/**
AND option_group_id IN (SELECT id from civicrm_option_group WHERE name = "custom_search") ');
$this->assertDBQuery(1, 'SELECT is_active FROM civicrm_option_value
WHERE name = "CRM_Contact_Form_Search_Custom_Examplez"');
-
- $result = $this->callAPISuccess('CustomSearch', 'delete', array(
- 'id' => $entityId,
- ));
+ $check = $this->callAPISuccess('CustomSearch', 'get', array('id' => $entityId));
+ if (!empty($check['count'])) {
+ $result = $this->callAPISuccess('CustomSearch', 'delete', array(
+ 'id' => $entityId,
+ ));
+ }
$this->assertEquals(1, $result['count']);
$this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_option_value
WHERE name = "CRM_Contact_Form_Search_Custom_Examplez"
if (!empty($this->optionGroup)) {
foreach ($this->optionGroup as $type => $value) {
if (!empty($value['id'])) {
- $this->callAPISuccess('OptionGroup', 'delete', array('id' => $value['id']));
+ $count = $this->callAPISuccess('OptionGroup', 'get', array('id' => $value['id']));
+ if ((bool) $count['count']) {
+ $this->callAPISuccess('OptionGroup', 'delete', array('id' => $value['id']));
+ }
}
}
}
--- /dev/null
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7 |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2016 |
+ +--------------------------------------------------------------------+
+ | 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 |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Test APIv3 civicrm_extension_* functions
+ *
+ * @package CiviCRM_APIv3
+ * @subpackage API_Core
+ */
+
+/**
+ * Class api_v3_ExtensionTest.
+ * @group headless
+ */
+class api_v3_ExtensionTest extends CiviUnitTestCase {
+
+ public function setUp() {
+ $url = 'file://' . dirname(dirname(dirname(dirname(__FILE__)))) . '/mock/extension_browser_results';
+ Civi::settings()->set('ext_repo_url', $url);
+ }
+
+ public function tearDown() {
+ Civi::settings()->revert('ext_repo_url');
+ }
+
+ /**
+ * Test getremote.
+ */
+ public function testGetremote() {
+ $result = $this->callAPISuccess('extension', 'getremote', array());
+ $this->assertEquals('org.civicrm.module.cividiscount', $result['values'][0]['key']);
+ $this->assertEquals('module', $result['values'][0]['type']);
+ $this->assertEquals('CiviDiscount', $result['values'][0]['name']);
+ }
+
+}
if ($Entity === 'Setting') {
$this->markTestSkipped('It seems OK for setting to skip here as it silently sips invalid params');
}
+ if ($Entity == 'Product') {
+ $this->markTestSkipped('At the moment product API does not complain if no params are passed need fixing');
+ }
// should create php complaining that a param is missing
civicrm_api3($Entity, 'Create');
}
* @throws \PHPUnit_Framework_IncompleteTestError
*/
public function testInvalidID_delete($Entity) {
- // turn test off for now
- $this->markTestIncomplete("Entity [ $Entity ] cannot be mocked - no known DAO");
- return;
if (in_array($Entity, $this->toBeImplemented['delete'])) {
- // $this->markTestIncomplete("civicrm_api3_{$Entity}_delete to be implemented");
+ $this->markTestIncomplete("civicrm_api3_{$Entity}_delete to be implemented");
return;
}
$result = $this->callAPIFailure($Entity, 'Delete', array('id' => 999));