Has any work been done to integrate Zoom and CiviCRM

Seems like NCN Civi Zoom may already provide integration between Civi and Zoom webinars - thanks to Raphael for sharing so we or others can hopefully build more features in to it.


How to delete a contact through the command line (CLI)

If you're on Drupal and have drush installed you can do

drush cvapi Contact.delete id=17 skip_undelete=1


You can always search for contacts (e.g. contacts with certain tags) and then send an email / mass mailing to all the contacts via CiviMail. Technically CiviCRM would then create a "hidden group" to do that.
However, it is usually preferable to use groups to manage your mailing recipients in order to ensure that contacts can properly unsubscribe from your lists.
Maybe you could change the tags you currently use to groups?


I found the corresponding reference page here:

https://docs.civicrm.org/dev/en/latest/framework/cache/

Looks straightforward:

Set a cache value with Civi::cache()->set('mykey', 'myvalue');
Get a cached value with Civi::cache()->get('mykey');
Delete a cached value with Civi::cache()->delete('mykey');
Flush the entire cache with Civi::cache()->flush();

As far as I know, the civicrm caching schema is pretty simple, there's just one key/value table.

As an aside - I just discovered that Herb @ freeform has contributed a recent patch for using Redis as the cache backend. I'm a Redis fan also, so thanks Herb!


Can I use a CIviCRM Webform URL in place of the required action.unsubscribeUrl?

You can already disable the setting so the tokens aren't mandatory, then use add your url to the webform (with the contact id and token checksum so they are "logged")

It's under Administer>civimail>civimail component setting http://d46.demo.civicrm.org/civicrm/admin/setting/preferences/mailing?reset=1


Alert/warning when template is used for same contact twice

The good news is that mass mails track the template id that was used, so in theory, you could build that functionality.

If you're doing these one at a time, you do have access to past mailings in the activities tab, which may have the information you need.

Not the answer you're looking for, but nice to know that in theory it's possible.


Cant Change “Accept profile submissions from external sites” to No

I'm guessing this is a 4.6 site based on the second error message? If upgrading isn't possible you could try something like updating the database directly:

UPDATE civicrm_setting SET value='i:0;' where name='remote_profile_submissions';


Bulk move contacts to new group after message sent

In principle this should be possible using the CiviRules extension: https://civicrm.org/extensions/civirules.

Documentation of this extension: https://docs.civicrm.org/civirules/en/latest/

I think you would get there by selecting the trigger Activity is added, select the specific type of activity (Email) and add one more condition that would specifically identify your mail. Then action remove from group A and add to group B.

Or if you use a mailing you should probably be able to work with a trigger on Mailing but I have never tried those myself!


Welcome to Stack Exchange!

By default, the postal address doesn't appear on the badges.  You need to go to Administer menu » CiviEvent » Event Name Badge Layouts to customize what's displayed.


Our CiviCRM was installed outside of the Drupal root in order to circumvent performance issues with Drupal commons. I have re-engineered so that CiviCRM is now inside the Drupal root and upgraded. I also noticed multiple instances of Drupal in /var/www/html so I moved all other copies to a backups folder outside of the html folder.

We no longer have this problem.


Why can't I save draft in contact email?

I think you are correct that this functionality is missing. Workarounds that might serve you well include:

writing and saving the draft as a meeting note for the contact, then copy-pasting into an actual email when ready.
creating a new activity type that is called "email draft" and doing the same.
using an actual email client, such as gmail, to write and save a draft, and when ready, send, bccing civiemails so that the email is logged in the contact's activity. (this will require setup of email-to-activity if it hasn't already been configured)

I hope one of these helps!


Scheduled reminder linked to deleted event is not deleted: bug or feature?

I wouldn't say its a bug, rather missing feature. The schedule reminder UI also allows to update the reminder to include more events(for reminder which was configured from events tab) so it is additional discussion to delete the reminder if its only used for deleted event or disable it so that we maintain the log history if incase any reminder was sent for the reminder.
Would appreciate if you can send a PR to core to delete the reminder.


Not found "Create Add new " option in the Current Employer field if the org name typing

From the documentation:

  If you want to force the user to submit only a value from the list (or
  leave to leave it blank), thereby preventing the user from creating
  new organization records, set the require_match config option to TRUE
  (it defaults to FALSE):

global $civicrm_setting;
$civicrm_setting['eu.tttp.publicautocomplete']['require_match'] = TRUE;

This means, if you want to allow the user to create new organization records, you would omit this line, or set it to FALSE.

Also note: If you omit the line or set it to FALSE, you won't actually see a "Create New" option; you'll just be able to type in the name of an organization that's not in the list of options.

EDIT:

Regarding the potential for typos and duplicates, that will always exist any time you allow the user to enter a new organization name. CiviCRM will  follow the unattended dedupe rule for organizations when deciding whether to use an existing org or create a new one.


Should civicrm_participant.registered_by_id be an FK to civicrm_contact?

I think there is some of the code related to payment processing that assumes the registered_by_id is the participant under whom payment has been made. Any changes to the schema would need to account for that. Thats probably the primary reason the FK is to civicrm_participant


I finally gave up and forwarded this our developer who found that indeed, the issue was the is_deceased flag which had become NULL of their own accord!

It could be noted that manually setting all the flags via the GUI does not resolve this issue.

It would be interesting at some point to work out whether there was a specific action on the website that caused these flags to become NULL vice 0.


Adding a column for Document Links to the Activity table in CaseView

Finally, I solved the problem like this:

sites/all/modules/civicrm/templates/CRM/Case/Form/ActivityTab.tpl -> add another cell to the activity table:
<th data-data="document_links" data-orderable="false" class="crm-case-activities-status">&nbsp;Dokumente </th>
sites/all/modules/civicrm/CRM/Case/Selector/Search.php -> add the function addDocumentLinks() that is basically only the document-link part of the original function addCaseActivityLinks():

public static function addDocumentLinks($caseID, $contactID, $userID, $context, $dao, $allowView = TRUE) {
$caseDeleted = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $caseID, 'is_deleted');
$actionLinks = self::actionLinks();
// Check logged in user for permission.
if (CRM_Case_BAO_Case::checkPermission($dao->id, 'view', $dao->activity_type_id, $userID)) {
$permissions[] = CRM_Core_Permission::VIEW;
  }
if (!$allowView) {
unset($actionLinks[CRM_Core_Action::VIEW]);
  }
$linksMarkup = "";
// if there are file attachments we will return how many and, if only one, add a link to it
if (!empty($dao->attachment_ids)) {
$linksMarkup .= implode(' ', CRM_Core_BAO_File::paperIconAttachment('civicrm_activity', $dao->id));
  }
return $linksMarkup;
}

sites/all/modules/civicrm/CRM/Case/Selector/Search.php -> delete the document-link part from the original function addCaseActivityLinks():

public static function addCaseActivityLinks($caseID, $contactID, $userID, $context, $dao, $allowView = TRUE) {
$caseDeleted = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $caseID, 'is_deleted');
$actionLinks = self::actionLinks();
// Check logged in user for permission.
if (CRM_Case_BAO_Case::checkPermission($dao->id, 'view', $dao->activity_type_id, $userID)) {
$permissions[] = CRM_Core_Permission::VIEW;
  }
if (!$allowView) {
unset($actionLinks[CRM_Core_Action::VIEW]);
  }
if (!$dao->deleted) {
// Activity is not deleted, allow user to edit/delete if they have permission
    // hide Edit link if:
    // 1. User does not have edit permission.
    // 2. Activity type is NOT editable (special case activities).CRM-5871
if (CRM_Case_BAO_Case::checkPermission($dao->id, 'edit', $dao->activity_type_id, $userID)) {
$permissions[] = CRM_Core_Permission::EDIT;
    }
if (in_array($dao->activity_type_id, CRM_Activity_BAO_Activity::getViewOnlyActivityTypeIDs())) {
unset($actionLinks[CRM_Core_Action::UPDATE]);
    }
if (CRM_Case_BAO_Case::checkPermission($dao->id, 'delete', $dao->activity_type_id, $userID)) {
$permissions[] = CRM_Core_Permission::DELETE;
    }
unset($actionLinks[CRM_Core_Action::RENEW]);
  }
$extraMask = 0;
if ($dao->deleted && !$caseDeleted
&& (CRM_Case_BAO_Case::checkPermission($dao->id, 'delete', $dao->activity_type_id, $userID))) {
// Case is not deleted but activity is.
    // Allow user to restore activity if they have delete permissions
unset($actionLinks[CRM_Core_Action::DELETE]);
$extraMask = CRM_Core_Action::RENEW;
  }
if (!CRM_Case_BAO_Case::checkPermission($dao->id, 'Move To Case', $dao->activity_type_id)) {
unset($actionLinks[CRM_Core_Action::DETACH]);
  }
if (!CRM_Case_BAO_Case::checkPermission($dao->id, 'Copy To Case', $dao->activity_type_id)) {
unset($actionLinks[CRM_Core_Action::COPY]);
  }
$actionMask = CRM_Core_Action::mask($permissions) | $extraMask;
$values = [
'aid' => $dao->id,
'cid' => $contactID,
'cxt' => empty($context) ? '' : "&context={$context}",
'caseid' => $caseID,
  ];
$linksMarkup = CRM_Core_Action::formLink($actionLinks,
$actionMask,
$values,
ts('more'),
FALSE,
'case.tab.row',
'Activity',
$dao->id
);

// deleted part

return $linksMarkup;
}

sites/all/modules/civicrm/CRM/Case/BAO/Case.php -> add the function call for addDocumentLinks() inside the function getCaseActivity() inside the while loop while($dao->fetch()) { } (approx. line 1091):

$caseActivities[$caseActivityId]['document_links']
        = CRM_Case_Selector_Search::addDocumentLinks($caseID, $contactID, $userID, $context, $dao);


HELP CiviDiscount Auto-Apply feature not working!

I figured it out. Users need to log in to Joomla to get the discount.


How can I expose event creation fields on Drupal 8 front end without CiviCRM Entity?

If an extension isn't on the table, then I think that CiviCRM Entity is the way to go, despite the lack of a stable release.

For what it's worth, it's not terribly uncommon to have sites in production with modules that don't have stable releases.  It means more testing ensuring it works for your use case - but that testing also helps build toward the common solution that in a few months will be the standard way of doing what you're describing.

You may also research the Form Processor extension - but this relies on having a Drupal module like CiviMRF, which doesn't have a D8 version.

Finally - I would chat with the folks behind both of these solutions.  In particular, https://chat.civicrm.org has a "CiviCRM Entity" channel where you can talk with the authors.  They may also be open to a sponsorship to prioritize the features you need.


Can I specify a dedupe rule and import type (e.g. update) when using command line import

The command line import uses the default unsupervised rule for deducing.  Out of the box that's just email.

When using command line import if the unsupervised dedupe rule says the import line is a duplicate then it will do an update instead of a creating new record.


Advanced Search returns no results for a valid contact id

It turns out the contact had been deleted and was in the trash.


Set max participants separately for male and female

If you use civicrm forms, you can do it using price sets and creating 2 options : male and female and limiting the amount of people per item.


How to import csv file with some required fields missing

Email address isn't a required field unless you don't also have a last name.  At present, CiviCRM requires either a last name or an email address, but not both.


Two users completing separate webforms on Drupal that create one activity on CiviCRM

You need a custom or temp table which holds user1_ID, user2_iD and activity_id
http://book.civicrm.org/user/current/organising-your-data/custom-fields/

So when you are creating the first activity set the activity status to schedule.

Create a new activity Type for your process if needed -

You need to create an extension and use hook_civicrm_post - set the activity to completed
http://wiki.civicrm.org/confluence/display/CRMDOC/Create+an+Extension

If you need more help please let me know - thanks


It sounds like it will depend somewhat on your set up. If you're on Drupal, you could have a look into using webform civicrm which would be able to handle all of the above (creating the contacts, relationships, and membership). You could also do clever things like populate the name of the Household based on the Last name value entered for one of your contacts.

I'm not as familiar with the other CMS integrations but hopefully someone more versed in Wordpress or Joomla can chime in if you're using one of those.


Assign two different emails for two different groups (but only one contact)?

You can create a location type for each group - collect emails for that location using a profile.

Then when emailing click options (the spanner icon) for recipients to choose the location.

See answer + screenshot at Add non-Primary email address to Group by Fabian


When exporting data from CheckBox field, can value of be different from what is displayed?

as far as I know you can not change the way an exported field is represented in the User Interface.
What you could do is create a report of activities and export that report, perhaps you will then get the option to get the value. And this extension might help as well: https://civicrm.org/extensions/export-native-excel. Good luck!


Batch alter Relationship Contact Permission only

After some debugging it has turned that  we have exactly same situation described here How to change the direction of a relationship type with existing data , but we weren't aware that changing Relationship direction via GUI doesn't make change in a database. Sounds like another civicrm bug.

We've ended up by direct Mysql intervention with this query (in case someone will face this issue in future):

UPDATE
 civicrm_relationship
SET
  contact_id_a=contact_id_a+contact_id_b,
  contact_id_b=contact_id_a-contact_id_b,
  contact_id_a=contact_id_a-contact_id_b
WHERE ** ... conditions set ...  **


CRM_SMS_Page_Callback run method override

When you say parameters do you mean http get/post parameters? You would just access those in your callback the usual way in php. Or see for example the callback function for clickatell

https://github.com/veda-consulting/org.civicrm.sms.clickatell/blob/master/org_civicrm_sms_clickatell.php


CiviCRM Status/Connection Show 404 Not Found

The issue was due to the fact i was using FPM applicated server by nginx instead of FPM applicated server by Apache.

I am not sure how to find a work around using NGINX but it is working now, thank you to everyone whos tried to help!

Thanks


Assign more than 100 contributions to a Batch

You add more than 100 transactions to a batch, but only up to 100 at a time.  I had to do this when first implementing the batch processing - creating a batch of previous transactions.

I just wish that Civi would remember the number of entries selected when returning from applying.


I'm not sure I can answer whether it's the 'correct' behavior. But I can verify that when you email or 'print/merge a document' with tokens, the activity detail records the literal tokens, not the generated content. (Just for clarity of anyone reading and not familiar - i.e. it will show the token {contact.addressee} in the details for the activity versus "John Doe".)

For the 'print/merge document' side - if you turn on record generated letter (System Settings > Misc), the pdf that attaches to the activity will showcase the generated tokens.

My guess is that it's easier to record the tokens rather than the generated content especially when you consider you can store the same activity on multiple contacts i.e. you email a group of 15 people, they all get the same activity stored but it contains multiple 'with' contacts.

Strangely enough, if you send through CiviMail and then view the activity details it does show the generated token. Although this is also probably not the ideal behavior because it shows the evaluated token at the moment you view the activity - not from when it was sent.

In summary, what you have described (I can't vouch for CiviRules) is the current 'standard' behavior.


CiviCRM Home says CURL is not installed but it is

CiviCRM has detected that the function curl_init is not available, and is showing a warning.

Commandline phpinfo() will show changes immediately (since PHP is started for each execution), while PHP in the webserver needs you to restart it separately to pick up new PHP modules. (These modes of running PHP also have different configurations loaded per default - but apt should already have enabled curl for each.)

You can verify this by checking phpinfo through the webserver (eg in Drupal, visit admin/reports/status/php; in WordPress you might need to use this phpinfo plugin or just create a phpinfo file in your site. If you see curl missing there, it could be a reload is all you need.

Depending on your webserver configuration (PHP can run as FPM, mod_php, etc), you'll need to restart the service (eg apache2, php-fpm) which runs PHP on your server. Most likely,

sudo service <your php service> reload

https://askubuntu.com/questions/6358/how-do-you-restart-apache
https://serverfault.com/questions/189940/how-do-you-restart-php-fpm


How can I provide mailing receipients an "Unsubscribe All" option?

There is no built-in "Unsubscribe All" function in CiviCRM, though there is a User Opt Out option from CiviMail, as well as a Do Not Email setting.
Unsubscribe
The unsubscribe link is provided by the {action.unsubscribeUrl} (URL) or {action.unsubscribe} (email) tokens.
The unsubscribe email, even if not provided as a token in the message, is supplied in the email headers as the List-Unsubscribe  address. Someone who unsubscribes by email is removed from every list used to send the message. For example, if you send a newsletter to two groups, Donors and Volunteers, and joe@example.net is on both, Joe would no longer receive messages from either Donors or Volunteers.
More commonly, people would click on the unsubscribe link, and be brought to a confirmation page to be asked

Are you sure you want to be removed from the mailing list(s) shown below …
You are requesting to unsubscribe this email address

The confirmation is in place to prevent accidental removals when people follow the link from forwards or replies. If confirmed, the contact is not deleted from the Group, but their group status is changed to Removed.
As of 4.6.5, there appears to be no way to unsubscribe from all groups at once, nor even to pass individual group IDs to the unsubscribe, unlike subscribing where group IDs can be passed to {action.subscribeUrl} as {action.subscribeUrl.gid}. On Drupal, it might be possible to handle subscriptions using Webform CiviCRM Integration and a bit of jQuery to select/unselect multiple checkboxes.
Because unsubscriptions are on a list-by-list basis, people unsubscribing from all current lists would not prevent them from being added to any newly created lists.
Opt-out
In contrast to the unsubscribe options, a user Opt Out ({action.optOutUrl} or {action.optOut} tokens) does not affect group membership status; it is an independent field on the contact itself. Contacts which have NO BULK EMAILS (User Opt Out) selected will be removed from all CiviMail mailings. So if you add the contact to any new mailing lists you create in the future, they will not receive messages from those lists, either.
The confirmation message for an opt-out link is different from that of an unsubscribe link:

You are requesting to opt out this email address from all mailing lists

There is no way to prevent an opt-out, though that feature has been requested in the past.
Do Not Email
A third option, which I believe can only be set by an admin or through a custom setup, not only prevents the distribution of CiviMail to a contact, but prevents an admin from sending a direct message as well.


I changed the address to include a local part so VERP. This now works


System Status Critical, blank System Status page

Can you check Directory and Resource url settings if the paths are entered correctly.


Is it possible to change Custom Field types?

you are making the job harder - just create an Temp table (Export) move all your custom data to it. Delete the unwanted custom field and create new custom field as you needed

Once you have created all the custom field as per your requirement just move all the data from temp table to the new custom field table - job done.


An alternative approach, esp if you have comma separated options for the Groups (ie all groups are in a single cell) would be to make a Custom Field with options that match your Group Names, import like that, then search for each option and via Actions 'add to group'.

Or (as Pradeep suggests in comment below) Custom field of type text and then using Search builder perform Like %Group Name% for each option and via Actions 'add to group'


how to get list of all buttons in civicrm hook_buildform?

You will need to over-ride the button to include existing + new button through buildform. The other option is to add button using smarty in tpl file using below snippet

{crmButton p='civicrm/request' q="action=browse&reset=1&gid=$gid" icon="th-list"}{ts}Request for Approval{/ts}{/crmButton}

HTH

Pradeep


CiviMobile won't login: "Server API Error" Drupal

A. The url should be https://www.URL.com
Do not include loginpage.
B. Not sure how you installed it, but make sure the directory of your extension is com.agiliway.civimobileapi (of there is a -master or a version number at the end remove it).


Related Permissions Extension: Existing Contact widget on Webform not showing related contacts

According to here this has been fixed with this patch


Update 4.7.22 : Operation failed: Update Indices DB Error: already exists

There are a couple of posts on this issue. The one that worked easiest for me is the artfulrobot answer in How to find and/or fix missing indices?. You can execute steps 3-5 runing SQL commands either at the command line or in phpMyAdmin. Although the post was for drupal, it worked for me on our wordpress instance.


How do I subscribe to a CiviCRM developer email list/group?

To find a list of possible discussion groups/email list, navigate to http://lists.civicrm.org/lists/lists and click on the list you're interested in.  On the list's page, click the subscribe button to the left.  You'll get an email verifying your interest.  Confirm your subscription with the link in the email you receive.


Where Can I Alter the Event Additional Participant Wording?

You could check templates/CRM/Event/Form/Registration/Register.tpl around line no 71.


If you completly want to delete the addresses, you could also delete them from the database with a query like DELETE FROM civicrm_address WHERE location_type_id = xx AND contact_id IN (SELECT entity_id FROM civicrm_entity_tag WHERE entity_table = 'civicrm_contact' AND tag_id = yy)

Where xx stands for the id of the location type you want to delete
and yy is the id of the tag.


Where is my "Address History" link disappeared?

I see reference to Address History in the GDPR extension: https://github.com/veda-consulting/uk.co.vedaconsulting.gdpr so perhaps you saw it on a site that was using that


There is also a setting which AFAIK prevents adding a new revision. The setting is under Administer>System Settings>CiviCase>CiviCase Settings and is called Enable Embedded Activity Revisions


You say you want to change 'Edit Contact' - but if you mean, you want a way for a logged in user to be able to be directed 'somewhere' to update their details, then here is one non-coding solution suitable for just a couple of different roles that i hope others can improve on. (The more I wrote this out the more convoluted it seemed

Ingredients:
- one webform using webform_civicrm module per role
- one View with displays set for each role

Recipe:
Set the webforms up so cid1 is the logged in user, and provide the fields you want depending on the role for each webform.
With the view make a block per role or use some php sauce so that the link that it provides varies per role. Stack the block(s) to show on /user perhaps.
Set the link in the block to send the user to the webform that is relevant to their role.


I resolved this.  I was using the wrong field name.  The field name is "country-3" and I was using "country".


Remove Individual's eMail as default when sending eMails

This isn't an option that CiviCRM provides out of the box.  If you have some jQuery skills or some PHP skills, it would only be a few lines of code to do what you're describing by writing an extension.  If you don't have those skills, you may want to consider hiring someone who does, either a third party or the core team.


Network Error when viewing contact from Joomla front end

It appears that something is misconfigured in your site.  From the frontend, you should only be able to go to "front-facing" pages, such as contribution pages, event forms, and profile forms (and I mean CiviCRM profiles, not the contact records themselves with the tabs and all).  Most importantly, contact search should not be available unless you have a profile with searchable fields configured, and you would most likely want to restrict those results to a group.


Absolutely - you can configure things such that the recurring series will be for 3 instalments only. That way you don't need to manually cancel them after the third gift.


It could all be the same report -> but users could have selected different columns, filters and group by settings;


Automatic mail after user registration (voucher)

If you can't do this through civi native, take a look at CiviCoop's CiviRules extension.


It doesn't exist for search, but it does for reports. Could you use a report instead of the search?


For whatever reason, Civi requires it to have at least one letter (lower case or upper doesn't matter).
See https://github.com/civicrm/civicrm-core/blob/5.29.1/CRM/Core/DAO.php#L2992


Registration forms not submitting - What Permissions needed

Tried several tests to resolve the issue. Checked all Anonymous Roles to YES, not this problem. Turned off all WordPress Plugins, not this problem. Changed theme, BINGO!

There was a conflict with one of the JQuery/Lightbox type page overlay option within our theme that cause the forms not to submit. Disabling that option fixed the issue.

The overlay window was loading a separate page and somehow it was loading the Registration form too, doubling up the Registration form!

So, Theme conflict in WordPress.


Security Configuration and Programming Guidance

CiviCRM is a good system if you want your data to remain secure. I would recommend installing on a hardened server following the normal instructions, and ensure you keep the security patches for your CMS and CiviCRM applied when they come out. Drupal, WordPress and Joomla! all have security announcement lists you can subscribe to. See https://civicrm.org/security for CiviCRM's.

During configuration you will want to ensure that the permissions are configured to prevent inappropriate access to data (eg see http://wp46.demo.civicrm.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Faccess%2Fwp-permissions&reset=1 after logging with user demo password demo). For example, CiviCRM: view all contacts and CiviCRM: edit all contacts should be reserved to Administrative users, and CiviCRM: skip IDS check should be disabled for all users (IDS is Intrusion Detection System).


Does Drupal's read-only mode module work for Civicrm too?

In short - no.  Moreover, if it did, it would be dangerous, because the Drupal module can't know which database writes are part of the legitimate upgrade and which aren't.

In my experience, only upgrades that add/remove indices take any appreciable amount of time.  Is it possible that more frequent upgrades will result in shorter downtimes for your use case?


Contribution Confirmation Page Issue in Joomla after upgrade

After a long search and resetting paths and clearing cache and checking the .setting files 100s of times the issue was not with the site URL vs the .setting URLS being different aliases as pointed by many of the answers found; it was a damn malware!! 3 sites with the same phishing link in the defines.php in the includes folder. Who would have guessed that. Ths submissions were attempted to be redirected and civi pushes it back to the home page.
As always curse the virus and malware creators!!


100s of duplicate contacts created of current user when using CiviCRM

I have seen this when the uf_match table does not have the proper values for WP Id (uf_id), Contact ID (contact_id) and email (uf_name).

I don't know why this occurs, I've not been able to track it down, but I suspect it is when the uf_id and contact_id do not have the email in use by WP.

You can user API Explorer /wp-admin/admin.php?page=CiviCRM&q=civicrm/api to display the records or do a query on the civicrm_uf_match table.

To fix, I have deleted the 'bad contacts (merging if data needs to be retained) and then updating the uf_match records so this does not re-occur.


Welcome!
In future: it would help if you tell us what version of CiviCRM you are using with what CMS. Also, it looks like you are working on a customised version of CiviCRM. The tab 'District' is not part of core CiviCRM, but looks like a Custom Group.

If you select 'Administer/Customize Data and Screens/Custom Fields' in your menu you will get a list of custom sets. I expect you will see 'District' there. If you click on 'More' and then 'Settings' you can change the label (and hit 'Save') which will then also be the title of the tab.

If you are then back in the list with Custom Data, you have to click on 'View and Edit Custom Fields'. This will show a list of fields in the group. One of those (and possibly the only one) will be 'Districts'. You should see an option 'Edit Multiple Choice Options' which will allow you to change the options.

This is all on the assumption that this is a custom group :-)


The documentation covering Groups and Tags is here at https://docs.civicrm.org/user/en/stable/organising-your-data/groups-and-tags/

To view tags, go to: Contacts > Manage Tags (Categories) in the navigation menu.  A tag can be edited or deleted using the respective links in its row.  If it is a reserved tag, remember to first untick the reserved box.
Hope this helps.


why is the percentage of successful deliveries greater than the intended recipients in civi mailing report?

@Kboy - that sounds like it could be a bug; General receipe for this sort of scenario is to update to latest 4.6.x - if this then still persists let us know and file a bug report on JIRA. 4.6.x latest is where you want to be for many other reasons since 4.6.10 - so time well spent. Please keep us posted!


Drupal views, show 'add to cart' button instead of ''Register now'

Yes, you can rewrite the register now link  to or add custom text field with rewrite link as

https://domain.org/civicrm/event/add_to_cart?reset=1&id=[event_id]

to remove from cart

https://domain.org/civicrm/event/remove_from_cart?reset=1&id=[event_id]

Thanks

Pradeep


How to display only unique CiviCRM Contact Address in Drupal view?

If you can't sort the above out by ensuring you specify Location type (ie have a field for Zip = Worship, as well as Zip = Mailing) then I would try the views_field_view module.

I would make one view that pulls together the address details for just Worship, and another one that pulls together just the address for Mailing. Both these need to be set to use Contextual Filter = contact id. And set them both to only show 1 result

Then pull those both in as a Field and obviously use the contact_id as the contextual filter (also needs using on the two views you have to create)


Restrictions and Limitations for CiviSpark

The sign-up page says:

Store up to 2000 contacts
Send up to 5000 emails per month
Payments are only supported with three processors: PayPal, Stripe and iATS
The interface is available in many languages.
A few other configurations are disabled by default, such as Households and some Location Types
It is not possible to enable other extensions than the ones provided by default.

If you can't do something on Spark, it's worth clarifying on the Spark channel on Mattermost whether it is an intentional limitation or just a problem with your setup.


If the Stripe webhook wizard is creating webhooks with the wrong API version, that's a bug, and should be reported on https://lab.civicrm.org/extensions/stripe/issues.

To allay your concerns - it's very unlikely that you're going to experience any ill effects from this.  The check in question is mostly concerned with folks running older versions of the Stripe API, and the API doesn't change that drastically from version to version.


Can a user removed from smart group manually be added back automatically if criteria is satisfied?

A person once removed(not deleted) from smart group won't be added again back automatically if the contact's updates his/her information or membership. So schedule reminder will exclude the contacts that are removed from smart group.


fixed by disabling Wordpress Autoptimize plugin


Sign up for multiple events, get a discount

Since you are on Drupal, you can create a webform. (You'll need the webform_civicrm module)
Enable 5 event options. Configure each event to be one of your events. Enable the participant fee field and set the price to $100.
Create a conditional
If event 1 and event 2 and event 3 and 4 and 5 are selected then price fields are set to 90.
Enable a contribution form for online payment.


Login Failed with eWAY Recurring Payment Processor

We had the same issue when setting up recurring payments for the first time. This is how we resolved it. Note: This is for Australia only.

Login to MyeWay and create an API Key and password.
In CiviCRM, modify or create an eWay recurring payment processor with the following:
Username: your usual eWay username (ie. email address).
Password: The new API password you just created in Step 1.
Site URL: https://www.eway.com.au/gateway_cvn/xmlpayment.asp
Recurring Payments URL: https://www.eway.com.au/gateway/ManagedPaymentService/managedCreditCardPayment.asmx?WSDL

Also to confirm we are using the 1.2 version of the eWay Recurring Payment Processor and it does not require any update to get it working.


The reminder will be sent when the next background Scheduled Reminder task is executed.  I have the exact same situation and the reminder was sent by the Scheduled Reminder task 9 minutes later than the trigger because there was a large number of emails being sent. So you can't bank on it being sent immediately.


What permissions are needed to edit Mosaico templates?

I guess below permission are required fro user to update the mosaico template

CiviCRM: edit message templates
CiviCRM: edit system workflow message templates


Why aren't State options non-default countries (outside UK) showing for billing address on the contribution page of a webform?

I had this problem too on the main Civi911.com checkout form, and then I was all the more sheepish when it turns out the issue was reported by my coworker Tyrell for one of our clients!  It's a bug in 7.x-4.11 and earlier: https://www.drupal.org/node/2516936

If you upgrade, the state/province in the billing address should update along with the country.


How do I set the default font type and font size in ckeditor configuration?

Maybe not quite what you are looking for, but I forced font size in a letter by adding a  tag in a message template. I had it put it into {literal} {/literal} (to escape the smarty processing if I remember correctly).

If you wanted that to apply more generally, maybe you could put it in a header.


How do I examine the symfony event handlers that are active?

This maybe not best practice but something like this will list all the events and their handlers:

 $kernel = \Civi::service('civi_api_kernel');
 $this->dispatcher = $kernel->getDispatcher();
 $listeners = $this->dispatcher->getListeners();
 foreach ($listeners as $event => $event_listeners) {
   echo "\n\n# $event\n";
   foreach ($event_listeners as $n => $listener) {
     echo "\n## Listener $n";
     $reflection = new \ReflectionClass($listener[0]);
     echo $reflection->getName() . "::" . ($listener[1]);
     echo "\nsource: " . $reflection->getFileName()
       . " lines: " . $reflection->getStartLine()
       . "-" . $reflection->getEndLine();
     // echo "\n Methods:" . json_encode(get_class_methods($listener[0]),JSON_PRETTY_PRINT);
   }
 }


Report with access "everyone (includes anonymous)" not displaying correctly

If you don't want ANONYMOUS USER to view the report then you need to set the permission in your ACL

Administer -> Userss and Permissions -> Permissions (Access Control)

where you will find "CiviReport: access CiviReport" remove for ANONYMOUS USER

Also for the display you need to make changes in your Theme

I Guess this helps !!! Please feel free to contact me if you need more help

Thanks


I'm pretty sure you need "CiviCRM: view debug output" permission in the CMS.
Also if it's not obvious, you have to run the search first before it appears.


CiviRules Trigger:Contribution is Added not working for Online Payments

I did a test with a completely new rule, and online payment correctly triggered the rule.


How can I print out samples of message templates?

One tool that can help is the Transactional Email extension by Fuzion which ensures that anything that goes out, including receipts etc, are recorded in civicrm as an Activity so you can 'see' what went out.

Currently civi doesn't offer a way to 'preview' the System Message Templates.

NOTE: recent blog about above extension here.


How do you set the displayed text of a custom field ("view-only")?

You might want to expand the question a bit and be more specific about your custom field.  What does it depend on? When should it be updated?

To the general question:

A view-only custom field is just like any other custom field, except that you can't edit it via the GUI.  It exists in the database and is displayed just like a 'normal' custom field.

Which hook you need depends on what should cause an update to the custom field value. If for example, it is based on the contact's name then you could use hook_civicrm_post so that your code gets run after the name is created or updated.

For setting the value, you can use the Contact.create API as the field is on a contact.  Specify the existing contact id and the new value of the custom field - eg:

$result = civicrm_api3('Contact', 'create', array(
  'sequential' => 1,
  'id' => 203,
  'custom_2' => "M",
));

Your code relates to writing the value of the custom field to the database, not the display of it.

[Update]
Here's a quick demo:

create a new custom field group for contacts
add an Integer field 'Set me'
add a view-only Integer field 'Doubled'

Put the following in an extension and adjust the groupid and fieldids to match your values:

function viewonlydemo_civicrm_custom($op, $groupID, $entityID, &$params) {
  $groupid_to_watch = 15;
  $fieldid_to_watch = 31; // 'Set me' field
  $fieldid_to_set = 32; // 'Doubled' field
  if ($groupID == $groupid_to_watch) {
    foreach ($params as $cf) {
      if ($cf['custom_field_id'] == $fieldid_to_watch) {
        civicrm_api3('Contact', 'create', array(
          'id' => $entityID,
          'custom_' . $fieldid_to_set => $cf['value'] ? $cf['value'] * 2 : "",
        ));
      }
    }
  }
}

When you change 'Set me' you should see 'Doubled' updated to be twice the value of 'Set me'.

Be aware that the hook will be called when you update 'Set me', and also by the API call in the hook so you need to be careful not to get stuck in a loop.


PxPay Recur Payment gets stuck in pending mode

We contacted the payment express and asked them to setup the PxPost creds for the client and then the recur started to work properly. Seems it is a necessary config for recur to function correctly using the automatic cron execution. Below lines is from Rishabh(Payment Express team member)

  The PxPay 2.0 is only used to tokenized the card details and PxPost runs in the backend to rebill those tokens in automatic process.

  You will not be able to rebill the tokens automatically, until you have PxPost setup in the backend.

Thanks :-)


Can I avoid HTML formatting being escaped during API import?

You can edit /CRM/Utils/API/HTMLInputCoder.php:
CRM_Utils_API_HTMLInputCoder->getSkipFields returns a list of fields that will be skipped on encoding. Add an entry for your custom-field to this list prevents the html-input from being escaped. The entry must be "custom_" + custom-field-id.


I tend to avoid using the drop down field for counties in the UK since - unlike States in the USA, or Departments in France, for example - there is no one true definition for them (is it London, Greater London, Islington, etc.).

Instead, I remove the county drop down and add another supplemental address line if required.

Although there are some forms on the web that use a drop down for counties, I suspect more than half just use a standard text field.

Flippant side note: the important thing to collect for UK addresses is the awesome UK postcode. As soon as you have that, everything else pales into insignificance :)


Moe's answer is technically workable - but oof ouch my performance!

Instead, something like this:

function getElementNameFromFieldName($fieldName, $elementIndex) {
  // This function could be further optimized so it's only called once, but meh.
  $elementNames = array_keys($elementIndex);
  foreach ($fieldNames as $fieldName) {
    if (strpos($elementName, $fieldName) === 0) {
      return $elementName;
    }
  }
}

if ( $formName == 'CRM_Contact_Form_CustomData' || $form == CRM_Core_Action::ADD) {
  $custom198ElementName = getElementNameFromFieldName('custom_198', $elementIndex);
  $custom197ElementName = getElementNameFromFieldName('custom_197', $elementIndex);
  $custom160ElementName = getElementNameFromFieldName('custom_160', $elementIndex);

  $form->updateElementAttr($custom198ElementName, ['readonly']);
  $form->updateElementAttr($custom197ElementName, ['readonly']);
  $form->updateElementAttr($custom160ElementName, ['readonly']);
}

if ($form == CRM_Core_Action::ADD) {
  $customid = rand (1,10000);
  $currentDate = date('d/m/Y');

  $defaults[$custom160ElementName] = $customid;
  $defaults[$custom197ElementName] = $currentDate;
  $defaults[$custom198ElementName] = $currentDate;
  $form->setDefaults($defaults);
}

Additionally -  your code (and mine) as written will set defaults on EVERY form's ADD action.  You probably want to limit it to those that have these custom fields.


Staging Site: staging.site.com/civicrm 404 WordPress

welcome to the CiviVerse!

Check for the presence of the .htaccess files. Depending on how you cloned the site perhaps these were lost.


Not sure why it's suddenly started producing output when it didn't previously, but you could use:

#!/bin/sh
a=`drush -r /home/crwheelmen/www/www --quiet civicrm-api job.execute`
if echo $a | grep -qv '\[is_error\] => 0'; then echo $a; fi

(capture the output of drush to variable a then check whether is_error is 0.  If it is, do nothing otherwise show the output)


What setting is this asking me to change?

To me it looks like you need that $joinsForFiltersOnly parameter in your implementation of customDataFrom


Is there a way to separate audit activities from "real" actvitites in a case?

I had one site where they asked me to have it automatically put the "copy sent to" activities into the trash, so they're still there but don't show unless you use the filter accordion to see them. It's not efficient database-wise, but for low volume is a possibility. At the time extensions didn't exist yet, or maybe were just starting, so it was implemented by overriding a core file. You might be able to do something similar with hook_civicrm_post, and while not robust, the subject lines are mostly identifiable so could filter based on that and set is_deleted=1.


How do I fix auto-renewal memberships? (Auth.net)

We had the same issue in CiviCRM 4.6.4 - our configuration inside our Authorize.Net portal was incomplete and we followed the steps outlined at

http://wiki.civicrm.org/confluence/display/CRMDOC/Authorize.net+Configuration

under Automated Recurring Billing. After putting in the correct URL for authorize.net to post to, memberships started to update.

Another thing to note is it's obnoxious to test because authorize.net processes their ARB transactions once every 24 hours at something like 2am so you won't know right away if it's working.

Pulled out the relevant text here:

"CiviCRM will need to be notified of the success of recurring contributions via a Silent Post URL.  Within Authorize.net, go to Account > Settings > Silent Post URL (within the Transaction Format Settings section).  On that page, enter the URL:

Drupal: https://yoursite.org/sites/all/modules/civicrm/extern/authorizeIPN.php

Joomla: https://yoursite.org/administrator/components/com_civicrm/civicrm/extern/authorizeIPN.php

WordPress: https://yoursite.org/wp-content/plugins/civicrm/civicrm/extern/authorizeIPN.php

If you fail to do this, one-time contributions will succeed normally, and recurring contributions will be processed successfully by Authorize.net, but the contribution status will be stuck at Pending."


What does "Reserved" indicate on Financial Types/Accounts?

'Reserved' on items like this in Civi indicates that it's something that you don't want to be updated or deleted, as it's an important item.  So non-admin people can't update or delete it - in this case you have to have the 'CiviContribute: access CiviContribute' permission to be able to update.  Groups and tags can be protected in a similar way.


Intermittent instances of duplicate participant rows created - is this a MySQL issue?

I have seen similar and it has always been traced to the user submitting the (in our case) membership form twice.

For some reason the final "Your membership has now been created" (or whatever it says) message has not been displayed, so they think it has failed and submit again.  Worse still they may get  "We cannot provide that at this time", which they interpret to mean the transaction has failed when really I thnk it is a timeout message for displaying that final "Done" message.

They should have received a confirmation email, but they have given the wrong adress, or it is caught up in a spam filter or delayed in transmission or ?

Why three times in one week? Perhaps there has been a heavier-than-usual load on the shared server leading to time-outs for that final message.


How do I find civicrm field names for import?

When importing memberships the type needs to match name of the type from the first column on the membership page (Administer => CiviMember => Membership Types).  So if you've defined a membership type of "Gold Member" then when importing, you need to put Gold Member in the column for membership type in the CVS.

Importing relationships is a bit trickier.  You can only import one type of relationship with each cvs file.

Have you looked at the on line book on importing.  It gives some good examples and tips on importing.

http://gitbook.civicrm.org/common-workflows/importing-data-into-civicrm.html


Dashlet problems can arise when you have the wrong settings in either

Cleanup Caches and Update Paths (Administer - System Settings - Cleanup Caches and Update Paths)
Resource URLs (Administer - System Settings - Resource URLs )

Differences can be as small as http vs https and with or without www.


API Get Contacts which are members of a certain group

You should then use another entity; GroupContact. Remember to add the Status=Added


Why am I getting error messages when trying to search for cases in CiviCase?

I began to examine the case types more closely. Some had matching Name and Title, others did not. Previously, you could change titles but not the Name as they were created in the program files and had to remain as they were.

In any case, next to the Name display there is a lock. I unlocked the lock and then saved. After doing this for each case type, everything began to work fine again.
I do not know why this worked nor if it will be permanent but for now, the program works fine.
(btw, I had upgraded to Civicrm 4.7.4 before doing this, but the upgrade did not solve the problems at all)


CiviEvent: selecting "Pay later" option causes the browser to show "are you sure you want to leave this site"? message

I believe you are you using Stripe payment processor extension as one of the payment gateway. There is a known issue reported by a user facing similar problem and have been issues for other users also. As mentioned in info.xml Stripe extension supports till 5.0 and might have not tested fully for 5.3. The only solution I would give is to upgrade stripe if you haven't to 5.0 or from https://lab.civicrm.org/extensions/stripe or wait until some one from Maintainer fixes the problem.

  You can try if its a stripe problem by disabling the extension and
  submitting the form.

Pradeep


Migrate CiviCRM from Joomla to Wordpress

In case it helps anyone, this is what I did:

Initial set-up:
- a working Joomla site, with Civicrm and Joomla tables in the same database
- a separate installation of Wordpress on the same server (articles and static content already imported from the Joomla site and redirects set up as required)

Aim: migrate the Joomla Civicrm tables and data to the Wordpress installation. In this case we chose to do it without moving the Civicrm tables, for simplicity.

Result: Wordpress tables and Civicrm tables are in two separate databases

Backup Joomla Civicrm tables or the whole database.
Make a note of:

Civicrm version number in Joomla Civicrm
what components and extensions you have installed in Joomla Civicrm
any user permissions in Joomla Civicrm (if you use permissions).

Install Civicrm in Wordpress (check version is same as Joomla Civicrm).
Install/remove Civicrm components to match the Joomla Civicrm.
Install any Civicrm extensions (check versions) to match Joomla Civicrm.
Export data (should be just one row) from Wordpress Civicrm table civicrm_uf_match. Disable foreign key checks just in case.
In the Joomla Civicrm database, make a copy of table civicrm_uf_match (in case you need to revert to Joomla).
In the Joomla Civicrm database, truncate the table civicrm_uf_match and import the data exported from Wordpress Civicrm table. Preferably disable foreigh key checks.
Edit the Wordpress civicrm.settings.php file (by default it's in wp-content/uploads). Change CIVICRM_UF_DSN and CIVICRM_DSN to point to the Joomla database.
I also edited the row 'userFrameworkUsersTableName' in the table civicrm_setting, to change joomla-table-prefix_users to wp-table-prefix_users, but I don't know if this is necessary.
You should now be able to access the 'old' Civicrm tables through Wordpress.
Civicrm->Administer->Users and permissions->Synchronise Users to Contacts

That's it. There's a bit of tidying up to do (see below), but at this stage you can still easily revert to Joomla if necessary by replacing the table civicrm_uf_match with the copy, and by reversing steps 9 and 10.

Tidy up: manually set up Civicrm user permissions to correspond to the old Joomla setup. Add any missing users. I had already used the FG Migrate Joomla to Wordpress plugin to migrate users and articles from Joomla.
Tidy up: drop all the Joomla tables (and any other non-civicrm tables) from the Joomla database.
Tidy up: drop the civicrm tables from the Wordpress database.

Comments/corrections welcome.


CiviEvent custom data missing on confirmation page

Yep, that is a proper bug.
CiviCRM has a public issue tracking system, it's on https://issues.civicrm.org.

This bug was already found, see https://issues.civicrm.org/jira/browse/CRM-17129
It's solved in 4.7

If you really need it on 4.6 you can also find the patch there and try it on a test version of your site. No guarantees, so make sure you are not doing it on your production site.

If you would find another bug in the future and it can not be found via a search on issues.civicrm.org, you can help the whole community by creating an issue over there.


How would you anonymise (or redact) private data for developer stage?

Some thoughts

Anonymizing data is hard work.

Eg: Would it be OK if your developer could de-anonymize your contacts by identifying from geolocated data? What about identifying by "metadata", if suburb data is left in? Does your developer need a DB with activities from inbound email left in? Has the situation improved in the decade since WIRED Why 'Anonymous' data sometimes isn't, or gotten worse? (It got worse!)

As you anticipated, generating real-looking fake data is much slower than garbage data, and that's one tradeoff. The other is that a CRM has data in places you might not think to look, so you are safer treating the data as "mostly anonymized" even when you're done. (See that Wired article!)

One approach, which may also speed up your testing, is to remove data unless you know it's needed (and only anonymize what you didn't already remove).

Not testing mailing reports? Truncate those huge mailing tables.
Not testing custom data? Great, that stuff is hard to anonymize! Drop it!
Not testing performance? Cull your test DB down to 500 contacts before anonymizing.

What you choose depends on how you need to use it, and what's OK for your testing. As you say, for debugging developers need a "near exact" copy of the live data ... but the more a test data set matches your site's profile, the less anonymous it will be.

Some starting points

anonymize extension (xurizaemon/org.civicrm.contrib.anonymize) aims to anonymize a DB. Offers two strategies: Faker (slow, generates real-looking names like "King, Lesley") and SQL (fast, generates names like "Tdfv, Fnedftd"). With recent updates, this is probably your best bet - but you'll be an early user, so please direct feedback to Github!
Michael McAndrew's POP library is the most featureful IMO, its goal seems to be to populate a site with fake data rather than anonymize an existing DB. See the blog post Populate your CiviCRM site with fake data. A similar example using nodejs is civi-charlatan.
anonymiser (systopia/de.systopia.anonymiser) is another CiviCRM anonymiser extension under recent development as of June 2018. I haven't checked this out (and Sean and I didn't find it when we started work on anonymizer).
redaction_tool (johnff/redaction_tool) is another tool to redact contact data (WIP)
civicrm-fake-data (on github) is a ruby script to replace existing data with fake data.
civicrmanonymisation is an SQL approach to anonymising a DB.
encryptDB.php was in CiviCRM core, but it was a poor starting point; MD5 is not encryption, so what changes it does make are reversible. It also targeted a limited number of fields, so your DB would still contain identifying data even if not deanonymised ...
civicrm_obfuscate_db.php (based on encryptDB.php above) is another script I wrote several years back. It generates a set of SQL commands to obfuscate your DB. It's SQL-based so relatively fast, generates incomprehensible names ("bggerns srrssbb"), and like all the above options is not a complete solution.
Another option would be to construct a test environment with test only data that simulates all situations you need to test, and keep expanding it as you identify new bugs. Let's be realistic, few CiviCRM sites have budget for that

To recap: none of the above are complete working solutions for what you want, and the solution you need depends on your context. But please do contribute your experiences to the community - most of the above have a Github issue queue you could submit improvements / feedback to!

One particular sticking point for several of the above seems to be CiviCRM's "Database Logging" tables, which by default use a format which complicates sanitisation. If you're testing or using any of the above, you should definitely review whether those tables are being de-identified completely in the process.


Can't print participant's image in name badge

Image URLs were the subject of a security release in CiviCRM 5.10.3.  My guess is that you've uncovered a bug related to this, especially if they printed in the past.

My recommendation would be to take your test site (I hope you have one!) and revert it to CiviCRM 5.10.2 to see if it resolves the issue.  If so, I would use the test site to print the badges, and report the bug on https://lab.civicrm.org, referencing this Stack Exchange question.


How do I set a default From email in CiviCRM to be used when assigning Activities?

You could try adding Dutyofficer@... to each volunteer supervisor's record as an Other e-mail address perhaps and making that the Primary address for each - temporarily. That might work. Each volunteer may have to choose to send using that Dutyofficer@... address.


Can you assign an owner to an event & can that person later run a report to see info about their events (in particular a list of attendees/wait list)?

We did a similar thing for a religious group who were hiring out their facilities and only wanted the hirer to see the event details/participants for their events. This was all achieved using ACL's and groups without any modifications to CiviCRM or extensions. They were a Drupal user too so I shouldn't imagine you would have any issues getting this functionality configured.


Manually add Membership Renewal Activity

You can use the API Explorer to do this (Support menu » Developer » APIv3 Explorer) but this isn't recommended unless you can test it first on a test site.  Select Activity as your entity and Create as your action, you should be able to pick any Activity Type from there.

It's also worth trying to figure out why the activity wasn't created to begin with, otherwise it may happen again.


Activity get API3 does not return case activity

Turns out there is a bug in the CiviMobile extension that is breaking this functionality. Disabling this extension fixes the problem.


Are you also using a newer CiviRules. It used to have its own top level menu, but its now under Administer.


The unsubscribe group provides a way for recipients to opt out of future mailings.  It isn't possible to send a mailing without this.

Please read the documentation for more information about how this works:  Mass mailings using CiviMail

Here's an extract that provides an overview:

  For mailings to search results, you are required to choose a Group
  from the Unsubscription Group dropdown menu. Here's why: Every mass
  mailing needs a way to track unsubscribe requests. A simple
  "unsubscribe" process is required by law in many countries and may
  help prevent your mailings from being treated as spam. Mailings sent
  to Groups have this capacity built-in. The next time a mass email is
  sent to that Group, anyone who has unsubscribed will not be included.
  However, mailings sent to search results do not have this built-in way
  to track who has unsubscribed, so you need to provide one.


Is it possible to create a progress bar/widget for a contribution page?

We published a small extension that makes it easy to display the progress bar directly on the same contribution page: contributeprogress.

The README.md has more details, but the short version is that once this extension is enabled, you can enable the widget and tweak a few colours. The widget will be displayed directly on the contribution page. Not all of the widget settings are relevant (for example, we do not display the widget title and text body, because it's often redundant with the page introduction text).

The default design is also a bit different that the widget preview, because we wanted something a bit more modern looking (and we wanted to propose something that works out of the box, without requiring a designer).

Credits: Roshani Kothari helped with the visual design picking some of the best elements of how progress bars are displayed on different websites, and Plastic Pollution Coalition helped to fund this work. We welcome feedback to refine and improve it further.


Unwanted user registrations in WordPress

The CiviCRM WordPress Member Sync plugin can help you do this. It will auto-create a WordPress user when a Membership has been successfully created via a Contribution page.


Deleted flag missing from activities returned from API when getting by contact id

I think the API should return the is_deleted! Having said so, if you want to make sure you have the latest version of the activity you could also use the is_current_revision=1?

Editing to add a suggestion in the comments also by @ErikH, which was the solution I went for:

  Not sure this is of any help but there is an extension for the
  CaseActivity API: civicrm.org/extensions/caseactivity-api


Uli, Welcome to CiviCRM stack exchange.

You can change the language by navigating to CiviCRM >> Administer >> Localization >> Languages, Currency, Locations

Change the default language to German.


You could look at this extension which lets you modify the layout of the Contact screen, and in doing so lets you pull in Dashlets from Reports
The problem i can see though it that there is no obvious report builder for Notes.
Depending on your CMS you could potentially do this via a CMS tool such as Views in Drupal, and then add the Block as a Dashlet on that Summary Layout tool.
I have not tested the above but it is one concept to rule in/out. Otherwise a small extension that modifies the templates involved may give you what you need but would require someone with developer skills. Good luck.


CiviEvent multiple participant registration does not save all field values to contact

I think I have found the solution to my problem. I'll post this here in case someone ever stumbles on the same problem.

When configuring the profile that you would like to use for the event registration form, be sure to not set the e-mail type (category) to "Billing". If set, the email will not be saved to the contact (no idea why).

All other e-mail categories seem to work fine (e.g. "Primary" or in my case "Main").


Creating other relationships for memberships on behalf of an organization

I can think of two approaches.

One - instead of hook_civicrm_post, use use hook_civicrm_postProcess, like you describe, to grab the Contact A id.

Two - use hook_civicrm_post on the Membership object rather than the Contribution object.  This should get you Contact B's id.  You can then use an API get to look up the most recently created Relationship for Contact B, which should be Contact A.  Then use an API create to create your new Relationship.

I'd probably go with option two, personally.


Is there an update safe way to disable smarty security in templates for CiviMail?

It was hard to finish reading all of your post due to the sirens that go off in my head whenever someone talks about disabling security settings.

Nevertheless, is there really something here that you can't do with a token or a hook? Please could you describe your use case a bit more?

In general, the update safe way is to overwrite core files in a custom templates extension - put it in sites/default/files/civicrm, next to extensions. (That path assumes Drupal, it'll be different in Joomla. You will need to update your resources folder in the Administer menu.

Once you've done that make sure to replicate the folder path in the templates folder. You will likely need to update this file on each CiviCRM update as part of the update procedure (if it changes in core that is).

Good luck!


In my case, this was caused by disabling a group of custom fields. Look for a blank spot in the "Which Data" column to show you which one it is. There are two ways to solve this:

Solution 1: Re-enable the custom data group.
or
Solution 2: Remove the offending ACL rule.


How can I change column width on printed reports

Depends whether its a one off report or something that you want to use regularly or for others to use without having to configure. The way I get reports looking how I want them is to export as CSV and then use Excel to set up the layout.


How do I run PHP Unit Tests w/ XDEBUG from within PHPStorm [on Mac]?

Here are the steps/complete set of screenshots of a configuration that now works for me:
1) from command line ensure you can run buildkit -> civibuild
$ civibuild create dmaster --type drupal-demo --civi-ver master --url http://dmaster.localhost --admin-user myuser --admin-pass mypass
2) from command line ensure you can run tests - that all is working properly
karins-macbook-pro:civicrm sysadmin$ pwd
/Applications/MAMP/htdocs/buildkit/build/dmaster/sites/all/modules/civicrm
$ cd /path/to/civicrm
$ env CIVICRM_UF=UnitTests phpunit4 ./tests/phpunit/CRM/AllTests.php

Installing dmastertes_7by9i schema

Installing dmastertes_7by9i database
PHPUnit 4.8.21 by Sebastian Bergmann and contributors.

...............................................

.......
^X^C

3) Ensure you can fire up a http://d47.localhost/ in a browser and debug/set breakpoints anywhere in PHPStorm / step through code in your Drupal/CiviCRM code base - e.g.

4. PHPStorm: Preferences -> Languages & Frameworks -> PHP:

5. PHPStorm: Preferences -> Project: Directories:

6. PHPStorm: Preferences -> Language & Frameworks -> PHP -> PHPUnit:

7. PHPStorm: Run -> Edit Configurations -> Default -> PHP Unit:

8. Run the test by right clicking on the test itself:

9. Et voila:

UPDATE JULY 2018
After updating buildkit:
cd ~/buildkit
git pull
./bin/civi-download-tools

I had to make some edits as some of the paths have changed. The edits I made are:
ad 4:

ad 5:

ad 7: note you want to Include parent environment variables

And we're up and running again:

UPDATE AUGUST 2020
After updating buildkit and PHPStorm -> here's the new screenshots!

Running a test via the command line also using phpunit5 now:
karins-MBP:civicrm sysadmin$ env CIVICRM_UF=UnitTests phpunit5 --filter testSubmitWithTax ./tests/phpunit/CRM/Member/Form/MembershipRenewalTest
Parsing schema description /Applications/MAMP/htdocs/buildkit/build/dmaster/web/sites/all/modules/civicrm/xml/schema/Schema.xml
Extracting database information
Extracting table information
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.
.                                                                   1 / 1 (100%)
Installing dmastercivi_rb7eb database
Time: 9.92 seconds, Memory: 58.50MB
OK (1 test, 18 assertions)


No anonymous user role in CiviCRM » Administer CiviCRM » Access Control WordPress Access Control

It seems that there were two moving parts here. The first was properly setting up the base page the second, and more complex part, was properly creating and naming the Anonymous User role. With the former properly in place, the latter seems to be the fix.

From what I can gather, it seems that on install Civi 5.10.4 did not create an anonymous user role. It was not listed in the Wordpress Access Control. The role needed to be created manually and it needed to be properly named. I used the User Role Editor plugin which gave good control. I now realize that I was not properly naming the new at first, calling it simply "anonymous" which did not work as hoped. Looking at the civi code provided clues to correctly naming "Anonymous User" as "anonymous_user". Creating that role and assigning the permissions seems to have resolved the issue.

See here
https://lab.civicrm.org/dev/wordpress/blob/master/includes/civicrm.users.php#L253

The correct permissions are here:
https://lab.civicrm.org/dev/wordpress/blob/master/includes/civicrm.users.php#L272

Thanks to the two people who provided clues. Sorry if I didn't properly follow custom here, I'm very new and getting the hang of things. I'll try to watch and learn.


How can I find membership totals on a month by month basis eg. total members end of Jan, Feb ect so i can then analyse the increase month by month?

I would firstly suggest checking out the Membership Churn extension


Welcome to SE! Currently Membership is not supported in Form Builder. A prerequisite for Form Builder is that the entity is supported in APIv4 - and it isn't yet.  See https://lab.civicrm.org/dev/core/-/issues/2023


webform event registration - no receipts from contribution page?

To issue civicrm native event participant receipts when using webform civicrm module you must enable receipting for both the Contribution page as well as the Event page (in your CiviCRM) - for all Events; And yes that will be a number of receipts.

If multiple receipts is a problem - you can  use webform native receipting + use CiviRules and custom (last) contribution tokens - to send a transaction rceipt;

If you’d like to try that - Register for CiviCamp Calgary - it's a form where orgs can sign up 3 participants for up to 4 events/each in on one page;

Added: webform civicrm works with CiviCRM via it's API: from adding donations to memberships and sign up for multiple events all in one form and using sendConfirmation api to send out the native CiviCRM event receipts; CiviCRM gets a little confused we're able to get all that in one payment [natively that's not possible] - reason why I tend to dispatch my own receipts with Rules/Message templates and some custom tokens;


In Drupal 7 at /admin/appearance you can specify what Drupal theme to use for front-facing civicrm pages, and separately which one to use for back-end civicrm interface.

Hope that helps. Not sure I quite understood your question but thought this might be what you need.


allow public access to entityRef field contact lookup

The Access AJAX API permission was added in CRM-8840 to get around the firewall of sorts that surrounds the API unless you have Access CiviCRM.  If you don't have either, you'll get blocked trying any Javascript call to the API, regardless of your other permissions (whether granted via hook, ACLs, or CMS).

As best I know (and I just did a quick test on a dummy site), all of the APIs require Access CiviCRM or Administer CiviCRM even beside the blanket requirement for Access CiviCRM or Access AJAX API.  While adding Access AJAX API will get your foot in the proverbial door, you won't have the ability to do anything.  You'll want to write a hook to change the permissions in the specific cases that you need to run an API call.

So yes, you're on the right track, and no, there shouldn't be any immediate negative consequences of adding Access AJAX API.  However, since it removes the outer layer of security against the API, you'll just need to be sure everything's configured tightly.


I found my problem. civicrm/greeter didn't load because I had a typo (extentions as opposed to extensions) in my Extension Resource URL. Once I fixed that, it all fell into place.


How to create a new contact type other than "Individual", "Household", or "Organization"?

it may be also worth familiarising yourself with what https://github.com/civicrm/org.civicrm.contactlayout can do in terms of changing the configuration of the Summary Screen. It allows you option of creating multiple layouts but i don't recall if they can be contact sub-type specific but am pretty sure it does

ah yes

  Managing Multiple Layouts
  The "Show" option can specify a contact type, e.g. if a layout is specifically designed for Organization contacts rather than Individuals.


Wordpress Civicrm doesn't seem to generate invoice from other user roles except administrator

I found the problem here. actually there is some issue with CiviCRM Wordpress codebase because its always failing to get wordpress user id.

Below checkDownloadInvoice function using drupal global $user; to get logged in user id for wordpress as well.

CRM_Core_Permission::checkDownloadInvoice

public static function checkDownloadInvoice() {
    global $user;
    $cid = CRM_Core_BAO_UFMatch::getContactId($user->uid);
    if (CRM_Core_Permission::check('access CiviContribute') ||
      (CRM_Core_Permission::check('view my invoices') && $_GET['cid'] == $cid)
    ) {
      return TRUE;
    }
    return FALSE;
  }

for WordPress It should be changed to

public static function checkDownloadInvoice() {
    $uid = get_current_user_id();//changed for WordPress
    $cid = CRM_Core_BAO_UFMatch::getContactId($uid);//changed for WordPress
    if (CRM_Core_Permission::check('access CiviContribute') ||
      (CRM_Core_Permission::check('view my invoices') && $_GET['cid'] == $cid)
    ) {
      return TRUE;
    }
    return FALSE;
  }

Hope it helps someone in future. :)


You need to implement something like below

$result = civicrm_api3('Contact', 'create', [
  'first_name' => "first name",
  'last_name' => "last name",
  'email' => "pradeep@test.com",
  'external_identifier' => "S-123456",
  'options' => ['match' => "external_identifier"],
]);

Make sure you pass external_identifier in api params.

So basically above code snippet will first check if external_identifier "S-123456" is present in database and get its id if present and update the contact, if not present then new contact will be created.

HTH

Pradeep


Contribute Page with a Profile in Edit Mode - Not Create Mode?

You can do this by adding &cid=0 to the end of the donation page URL.  E.g. if your page URL is:
http://example.com/civicrm/contribute/transact?reset=1&id=1

Instead use:
http://example.com/civicrm/contribute/transact?reset=1&id=1&cid=0


How can I sort groups by the date the individual was added to the group?

For a standard group there is no direct way to do that through the UI as the group(s) someone is in are stored in a single field.

If you are using smart groups, then you may be able to use the underlying criteria for the group to work out the joining order (eg, display and sort by membership join date if your smart group in based on a particular membership type). However that won't be ideal or even appropriate in many situations.


Civimail sparkpost extension stats / is my mail being delivered?

Found the answer, thanks @MatthewWire for the hint.  Emails were going out using the "backup mailer" defined at civicrm/admin/setting/smtp because we had the wrong API key installed for sparkpost.


System Status reports incorrect version number after update stall

If the upgrade stalled out partway through, you'd get a message that you were partially upgraded - so my guess is that the only thing that didn't happen was that version-info-cache.json didn't get deleted.

That file will update on its own after three days, but you can also find it and delete it.  You may want to check the permissions/ownership on it, in case it's owned by the wrong user, and that caused the upgrade to hang.  That would indicate a deeper issue to deal with.


Mailing - "Send Test" button not a button

They are disabled. Notice that the "Next" button is also disabled. This means that you have not completed all required fields for your mailing. Please review that you have:

A subject
Recipients
Content
Required 'opt out' tokens


Is there a way to see CiviMail logs through the interface (v. 4.6.36.)

If you look under Administer - System Settings - Extensions and click on the Add New tab you'll see one called CiviCRM Log Viewer. Install that and then admins will be able to view the logs using the user interface.
Since you're on an old version of Civi you may need to download an older version of the extension from https://civicrm.org/extensions/civicrm-log-viewer, but if you don't have access to the file system then I'm not sure how you'd install it. Tricky.


import mapping dont save for custom fields on contact subtypes

I have submitted a PR for this issue. Can you please try applying patch from here?

Thanks

Pradeep


Can I tell if a contact has used their checksum to view/change their info?

We set up a group specifically to track who has completed the profile and use the profile setting option to auto-add them to this group.

This way we have a group of everyone who completed the profile that we can exclude from future mailings prompting them to complete again.

This obviously won't track if someone has just visited the page, but for us, we're only interested in submissions.


How do I correct the fault causing "file_exists(): open_basedir restriction in effect"

Take a look under Administer/System Settings/Directories. It sounds like your directory for Images may be incorrect, or not yet defined.


Problem with PayPal IPNs not going through

Purportedly resolved in an update pushed by CiviCRM Admin Utilities 0.8 released on 20 November 2020 (https://lab.civicrm.org/dev/core/-/issues/1931). Payments have been closing for us fine since applying the patch - until today :-. We've had two transactions that wrote the incorrect IPN return URL and two right next to them that wrote the correct IPN return. Going to hit up the lab thread and see if others have run into this problem.


How do I add in a new Activity Type for CiviCampaign?

You cannot do that anymore through the user interface. In previous versions of CiviCRM you could define the activity for contacts and cases, or cases.

As Erik said, any activity could be linked to a campaign, there is no restriction on that. So there is no need to to define whether you want use an activity only in campaigns.


It says 5.7 is a security release - should I upgrade?

No worries - from this popup I can tell you are on the latest CiviCRM security release -> 5.3.1 - the Extended Security release is not more secure than 5.3.1


Account Creation Form not showing In Contribution Page

Thanks but i have resolved this. The problem was that i did not set that anyone can register in wordpress –


Pay Now Button - How do you change button text?

Since "Pay Now" is not the default for CiviCRM I would check to see if Word Replacements has been used to rewrite this. Admin > Customise > Word Replacements ie ../civicrm/admin/options/wordreplacements?reset=1

If it is not that, then use your browser Inspect option to figure if you have a customised template


To merge 2 contact records, select both contacts from a list then select the action 'Merge contacts' from the 'Actions' drop down.  In the resulting screen you will see there are several options that you can check/uncheck - one of the most useful ones is the option near the top of the screen to 'flip' the 2 contacts - the left hand one is regarded as the duplicate.  Also, the deleted record goes in the trash so if you make a mistake you can always retrieve it.


Yes, you could use tokens in sms messages.

Be aware an issue with the required character length on sms, and the fact that tokens would represent different character lengths.


How to upload multiple files to be downloaded by contacts in frontend

see https://book.civicrm.org/user/current/organising-your-data/custom-fields/
under Multiple record fieldsets. you can set (only for contacts) multiple field records. aftewards you can set how the content should be displayed. i think you can do that with files too.


AFAIK, CiviCRM can’t do this natively, as you can see in that question. I’m facing the same problem, I will try to solve it by doing an extension.

Update (2017-11-20)

I’ve started to work on a patch for CiviCRM. The work-in-progress PR is available here. Comments are welcome ;)

Olivier;


Word replacement not working in some areas

Word replacement for County works on the demo - I renamed it to County/rename.

http://joomla.demo.civicrm.org/administrator/?option=com_civicrm&task=civicrm/contact/add&reset=1&ct=Individual

State/Province is a default field, I'm not sure why you're not using that, instead of renaming. Look at your address settings, link on demo: http://joomla.demo.civicrm.org/administrator/?option=com_civicrm&task=civicrm/admin/setting/preferences/address&reset=1


How to retrieve custom field image files?

Without more context about what the API call you're making is, I can't say why it just returns a number.  Here's what happens when I call the API from my command line to get the results of the attachment with an ID of 1:

» cv api attachment.get id=1
{
    "is_error": 0,
    "version": 3,
    "count": 1,
    "id": 1,
    "values": {
        "1": {
            "id": "1",
            "name": "Project_Properties_dmaster_677.png",
            "mime_type": "image/png",
            "description": "",
            "upload_date": "2018-11-27 22:19:47",
            "entity_table": "civicrm_activity",
            "entity_id": "628",
            "icon": "fa-file-image-o",
            "created_id": "",
            "url": "http://dmaster.localhost/civicrm/file?reset=1&id=1&eid=628",
            "path": "/home/jon/local/civicrm-buildkit/build/dmaster/sites/default/files/civicrm/custom//Project_Properties_dmaster_677_ab277eebda5f50aeb9910018ab356f34.png"
        }
    }
}

It returns the URL property which I can output in an HTML file within an <img> tag to display the image on a web page.


How do I automatically make roles inactive when case is resolved

Well after further testing, it appears that the case roles are end-dating the day the case is resolved.

I'm not sure where our issues were cropping up, but this is a fairly new install with lots of data being imported which is where I suspect the issues arose.

Sorry for the red herring.


Version 7.x-4.7.24 I need to send letters to contributors that gives them detailed information on each donation they have made for the year

You don't need an extension to do end of year receipts - though there are some that can help.

If you're based in Canada, you can generate a CRS-compliant receipt with CDN Tax Receipts, which automates this whole process for you.  I believe a German equivalent exists as well.

Otherwise, there are instructions in the documentation called grouped contribution thank-you letters.  That will get you a table of contributions.

Note that it seems like some of the display options are a little buggy; I just did some testing and found "horizontal table" to be the one that displayed best.  If you really need to get the formatting perfect, you can ask your sysadmin to enable Smarty processing for mail templates.  This is explained in the docs.

Note that despite the documentation, you do NOT need the Smarty processing if the only thing you need is a total.  Instead you can use the Summary Fields extension.  It will give you a token called "Total Contributions this Year".  This is the easiest way to add a total to the receipt.

Finally - I can't speak to why you're not seeing a thank-you action.  It should appear per my first screenshot below.  Please post a new question (with a screenshot) if you're still having trouble with that.

"


Is there a way to update the contact.addressee field in batches?

There are several solutions.  I'll go from least to most work - though the "least work" solutions generally need a level of expertise that the "most work" solutions don't.

You can edit your max_execution_time in php.ini.
The default execution time when running from the command line is unlimited.  So you could run cv api Job.update_greeting or the equivalent using drush or wp-cli if you don't have cv installed.
Greetings are updated whenever a record is updated.  An easy way to batch update records is to import a list of all the contact IDs you want to update with no other info.  This will force an update and thus a greeting update.
You can delete all your addressee values that need updating (or all of them!) through MySQL/phpMyAdmin, then use "Update Greetings" with a limit of 2500 and set force equal to 0.  With force equal to zero, only contacts without addressees will be updated, so you won't do the same 2500 every time.


Security alert - how to manage the download

Follow the instructions at http://wiki.civicrm.org/confluence/display/CRMDOC/Upgrading+CiviCRM+for+Drupal+7. If you have questions about the documentation, please post a separate question back here.


CiviCRM can have issues resolving symlinks if they exist in the path to CiviCRM codebase or resources (mentioned also here). Either avoid symlinks in your filesystem layout, or supply CiviCRM with the "real" path for the directory.


Does CiviVolunteer need volunteer sub-contact type?

I know this is an old question, but it doesn't have an answer.

The "Volunteer" sub-contact type ships with CiviCRM core and is, for the most part, unrelated to CiviVolunteer. The "Volunteer Information" custom field set ships with CiviVolunteer merely as a demonstration of the "slider" functionality. That it is configured as a "Volunteer" rather than an "Individual" field set is arbitrary.


Compatibility problem with Joomla 3.8.7 and Civicrm 5.0.1 that affects Cron

I think you are still likely to run into problems on Windows as Aidan mentioned but to give yourself the best chance:

use CiviCRM 5.1.0, which has additional changes to resolve cli.php problems on Joomla 3.8
use cli.php not cron.php. cron.php still doesn't work in some environments

My recollection of PHP and Apache on Windows is that paths with / work fine so you don't need to replace with \ if that's what you meant when you said you changed civicrm_root slashes.

As you saw in the initial error, the path C:\Apache24\htdocs\joomla\administrator\components\com_civicrm\civicrm\administrator\includes\defines.php is incorrect. It should be looking in C:\Apache24\htdocs\joomla\administrator\includes\defines.php.

In CRM\Utils\System\Joomla.php, look in getBasePath(), around line 532, for this line:

$joomlaPath = explode('/administrator', $civicrm_root);

My guess is that the forward slash is not being matched in the Windows path so try changing it to:

$joomlaPath = explode(DIRECTORY_SEPARATOR . 'administrator', $civicrm_root);

UPDATE 22 August 2018: The above change to getBasePath() will be in CiviCRM 5.6


Thank you Demerit. I misunderstood how tokens work and was trying to use system workflow tokens in a user template.


What are ways to make CiviCRM more user-friendly for people who prefer spreadsheets?

We end up building a lot of Views - and would love to be able to improve EditableViews so that it works more like a spreadsheet which will require ensuring that Labels rather than Values are displayed


Automatically send unpaid contribution reminder

Take a look at Scheduled reminders rather than CiviMail.


Difference using primary vs main email address

A contact can have several emails. To distinguish them, each has a category: is this her professional email, her private one...?

And no matter how many emails a contact has, civi needs to know which one to use when I want to mail the contact: it is the primary one. I might prefer I receive emails on my private address, but you might prefer your professional one.

Now it's becoming more confusing:

The categories of emails are shared with the categories (Locations) of physical addresses, so you have a "home" email address and an "work" one. I use them as private and professional emails respectively... and an extra category "main" (meant to be for the main office location) that is indeed confusing (I tend to hide this category)... and an extra "billing" email address that will be automatically created if the contact makes a donation

Even more confusing?

civimail can use a different "primary" address than the "primary" one (the one flagged "bulk email"), so you could receive the event registration confirmation on your primary email, but the newsletter on your "bulk" email.

Even more confusing?

A contact can have several bulk emails, so you could receive the newsletter to both your private and professional email

Civi is super flexible and can deal with a lot of different workflows from a lot of different organisations, but sometimes, the defaults are a bit confusing indeed.

I'd suggest you to look at what email (actually Location) categories you need, and disable the ones you don't need (eg. the "main" one), it's under /civicrm/admin/locationType?reset=1

Keep in mind that that list is shared between the physical addresses and the email ones.


Reasons for restricting changing contribution statusses?

The state changes from one status to another prompt the creation of accounting transactions that reflect that flow. I don't think there is a definiton of what it means from an accounting perspective to implement some of the state transitions you mention. If that is agreed on then we could allow those transitions. The main thing is that we need to maintain the integrity of the financial information in several tables in the database.

FWIW, there is a GSoC project this summer that may fill in more refund functionality possibly along the lines of the cheque writing done by the grant programs extension, though it would likely also use refunds through online payment processors if they and their plugins support refunds.


Civi does not email to some contacts (Not CiviMail, just mail)

Thanks to michaelmcandrew's comment I investigated deeper and found the reason being a bug. Created issue https://issues.civicrm.org/jira/browse/CRM-19876 which is really weird but contains a somehow simple patch (https://github.com/civicrm/civicrm-core/pull/9676).


Bug?: Repeat activities won't accept edits after 4.7.31 upgrade

We're still having the issue with 5.4.2 and I've made a better thread here since my observations may not have been expressed clearly.

After creating/saving an activity, re-opening it to edit won't allow links and drop-downs to be changed

Suggest future discussion occur at that link and this be closed.


Incorrect Resource URL warning but menu arrows are present

I'm starting to regret having written this check!

So far, I have found four scenarios that result in this false positive:

Your php.ini has allow_url_fopen set to false.  This should be corrected, since it will subtly break other parts of CiviCRM (e.g. extension download, update checks).
Your site is behind a .htpasswd, and thus needs HTTP authentication to access files.
You're using WordPress, which has some much discussed issues regarding its ability to detect the directory its in when there's a symlink.  Follow the third link ("issues") for a discussion of how to fix this until the WordPress-Civi wizards resolve this once and for all.
Your server's firewall is configured to reject HTTP requests to itself.  I don't know a way to test for this other than to SSH in and run netcat, something like nc -v <my ip address> 80.  You want a connection that's "open" rather than "refused".  Note that using localhost instead of the local IP address in that netcat command may yield a different result.


How to create a report for members with no email address

Use Search Builder:

Go to Search menu » Search Builder.
Set your Search terms to "Contacts" "Email" "Primary" "Is Empty" (see screenshot).
Press Search.


Civimail produces saving error when sending test

I went in and submitted a test mailing that I wasn't able to preview. This caused the cronjob to spit out the error:

Fatal error:  Call to undefined function mb_strtoupper() in /home/ourbase/public_html/sites/all/modules/civicrm/packages/html2text/rcube_html2text.php on line 703

The key there is the function mb_strtoupper() [that's "string to upper"]. To fix this, you need to enable "mbstring" on your php/apache build. In my case, this was done through the WHM interface as follows:

Go to EasyApache
Customize the current profile
On Step 3 (?) click on "Exhaustive Options"
Check the checkbox for MBString
Build & Compile (takes a while), and wait until it's done.

If you don't have access to that solution, consider one of these lesser temporary solutions while you wait for someone to resolve it:
1. Remove all  and/or  tags or...
2. Manually put text in the plain text box


How to set input mask for a custom field

Not in the UI afaik. I would use the validateForm hook in an extension to validate the number of digits? Documentation on the hook is here: https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_validateForm/


Drupal CiviCRM Entity in Rules: How to loop over all members of a group?

You can use the Views Rules module: https://www.drupal.org/project/views_rules

This will provide a Views Loop: from the project page: "A view loop is similar to a regular Rules loop, but allows looping over rows of view results."

So enable that module, and then create a view that lists contacts that are in the group you desire.

Some basic instructions from the Views Rules project page:

Install the module (and make sure Rules UI and Views UI are both enabled)
Configured Views
    Add a view (with some fields)
    Add a "Rules" display
    Configure row variables
    Save
Configure Rules
    Add a rule
    Add the "Collect view result rows" action or add a view loop
    Select the "Rules" display
    Configure the parameters and variable names
    [Do what you want with the newly available variables]


Can a New Member automatically become a Drupal User with defined Role?

Daniel - have you looked at the CiviMember Roles Sync module which pretty much delivers this as you want. IE when someone joins and has a Drupal user then when they log in Drupal checks their Civi Membership status and gives them a role based on that.

The Rules approach would also work, and is how we are planning on doing this for Drupal 8, funds permitting, but I don't think people have used that approach in D7 since the module gives you the solution out of the box, unless i am missing a nuance in your use case.

Some documentation about above here


How can I limit the number of participant roles?

You should use CiviVolunteer to manage and track volunteers for your event. Your requirement works our of the box with CiviVolunteer

https://civicrm.org/extensions/civivolunteer


I'm going to bet this is something to do with the civimobile api extension, even though you mentioned you tried disabling. That's the only place I can see the phrase "Something wrong with getting"

https://lab.civicrm.org/extensions/civimobileapi/blob/4.2.1/CRM/CiviMobileAPI/ApiWrapper/EntityTag/Get.php


Firing a hook on smart group status change?

I think we have a client where a postcode look up (on Contact save) triggers creation of a Relationship being made. The Relationship connects the Individual to the Regional Group (contact of type Org'n). You could then use our Relationships as ACL extension to run your 'access rules' from. I will ping JoAnne to comment further if she can.

From JoAnne:  I'll add to this rather than comment.

There is a table in the db linking every postcode/suburb combination to one of the 200+ organisations of type "local group".

The initial relationship is created when a person signs up for a specified membership type.

With any change in a member's primary address, the relationship is re-checked. If warranted, that relationship is ended and a new one created with the new local group.


You should replace 5.29 in the instructions with the current version. Right now it's 5.35.
And I thought the docs were updated for this but for drupal 9 you also need to add "minimum-stability": "dev" into composer.json.
Also don't run composer as the root user.


CiviCRM content displays in WordPress in two separate ways.  The first is through shortcodes: when you insert a CiviCRM shortcode in a page, CiviCRM renders the corresponding form.

CiviCRM still needs to render pages even if nobody has entered shortcodes for them, so the second method gives long URLs such as http://yoursite.org/civicrm?page=CiviCRM&q=civicrm/contribute/transact&reset=1&id=1  These URLs actually take the page that's before the question mark and replace all the content.  It used to be (4.5.x and earlier) that this would be your site's home page by default, but now it defaults to a page titled "CiviCRM" with the slug civicrm.

I think this is what's generating the page title you're seeing: "CiviCRM" is the title of the base page, and "civiCRM_test — Wordpress" is your site name.  Set the site name in your WordPress settings, and set the base page title by visiting the page you get when you edit the URL to remove the question mark and everything after it.  Change the page title, and that should change it for all CiviCRM pages with the long URL style.


Missing mailing list subscription check box in Chrome, and Edge

This sounds like a JavaScript issue.  Please see the Javascript Troubleshooting Guide for CiviCRM.  If that doesn't solve your problem, edit your question to indicate what you've tried and what information you gathered from following the steps in the guide.

You may also want to try one of the default WordPress themes and see if the problem persists.  If you try this, please update the question to indicate what the results were.


By "complete", I'm assuming you are talking about the status of the activity?

You will need to develop an extension to implement your specific workflow, as there isn't anything in civi preventing having multiple activities with various status and your workflow seems to be specific enough that it's unlikely someone else has done and shared something similar.

The safest point is probably as a pre hook, ie before saving an activity, check that the required other activities with the expected status are there.

However, it this would be a sub-optimal user experience, as a user might start creating the activity without realising it will not be possible to save (because of the pre-hook).

So you should probably alter the display of the contact (as it seems to be the main path to create a new activity) and add a message/change color/add a warning message "this contact is reserved because activity bla has the status..."

Please do share if you implement it, it might help others, at least as inspiration and starting point.


Migrating to Pantheon: How to make CiviMail editor insert images with non-relative refs?

When CiviCRM is on Pantheon, it needs a special set of config in the civicrm.settings.php which defines various variables to make CiviCRM work in cloud hosting.

I had to add this variable to that list:

$civicrm_setting['URL Preferences']['imageUploadURL'] = 'http://www.mysite.com/sites/default/files/civicrm/persist/contribute/';

Then I had to make sure that the "system settings"->"Directories" was pointing to the same folder. Then it worked!