JoAnne -

It seems to me that the most likely scenario for adding/tagging attachments is in the creation of activities - I tested adding a tag for attachments in the demo site, and when I created a meeting activity and opened up the attachment section, the tag field was there: http://screencast.com/t/fNc98uR6Uq

What puzzles me, however, is that there is no apparent way to search for attachments or activities/contacts with attachments (which is different from searching within the attachments, which would be an entirely different ballgame), other than Search Builder (which is somewhat opaque for a lot of the Civi users with whom I work).  I see from this message that others have asked the same question - until the attachment tags are searchable, the usability is a bit limited IMHO.

Hope this helps,
Lesley


More of a thought than an answer (and really off the top of my head) - try using the Merge Contacts option, have the person with existing Relationships on the left, newbie on the right, untick all boxes other than Relationships, Merge.

Revisit your 'deleted' contact and undelete them - does it restore the relationships to them (I don't think so). Does this achieve what you need? Pls report back.


UI glitches and "Invalid Classname" error when editing summary fields via AJAX

Turned out to be the fault of an extension called SlickNav. Once that was disabled it worked. I'll post a bug against the extension.


CiviCRM 5.x is storing lot of empty records while sign petition

I have a same pb of "blank" contacts when a petition is signed (Form/Profile hosted on an other website).
Drupal / civicrm V4.7.31


How Can I send mailing with AWS SES API instead of SMTP?

This extension may be of interest, but it doesn't allow sending via API: https://github.com/mecachisenros/aws
I think you would need to write your own code to integrate with the SES API. But AWS works perfectly fine via SMTP.


How to install translated database strings?

I managed to install CiviCRM in Joomla with the database translated strings, but I had to replace the civicrm_data.mysql file with the content of the civicrm_data.fr_CA.mysql file.

Here is what I did, step by step, in case someone else is trying to accomplish the same thing:

Uncompressed both civicrm-4.7.2-joomla.zip and civicrm-4.7.2-l10n.tar.gz in /tmp
Unzipped /tmp/com_civicrm/admin/civicrm.zip and deleted the zip file.
Copied /tmp/civicrm/l10n/fr_CA/LC_MESSAGES/civicrm.mo into a newly created /tmp/com_civicrm/admin/civicrm/l10n/fr_CA/LC_MESSAGES/ directory.
Copied /tmp/civicrm/sql/civicrm_data.fr_CA.mysql as /tmp/com_civicrm/admin/civicrm/sql/civicrm_data.mysql (overwriting the original file)
Zipped directory /tmp/com_civicrm/admin/civicrm as /tmp/com_civicrm/admin/civicrm.zip and deleted the directory.
Pointed Joomla to install from the /tmp/com_civicrm directory.
Once installed, from Joomla's control panel, went to CiviCRM - Administer - Localization - Languages and changed the default language to français (Canada).

That's it!  CiviCRM en français !  I don't know if there is an easier way, but that's the only solution I found working.


Registration Form (profile) with selected groups only?

Visibility: Public Pages will be listed; Check your group Admin screen at:

civicrm/group?reset=1

If you're also seeing Groups in your Profile select that are listed as Visibility: User and User Admin Only - do let us know.

Added: if you don't want all your Groups that are configured Public Pages to be listed then try this:

create a custom field
add the custom field to the profile
create a smart group - that has your custom field in the search criteria


greater-than-or-equal-to value in search builder is not displaying

I was able to replicate this bug on Civi 5.3.1 but not on the latest version (5.6.1).  An upgrade should take care of this for you.


CiviCRM profile "used for" options are not allowing a CiviContribute option on wordpress

Yeah it seems a little weird. It seems to get those options to show you need to first create a contribution page and check the options related to those. So:

For soft_credit, you need to have an existing contribution page with the Honoree Section Enabled checked.

For on_behalf, you need to have an existing contribution page with the Allow individuals to contribute and / or signup for membership on behalf of an organization checked.

For civicontribute to show, you need to have an existing contribution page where the profiles tab has already been set to use a profile.

But in any case they seem to be just visual indicators that indicate that you have a page that uses it.


Number format with SMS Clickatell provider

I just faced (and fixed) this problem three days ago for a client by patching the Clickatell extension to prepend the "1" where it doesn't already exist.

In short - someone already wrote this patch, but it only works if you don't have contacts you want to text outside the US and UK.  The patch is referenced on CRM-14160 - or just find it here.

If you're not a developer, but you feel comfortable installing an extension from a zip file, I just made a Github repo here with the patched extension.  That said - I don't want to post it as the "new" Clickatell extension, because it makes some country-specific assumptions.

You can see that I updated the CRM-14160 ticket with what I think is the ultimate solution - which is for CiviCRM to know the country code associated with each country.  Then the Clickatell extension could check for whether it's present or not - and if not, then prepend it.


Help needed: Need to run reports to find information on number of members during a specific year

UPDATE: also try the nz.co.fuzion.historicmembershipdata extension
Try the Membership Churn extension otherwise
1/ I think you can get via
Adv Search
Set Start Date to < Feb 26 2019
Set End Date to > Feb 26 2019
2/ might be a bit trickier but I suggest using Search Builder and something like
Set Start Date > Jan 1 2019 to Dec 31 2019
OR
Set End Date to > Jan 1 2019 to Dec 31 2019
EDIT: you may need to also exclude Memberships that are 'old' ones which you may be able to do via Memb Status


What are best practices for bad postal addresses?

I think a location type of something like "Rejected" will give you great flexibility. If you want to get a bit more elaborate, combine the location type with a custom field that tracks the reason for nondelivery.

By using a location type, it simplifies searching, exporting, and importing when you want to run those addresses through NCOA or have a user work through a spreadsheet of bad addresses. When good ones are found and it's time to import, use the API csv Import GUI extension so that you can overwrite the address records, change their location type, and wipe the custom field in one pass.


Personal Campaign Page image is not showing

Probably you will need to give 'CiviCRM: access uploaded files' for anonymous user. But this is dangerous to provide access to files for anonymous user.


How can I search for all employees of several (a limited set of) employers

You could tag the Employers, then search for them, but set 'display results as' (top right of Adv Search pre-4.6, bottom of first section in 4.6) to 'show as related contacts' which you would set to 'employees of'


Can we print mailing lables from CiviCRM?

Search for the contacts you want to print the labels for
Select the contacts
Go to Actions / Mailing labels - print (see attachment)


I had no problem with the domain change that I need to carry by using the following method. Would recommend to you too.

Go to Joomla > Add-ons > Manage.
Disable the CiviCRM add-in.
Install the Akeeba plug-in to make a backup. Create a backup.
Install the new server with Akeeba Kickstart.
Update the current rows 76, 109, 181, 183, 219 in public_html/administrator/components/com_civicrm/civicrm.settings.php and public_html/components/com_civicrm/civicrm.settings.php
Go to Joomla > Add-ons > Manage.
Enable the CiviCRM plug-in.


CiviMail and Smart Groups: when does CiviCRM identify the actual list of email recipients?

CiviMail does this at the time when the mailing is created, i.e. when the groups are chosen etc.

The primary reason behind this is to account for permissioning and what contacts to send the mailing to. Doing so at mailing creation time is relatively easy, since we know the contact id of the user, and hence know what contacts the user has permission to send mail to.

It gets a lot more complicated (but not impossible) to do this during mail delivery, primarily because the cron job will need to evaluate the groups in the context of the person who created the mailing


How do I send automatic Thank You emails for different donation amounts and donation types?

I've not tried this, but the Smarty mail template allows for conditional statements. So you maybe could create one email with different outputs,

Some older tutorials:

https://wiki.civicrm.org/confluence/display/CRMDOC42/Smarty+in+mail+templates
https://wiki.civicrm.org/confluence/pages/viewpage.action?pageId=295109201

Another option could be to use CiviRules, which triggers actions at different points, e.g. send mail y when contribution of z amount is made:

https://docs.civicrm.org/civirules/en/latest/
https://civicrm.org/extensions/civirules


Database scheme corrupt - foreign key relationships are missing in mysql

Having spoken to our hosting experts we are going to rebuild foreign keys. Will update you shortly.

thanks,
Jon-man


Can I use localhost:7979 for amp test and one or more different builds created with buildkit?

So I figured out the real problem is that I created a build using mysql_ram_disk instead of mysql_dsn in amp config- meaning the mysql database is in RAM, and of course disappears when I turn off my laptop :) .


You can use "crm-popup" class. you just need to add this class to your a tag. just it!

Just like this:

...

For more information please follow the Documentation: https://docs.civicrm.org/dev/en/latest/framework/ajax/


Why is WP displaying a shortcode to end users upon profile submission?

In my experience with using profiles on Wordpress sites, where the profile is presented via a shortcode, is that when the form is submitted the user does not get presented with the default text statement alluded to in the help message about their contact information having been submitted, but is instead just presented with the page again. Worse than this, the profile isn't shown to the user, but they see the shortcode in all its ugly unhelpfulness.
The workaround that I've implemented is to ensure in the profile settings that a redirect URL is set, pointing to a nice thank-you page.


I manage one WordPress multisite instance, so I looked how cron is configured.

We use wp-cli with the CiviCRM extension to trigger cron.

Cron jobs look like:

11,26,41,56 * * * * /full/path/to/wp-cli --user=civicrmcron --url=https://sitenumber7.org/ --require=/full/path/to/wp-cli/civicrm.php --path=/path/to/wordpress/webroot civicrm api --timezone=America/New_York job.execute auth=0 > /dev/null
12,27,42,57 * * * * /full/path/to/wp-cli --user=civicrmcron --url=https://sitenumber8.org/ --require=/full/path/to/wp-cli/civicrm.php --path=/path/to/wordpress/webroot civicrm api --timezone=America/Los_Angeles job.execute auth=0 > /dev/null

Note that if your multisite instances are in a subdirectory, rather than a different domain, you can set the URL accordingly and it still works.

Also note: Some WordPress plugins can interfere with cron!  That's not multi-site specific, but you can exclude plugins from loading with wp-cli either by specifying on the command line or creating a config file.


How do I set up a "Mailing List Only" option in CiviCRM 5.29.1?

Welcome to StackExhcange MABB. The Documentation of CiviCRM should provide all the information you need to set up a mailing subscription page: https://docs.civicrm.org/user/en/latest/email/set-up/.


Solved by updating my npm install using

install npm -g


Good tools for building a call for proposals in Civi?

Zak,  I agree with Peter's comment. If you are using Drupal, you can use the CiviCRM Drupal webforms integrations.  There were a few good examples of these at the CiviCRM User summit last week  (i.e - Susan's ReThink Church example - which is essentially what you want).

Basic concept: User logs in and starts to fill out a multi page webform that saves the data on their CiviCRM record.  If you want to add a little custom code, you can have the final page be a "signature page" so that it can not be edited again.


Good question. Best way is to click on the CiviCRM Tab on the webform, and then look at the fields that are checked either on the relevant Contact, or on the Activity, Membership or Contribution section. That should show you both the 'name' of the field and the 'name' of the fieldset (field group).

The other option would be to look at the webform component itself and the 'field key' would look something like civicrm_1__1_cg16_custom_152. in this case the '16' is the id of the fieldset (field group) and the 152 is the id of the custom field.

You should therefore be able to look at /civicrm/admin/custom/group?reset=1 and click on View and Edit Custom Fields on any of the field sets, and then change the id in the url, eg such as /civicrm/admin/custom/group/field?reset=1&action=browse&gid=27 so instead of '27' to '16'

If the field is still not obvious then you can repeat this process, ie click on any of the 'fields' and change the id, eg from /civicrm/admin/custom/group/field/update?action=update&reset=1&gid=16&id=1 so you change the '1' to '152'

At that point you should have access to the 'options' for the field and should be able to add new options.

Gosh that seems long-winded, but hope it helps.


Can I have a price set option add a registrant to the waitlist if the event isn't full?

One approach would be to ask the resident/non-resident question first and direct them to two separate events: a residents one for immediate registration and a non-residents one with a max participants of 0.

When you want to allow non-residents to book you have two basic options:

open up non-resident bookings by changing the max participants on the non-resident event
find a way to transfer waitlist registrations from the non-resident event to the resident event.

For 1), you end up with registrations spread across two events which is not ideal but may or may not matter to you.  To manage further registrations you probably want to close the residents event at the same time and direct any new registrations to the non-res one so that you can still manage total numbers.

For 2), I don't think there is an easy way to transfer registrations between events without some coding.

You mention cPanel - that's not relevant here.  Event configuration is under the Event menu:


Does the system status check and upgrade version check only list available updates for in-app extensions?

So I discovered what you can do is put this in civicrm.settings.php:
$civicrm_setting['domain']['ext_repo_url'] = 'https://civicrm.org/extdir/ver={ver}|cms={uf}|ready=';
Note the ready= at the end (the default is without it).
This then properly shows you pending upgrades for your installed extensions that are in the extension directory but not approved for automatic distribution. The downside is it now lists all the available extensions for your civi version on the Add New tab on the Extensions page as if they were approved for automatic distribution.
An alternative is I've made an extension that adds a status check to show you available updates for your extensions that are not automatically distributed: https://civicrm.org/extensions/notify-about-upgrades-unapproved-extensions


Yes, there's no custom field type specifically for images. You can of course put an image in a file field type. Interestingly, the image field that is available for organizations is technically there for all contact types, just not enabled for individuals, so I'd guess it wouldn't be hard to turn it on.

To display images from CiviCRM in Drupal, I use views and the external image cache module here: https://www.drupal.org/project/imagecache_external

It's a useful technique from Chris Burgess, who describes how to use it here: https://forum.civicrm.org/index.php?topic=34929.0


How to add captcha on Civicrm contribution pages and Events pages

You can include a Profile in your Contribution Pages and Events and include recaptcha for it.

To set up your reCAPTCHA keys visit Administer > System Settings > Misc (/civicrm/admin/setting/misc?reset=1)

Then to set it in your Profile visit

Administer -> Customise Data and Screens -> Profiles

Click on settings link for the profile added on your contribution page or event.
Expand the Advanced Settings tab
Enable the Include reCAPTCHA? checkbox and Save.


From your screenshot, I was able to test this same functionality on two test sites (a good general troubleshooting tactic!).  The problem does NOT replicate itself there.  The issue is specific to your site, or (less likely) reflects a bug in an older version of CiviCRM than the ones I'm testing.

I was able to use your link to see the exact error - and you're correct, the issue is a blank line.

Since you're using Drupal, I would look for a blank line at the end of settings.php and template.php.  I would also try testing whether the problem disappears if you change themes (preferably on a test copy of your site).  That will help you isolate whether the problem is in your theme.


Any procedure to upgrade Joomla 2.5.28 to Joomla 3.5 with CiviCRM 4.4.4?

The first issue to raise is that CiviCRM 4.4 is not necessarily compatible with Joomla 3.5 according to this post: https://civicrm.org/blog/colemanw/announcing-civicrm-445  Since CiviCRM 4.6 apparently is compatible with Joomla 2.5, I suggest upgrading Civi first from 4.4 to 4.6.  Most CiviCRM documentation has to do with upgrading CiviCRM, rather than upgrading Joomla, so I'm not prepared to give advice on Joomla upgrades specifically.


Where is 'Payment Method' stored in the database for a Contribution "Payment Details"?

The payment method of a contribution table is stored on the civicrm_financial_trxn table. Payments and Contributions are related through civicrm_entity_financial_trxn table.

Some discussions about similar issues have recently taken place on financial issue board. Please consider whether you can make a contribution on any of them or if you need to report a new one.


Unable to upload or view files through the CKEditor

I'm not sure this is an answer to your question, since you seem to have a specific error. Nevertheless, we've had a similar problem and so it may be helpful to hear our solution: When the file browser gives a blank screen for our users, the problem seems to arise from slow internet connections causing some problems in the computer's DNS cache. If we clear the browser cache completely AND also the computer's DNS cache then it magically works again.

This is for us in Civicrm 5.10 and Drupal 7 latest, so again, our situation may be different to yours. For instructions on clearing computer's DNS caches we used links like this for mac and this for Windows 10.


What are some best practices for inbound email handling with CiviCRM?

Another option to explore is if CiviRules has a 'create case' capability that could be triggered from creating an Activity, which itself had been created by inbound email


How do I clear all the personal / sensitive data from CiviCRM DB via SQL?

As people have pointed out there is a very comprehensive answer to the question of anonymising data, however this questions was about simply clearing data.

The correct answer from Pete and Demerit was that I had missed the sort_name column from the civicrm_contact table. So the full SQL is now:-

delete from civicrm_email;
delete from civicrm_address;
delete from civicrm_phone;
update civicrm_contact set birth_date = NULL;
update civicrm_contact set first_name = 'Staging';
update civicrm_contact set middle_name = '';
update civicrm_contact set last_name = concat('Test',id);
update civicrm_contact set legal_name = '';
update civicrm_contact set display_name = concat('Staging Test',id);
update civicrm_contact set sort_name = concat('Staging, Test',id);
update civicrm_contact set addressee_display = 'Dear Staging';
update civicrm_contact set email_greeting_display = 'Dear Staging';
update civicrm_contact set postal_greeting_display = 'Dear Staging';

And as pointed out by @Chris you will also need to clear the cache tables, but please use the GUI for this as direct SQL on these tables can cripple the CiviCRM caching logic.

Feel free to edit and expand this answer if you know of any other fields that can be cleared by SQL.


Your question appears to be:

  When using Shoreditch, I can see only 4 contacts before scrolling. Is there a way it can be customised - apart from tinkering with the CSS, that is?

Shoreditch does nothing but modify the look of CiviCRM via CSS. So, if you're unhappy with the out-of-the-box layout, CSS is what you'll have to use to modify it.

FWIW, my opinion is that http://thereisnopagefold.com/ but I agree that Shoreditch still needs to implement some responsive design for smaller screens. I'm guessing that one of the issues holding this back is that core templates need to be modified to achieve this.


Is there a limit to the number of soft credits you can add to a contribution?

Yes, I see that we have a limit for generating soft credit blocks on the New Contribution Page to 10.

I don't think we can modify this limit from the UI level as it is hardcoded to a value of 10 here. Changing this value to 16 can generate 15 softcredit values and so on:)

Modifying here can result in loosing this feature after upgradation to the latest version.


What is the 'Associated Entity' in a CiviVolunteer Project?

So apparently Associated Entity means Associated Event, if and when a volunteer Project is created as part of an Event. I've created an Issue to change Associated Entity to just Event.


What is the Process to have an Extension Enhanced?

You don't need to be a developer to contribute to enhancements -> you could sponsor the work and let an experienced developer do it for you. For org.civicrm.sms.twilio -> go through the Paid Issue Queue: https://civicrm.org/paid-issue-queue The CiviCRM Core team will either be able to work on it - or they will find a CiviCRM partner for you to work with.


How to link one contact's address to be the address of all contacts in a specific group via SQL?

This is how you set the address of all people in a certain group (group id = 13), to be the address of a specific, different contact (address id 15432)

SET @InGroup:=13;
SET @MasterAddress:=15432;

UPDATE civicrm_address SET master_id = @MasterAddress
WHERE contact_id IN
    (SELECT contact_id
    FROM civicrm_group_contact
    WHERE status = 'Added'
    AND group_id = @InGroup)


via api created only first particpant gets a line: "Contribution Amount: 1"

This is not a right way of adding participant with contribution associated with it. When there is payment associated with Participants than we need to specify line items in create Participant and/or Contribution api. I would suggest to use Order api to achieve your needs as it is straight forward and handles in convenient way for adding payments in CiviCRM.


Where can I find out more about the changes made from one version of Civi to another?

Go to the 'Jira'  - the issue tracking platform used by the CiviCRM project - at
https://issues.civicrm.org/jira/browse/CRM/?selectedTab=com.atlassian.jira.jira-projects-plugin:changelog-panel


Try installing the CiviCRM Log Viewer extension (you can do that via the web interface) and then you'll be able to see more details about the specifics of the error, which are logged in a CiviCRM error log file that is otherwise not easy to access.
The 'Transaction integrity error' isn't super useful, it's evidence of a deeper issue - see:
https://civicrm.stackexchange.com/search?q=Transaction+integrity+error%3A+Expected+to+find+active+frame
That deeper issue would be more easily seen via the error log.
Sometimes, if you make changes to custom fields via the web interface, it will only half-complete, leaving a mismatch between the tables in mysql and what CiviCRM thinks is there. That might be evidence of a server setup issue, for example.
The easiest solution, if it works, is to delete the fields that make up the custom fieldset, then delete the fieldset itself and start again.


LoadForm Popup - Uncaught TypeError: Cannot read property 'split' of undefined

I just figured it out.

When using the loadForm function you have to include at least 1 parameter in the URL. If you do not include a parameter then you will get the error.

Is this a bug?


Mosaico mail template URL's don't function properly

Paul, welcome to CiviCRM stackechange. when you have clickthrough enabled for the mailing CiviCRM replaces those url into trackable url so that Civi can track clicks for mailing. Check you Resource url setting (Administer >> System Settings >> Resource url .. click on '?' under the help area), Make sure [civicrm.path] is set correctly. Try sending the same email by replacing the path for CiviCRM resource url field.


Recurring contributions fail with PayPal Pro - "DPRP is disabled for this client"

Ends up that the issue was that we do not have the Recurring Payments module enabled in our PayPal account.  When someone submits a recurring contribution, they get a warning stating "DPRP is disabled for this client".


How do Cividiscount codes work when used with a price set?

When I view the live contribution page, there is no field displayed where I can enter my discount code.

Make sure the contribution page uses the Membership section. There is no discount functionality for only Donation pages as far as I can see from the usage section.

Also see Can CiviDiscount be used on a Contribution Page without Membership


Duplicated membership options after updated to 5.15.1

It might not be a membership type but just a price list - if you go to Contributions - Manage Contribution Pages and then on the far right of the table click on Configure, one of the choices is Contribution Amounts. You might see these "-old" ones listed in there. Or if it is a real membership, it might be a price set which you'd see in the same place but on the Membership Settings instead of Contribution Amounts.


Feature request: Make search more forgiving and spaces after comma and non-primary emails

Answer to first question: There is an extension that allows one to seaech for any telephone or email by location: https://github.com/JMAConsulting/biz.jmaconsulting.search.anyteloremail

My guess is that it should still work even though it is only marked as working for 4.5 and 4.4. Please open an issue in github repo if there is a problem and we will update it. To have this search ability added to core searches, I'd recommend getting agreement after opening a gitlab issue.


"Network Error Unable to reach the server" only doing certain actions

disabling the ONLY_FULL_GROUP_BY SQL mode (which it is by default in MySQL 5.7) with this command

mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

solve the problem about the paging, but it must be considered a workaround.


Upgrading is not exactly simple, but it can be done with a lot of IT knowledge. You can find information about the upgrade at https://docs.civicrm.org/sysadmin/en/latest/upgrade/ .

If you need an expert to help you search in the partner list: https://civicrm.org/partners-contributors .


Wordpress Shortcodes for Displaying subsets of events

The shortcode you refer to is provided by the CiviEvent Widget plugin. It has a number of configuration options which you can read about on the plugin homepage. I would look at the custom_filter options to see if you can make it fit your requirements.

If the widget doesn't allow filtering by event category, I'd consider a more complex (but also more flexible) system based on Event Organiser and CiviCRM Event Organiser which will definitely do what you're after.

Have a look at the standard calendar, an event category and the list of events at a venue for the kind of things that are available out of the box.


Localization and Address settings disappeared after domain change

I haven't seen it - it seems odd because the defaults are correctly defined here https://github.com/civicrm/civicrm-core/blob/master/settings/Core.setting.php#L124


Why is CiviCRM not seeing the timezone correctly?

I know you said you checked the user's timezone but did you check the sitewide time zone in Drupal at /admin/config/regional/settings?


You may want to follow progress on this issue which seems related:
https://issues.civicrm.org/jira/browse/CRM-17082


There was some work done on CiviCRM integration with Google Analytics as a part of Google Summer of Code program.
This should be a good base. Check https://civicrm.org/blog/vishalagarwal/gsoc-completion-report-on-integrating-google-analytics-with-civicrm


settings_location.php - is there an example

The settings_location.php file should not normally be required, but an example is described at:

https://wiki.civicrm.org/confluence/pages/viewpage.action?pageId=83034188

The file civicrm.config.php should be able to handle bootstrap in most common configurations without settings_location.php. However, this depends on having somewhat plain/predictable directory structure, and it could break down when using things like (a) symlinks, (b) special filesystems, or (c) multi-tenant/multi-site installations.


How to make personal data fields non editable

That survey uses a Webform-civicrm form. The 'existing contact' field has had 'Field Locking' applied to the Name and Email fields (first time i saw this feature - nice addition!).

if you want to achieve the same directly in civicrm profile when you add a field to the profile you have the option to set it to read-only.

ADDENDUM: Nathan below comments that "I believe this is available in Webform CiviCRM 7.x-4.15 based on the notes and code in the change comparison listed here: github.com/colemanw/webform_civicrm/compare/7.x-4.14...7.x-4.15"


What would cause Cannot create user, email: invalid!! on an civicrm integrated webform?

I had the Rules module updated and removed all unused rules(of which we had many), and now the forms are submitting without error


Why is format returned for multi-select custom field API different for Contact vs. Relationship?

If the custom fields are of the same type, i think you should log an "Improvement" issue in JIRA for this. It's not really a bug but i think Api should be consistent.


CiviCRM 5.01 Not Displaying Main Page (Page content is generated by CiviCRM)

that page you are referring to is used to generate CiviCRM content. As for "main page", are you referring to the CiviCRM Dashboard?  Your dashboard should be found at /wp-admin/admin.php?page=CiviCRM


Membership Report (Detail) not showing organizational members

This may be because the details report has a default filter that limits results to those with a contribution status of completed.  Because memberships by relationship do not have a contribution, they would be excluded.  You can click on the Filters tab within the report, and then deleted the Completed value from Contribution status...then re-run the report.

An alternative is to use Find Memberships (directly under the Memberships top level menu), instead of the details report.  That gives you the option to select Primary Members (select Yes), Related Members (select No), or both (do not select anything.)


Setting up Cron Jobs to run Initially(Cron Not Running)

I'm assuming you've seen this Wiki page: https://wiki.civicrm.org/confluence/display/CRMDOC/Managing+Scheduled+Jobs

If I'm reading your question correctly, I think you need to set up the cron job so it runs every so often, e.g. every 15 minutes:

*/15 * * * * <your cron job command here>


How can I enable a user to renew a membership that has been cancelled?

One fudgy option would be to set it to 'override = Grace' then let them renew, then clean up by removing the override status

The fact that a Cancelled membership causes problems for people trying to then renew/complete have been raised in JIRA. See this and this


How can I find the code that produces a certain error message (e.g. "Sorry, can not load CMS user account.")

This particular phrase appears to be in these files:

./CRM/Utils/System/Drupal.php
./CRM/Utils/System/Drupal6.php

Here are two ways you can search for specific phrases within the codebase:

1) GREP

Using this command from the base civicrm directory:

>  grep -R "Sorry, can not load CMS user account." ./

2) GITHUB

And if you don't have a command line handy, you can do the same on the CiviCRM GitHub page with the "Search this repository" function at the top (using the quotation marks to search for the exact phrase):


Where did my price field go? It's missing!

I solved this by looking in the civicrm_price_field table and noticed that the missing price field had an expiry date of '000-00-00 00:00:00' vs. NULL for other expiry dates. Setting the price field expiry to NULL allowed the price field to be redisplayed.
On the configuration screen, those two values both appear the same.
Conclusion: a '0000-00-00 00:00:00' in a price field row expiry field should be considered invalid/error.


Why isn't there a CiviRules action to change membership status?

it is not there because apparently no one needed it :-) The actions in CiviRules get added whenever a CiviCRM user funds the development of one or develops one and shares it as a general action. So this has not happened up to now. If you really need it you are very welcome to develop and share it, or fund the development by a partner who will most certainly share it.
I totally understand if you can not develop nor have the funds available. That then means you have to wait until someone else invests energy or funds. The answer to the why question is then again no one so far has :-)


Where is the developer documentation for making core CiviCRM database changes, to the schema and to the initial data?

Change the appropriate file(s) under xml/schema so the tarballs are created properly.
The data insert statements for the tarballs go in https://github.com/civicrm/civicrm-core/blob/master/xml/templates/civicrm_data.tpl as you mention.
Create, or more likely edit, appropriately named file for version you are targeting PR to go into under https://github.com/civicrm/civicrm-core/tree/master/CRM/Upgrade/Incremental/sql. Your insert or alter commands for upgrading sites go in there.
Very rarely, instead of or in addition to 3, you may want to put some php code into appropriately named file under https://github.com/civicrm/civicrm-core/tree/master/CRM/Upgrade/Incremental/php.
Usually the schema changes are simple for the tarball and you need to worry about the upgrades working properly. Manual tests are all I know about. :(

HTH. If this works maybe submit it to a developer doc page.


It appears you have found a bug.  I tried just now on the Civi 4.6/Drupal demo site and got the same results as you with both Export Primary fields and selecting my own fields.  I would log it on JIRA.  https://issues.civicrm.org/jira/secure/Dashboard.jspa

I did a quick Google search and could not find any relevant issues already logged for this.


Can you explain the relationship between groups, i.e a parent group

If your monday weeders group belongs to the volunteers group, then members of the monday weeders will be acted upon automatically as members of the volunteers group.  So when you send an email to the parent group of volunteers it will be sent to all the members of monday weeders and any other group that's a sub-group of volunteers.

Is that what you're wondering?

There's more information about groups here https://docs.civicrm.org/user/en/latest/organising-your-data/groups-and-tags/.


Users with 'view own cases' permission can't access resolved cases

UPDATE: Will be fixed in 5.36.0

https://lab.civicrm.org/dev/core/issues/1400
You can work around it by changing this line: https://github.com/civicrm/civicrm-core/blob/5.19.1/CRM/Case/BAO/Case.php#L541
from
if (empty($params['status_id']) && ($type == 'upcoming' || $type == 'any')) {
to
if (empty($params['status_id']) && ($type == 'upcoming')) {
but that might cause closed cases to start appearing or being counted differently than now.


Can you create a mailing list based on tags

Search Builder should let you say 'find Contacts who have this tag AND have that tag' and then set up the Smart Group from that.


best practices for demo-site replication of a membership bug?

As you are in Drupal, i recommend using the drupal module masquerade which let you act as if logged in as another user.

Otherwise, with drush you could generate a one-time login for the user you want without sending an email. So from the command line, type : drush uli user-name and you will get a link that will log-in as the user user-name


Not everyone else use only the json, I find it easier to read and fix to use separate params ;)

I think the error is on the json you provide is not correct. Instead of:

["sequential"=>1,"return"=>"id,do_not_mail","external_identifier"=>777]

it should be

{"sequential":1,"return":"id,do_not_mail","external_identifier":777}


How display event for anonymous user with Rendered Entity

So out of the box, CiviCRM Entity enforces that user has a role with 'view event info' permission to see the rendered entity.

In your case, you could probably just grant anonymous users that permission

This can be modified by implementing hook_civicrm_entity_supported_info() in a custom module, where you can change what permissions are necessary to view entities, or you can specifiy a custom access callback handler

See civicrm_entity.api.php

See https://skvare.com/blog/civicrm-entity-customizing-and-adding-entity-types

Add the functions below to a custom module, replacing YOURMODULE with your module name.

The first implements hook_civicrm_entity_supported_info(). There you set a custom access callback for the event entity. In the callback, check for the view operation, if the event is_public property is not empty, meaning is 1, then check the user has 'view event info' permission. Any other operations and events will enforce 'administer CiviCRM' permission .. you could use another permission, like 'edit all events', or whatever.

UPDATE:

function YOURMODULE_civicrm_entity_supported_info(&$supported_info) {
  $supported_info['civicrm_event']['permissions']['access callback'] = 'YOURMODULE_custom_event_access_callback';
}

function YOURMODULE_custom_event_access_callback($op, $entity_type, $entity, $account, $permissions) {
  // if $op is view and event is public, check if the user has 'view event info' permissions
  if($op == 'view' && !empty($entity->is_public)) {
    // see https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_access/7.x
    return user_access('view event info', $account);
  }
  // For all other ops and non-public events, check for 'administer CiviCRM' permission
  else {
    return user_access('administer CiviCRM', $account);
  }
}


CiviCRM -as the software- doesn't have a privacy policy, because it doesn't hold any personal data.

Your specific instance of that software, as installed on your server or hosted by one of your provider does store personal data. Check with your provider if they have a privacy policy.

However, the privacy policy depends on what personal data you collect and what your organisation does with it, so you are likely to have to adjust based on your own unique way of using CiviCRM.

While you detail that, may I suggest you to look at how your CiviCRM might be connected to other providers, for instance to process the credit card donations or to send your emails? you will need to check what personal data of your contacts you share with them to let them perform the service, and clearly explain that in your privacy policy.

And lastly, we found the easiest way to be GDPR compliant is to be enforce data minimisation, eg only collect the data you need and know/explain why you collect it (and get consent!). For instance, are you really calling your contacts? if not, it's probably simplier and safer to remove the phone field.

Good luck!


Is there a 'Token' for adding a date to a message template?

There is no token available to add current date. You can create a custom token using following two hooks.

hook_civicrm_tokens
hook_civicrm_tokenValues

Please review documentation on how to create custom tokens described there.


Can "Contributions - Recurring Billing Updates" and similar messages be turned off?

This is untested but in hook_civicrm_alterMailParams you can check $params['messageTemplateID'] and if it's one you care about set $params['abortMailSend'] = TRUE.


After creating my extension, what is the root for my new tab?

It appears you are confused about the difference between a CiviCRM Extension and a WordPress Plugin.

I would recommend you to write a native CiviCRM extension and enable it from the civicrm/administer page (you might need to set up the extension directory path first).

If you generate an extension with civix, it will take care of reading the xml to handle the url of the page you created and all the stuff you'd need to support your custom tab


How to translate the "Confirm Contribution" button on Contribution pages

Multilingual word replacement support is the topic of both CRM-14349 and CRM-19683.  CRM-19683 just had a patch merged, which should be available in the January 2017 release of CiviCRM.  You can patch it now if you're patch-savvy.  Please try it and see if it solves your problem - or wait until January 2017, upgrade to CiviCRM 4.7.15+ and see if it solves your problem.


Passing CiviCRM invoice number to Moneris hosted payment page

If that is the case - Looking at the code I can see that in the confirmation page you are redirecting to Moneries Site for entering Card details and then once the payment is processed "Successfull/Failed" it is redirected again to CiviCRM Page.

So at that time please read the order number from the payment details and update that against your contribution - which will be usefully for your client to link both the records - I guess this helps


How to set default for 'Unsubscribe Group' in civimail

There is no way through the UI that I am aware of.


Blank screen when reusing a previous mail (Mosaico)

Using the browser network tools shows a failure to load the template with a "mixed content" message.  The problem is that the template metadata includes the full URL of the template.
The fix is to update the template URL in the Mosaico metadata to use https:// in place of http://
With db access, you can update template_options in civicrm_mailing.
Alternatively, start from cv api Mailing.get id=...
Update
There is now an API call to update the templates for you.  See the docs
cv api MosaicoTemplate.replaceurls from_url="http://old.server.org" to_url="https://new.server.org"


This sounds like a Javascript error - please check out this guide to troubleshooting Javascript errors in CiviCRM.  Feel free to update the question with more info if this gets you further to a solution.

Also - that fatal error sounds like it's related to Drupal core.  I'd fix that before trying to get CiviCRM working - it's much harder to fix a system broken in two places than one!


Attachment too large for mailing - should there have been a warning?

There's an administrative setting that controls that limit here:

Administer -> System Settings -> Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)

The "syntax error" you are seeing is likely what the Civi mailer is getting back from the smtp server. I've seen that as a kind of catchall error message from mailers (e.g. it's what sparkpost will report when not configured). I don't think that Civi can do anything other than pass it on - i.e. the reporting error is from the system that's trying/failing to send out the mail.

Personally, I think there should be a message in the CiviMail system strongly discouraging attachments and encouraging attachments to be uploaded and linked to instead. That will increase deliverability.

The only really good use-case for attachments is if the document is private.

So the answer to your question is: "no".


DB Error: unknown error when sending CiviMail

Alex, Welcome to Civi stackexchange.
If the server is running with global transaction identifiers (GTIDs) enabled (gtid_mode=ON), do not enable binary logging. Try turning it off


dupe_check parameter only works for contacts?

The dedupe_check works only for contacts.


Civi Event - Event Title & Event Name with French accents not saving in correct encoding

In case anyone stumbles upon this, we figured out the issue.

We discovered it was caused by the Front End Page Options +  Entity Settings Helper Extension.

I believe the extensions were only meant for 4.4 (we are on 4.6).


Newsletter sign up tokens on Donation Form Error

You might compare your checksum links against the examples in this post.

As for your mailing list signup form, I'm not sure what you mean by "not recognized by the system".  Is the token not transforming when sent, or is the link just not working?


Seems to be getting certificate errors that lead back to https://espprojects.co.uk
Have you tried contacting your provider who runs this as it looks like it could have been set up as a test site and contract didn't renew in April maybe?
Bari


Registration Button not working on CiviCRM Event Page

CiviCRM 5.19 is not compatible with WP 5.6.   WP 5.5 had a change that required an update which is in CiviCRM 5.26 https://civicrm.org/blog/kcristiano/civicrm-526-and-wordpress-important-notice
I'd recommend CiviCRM 5.32.2 currently as that version has all the security fixes in 5.28 (latest security version) as well many other bug fixes/enhancements.
Please look at https://docs.civicrm.org/sysadmin/en/latest/upgrade/version-specific/#civicrm-529  as this further documents some of the follow up changes that affect Paths and URLs in WP


There is some more detail in the documentation.

And there are also notes from Tim on Github. Those notes share the idea that it is confusing. However I do think it answers your question.
It would have been helpful though when those notes are added to the documentation.


Where are civicrm profile custom fields stored in the DB?

Quote from CiviCRM data architecture:

  When you add custom data to a CiviCRM object, you first create a
  custom data group and then add custom data fields. At the database
  layer, what you are doing is creating a new table for the custom data
  group and adding columns for the fields.

If you crate a custom data group called My Custom Data with a field Name, Civi will create a new table in your database like this: civicrm_value_my_custom_data_1, 1 being the group id. The table has an id column (primary key) an entity_id column (fk to the entity, ie. contact_id, contribution_id, etc), and one column per each field you have created, in this case would be name_1.

Field Name for contact_id 50 in sql would be:
select name_1 from civicrm_value_my_custom_data_1 where entity_id=50;

Hope is clear.


Can CiviCRM limit the number of event registrations for each member?

CiviDiscount has functionality that limits the number of times a discount can be used. So if you create one-use discount codes / member, that might meet your need.

The automatic discount for members probably does not have a limit functionality, though that might be a useful addition


How do I use the API to check MembershipType and "active" status?

I assuming you're doing this with a .tpl.extra file. I tried mocking this up in the API Explorer and found a couple shortcomings, namely the lack of support for arrays in smarty, and the inability to set a contact ID field to the magic "user_contact_id" value. Here's a fix for both those issues.

The upshot is you can now do this:

Instead of the boilerplate {foreach} loop you can do a simpler conditional. Here's the full code you would use:

{php}
  $this->assign("param_status_id", array('IN' => array("New", "Current", "Grace")));
{/php}
{crmAPI var='result' entity='Membership' action='get' contact_id="user_contact_id" membership_type_id=1 status_id=$param_status_id return="id"}
{if !empty($result.values)}
  Blah blah blah...
{/foreach}


Why are my contacts' name and email empty?

I'd recommend clicking on one of the records and seeing what information is there. Presumably there is something, custom data or an activity or relationship.

I have seen this happen on imports that haven't been thought through. So for example, if you're using an external id to match contacts records on an activity import and there isn't a matching external id in CiviCRM, a new records will be created with only the external id on and activity.


This seems to cover it: Edit 'existing locations' for events

"If you are wanting to do a one-off cleanup of obsolete addresses than as a UI work around you could edit the old events that contain those obsolete locations and set the first address line to DO NOT USE or NO LONGER IN USE or similar"


Hosting a paid event with a member ticket and a non-member ticket

You could use the cividiscount extension and set up automatic discounts of $100 on the relevant events based on membership.  Non-members pay $250, those with the automatic membership discount pay $150.  Members need to log in before booking so that their membership status is known.


Contribution count does not reflect number of contributions

From the screenshot, it seems like the first contribution is done via test mode.

FYI, test contributions are not included in the count on the tabs. Though not sure why the second one is not included. Can you add a little more information for the second row of how it is done, civi version etc ?

Update: Also make sure the financial_type_id used for the contribution is enabled from Administer -> CiviContribute -> Financial Types.

Path - civicrm/admin/financial/financialType?reset=1.


When editing a membership Civi sends receipt and confirmation even with box unchecked

Have you checked that the mails are actually being sent out?

In civiCRM 4.6.4 I have found that I receive the following pop-up when editing a membership record with an attached contribution record (this does not seem to occur when there is no contribution recorded with the membership), but if the "Send Confirmation and Receipt" box is unchecked, no mails are actually sent out even though I got the message below.


I want someone BCCd to an email genearted by a System Workflow Message

On a Contribution Page on the Receipt tab, you can add CC and BCC


How do I search for CiviDiscount code redeemed (to allow an action on those contacts)

We have made a participants view in Drupal that shows all event participants who have redeemed a code. We can then add them to a group for use in further searches in Civi.

I don't know how you would do this with a smart group, but at least this might get you part of the way.

We'll be doing a similar thing for memberships in due course, if that's possible.

To do this you need:
Drupal, Civicrm entity (ours is beta9), and turn on the sub module: civicrm_entity_actions as Pete mentions in the comments to the first answer here: How to configure Views VBO action to disable relationships?
You also need Views Bulk Operations

The participant view needs to have this relationship: CiviCRM Contributions: Contact Record ID

The view also needs to have an exposed filter of the Participants fee level field. (NB, don't confuse this with the Events Fee level or the Contribution Amount label fields. They won't produce the same results).

Then you can filter your view by keywords from your codes.

Add the field, (CiviCRM Contact, with custom fields) Bulk operations: CiviCRM Contact. Note this will need a relationship to Civicrm Contact. Initially it won't give you the option to add a group, but after saving the field and then re-editing it you will see Add contact to group as an option.

You will have had to previously made a suitable group in Civi.

Et Voila! Now you can bulk add participants who've used your code to your group.

I can send you an export of the view if that's helpful. Good luck!

NB: it might be helpful to know that the Contributions: Amount label field will work fine for this purpose for online event bookings. But bookings taken through the admin interface may not contain the discount code in the Amount label field.


How to embed a Soundcloud player into CiviCRM mailings

Almost all email clients strip out JavaScript/embeds, which is necessary to play audio.  See Soundcloud's blog and Mailchimp's knowledge base for reference and workarounds.


Did you check your resource url setting? If so, what is it?

It needs to be a complete url, as explained in the help for that field:

http://mysite.mydomain.com/sites/all/modules/civicrm/


Transfer of fees from one event to another

CiviEvent have a setting called Allow Self-service cancellation or transfer option for event which I think might be helpful in this case. To find this, check the Online Registration tab on Event Configuration.

URL - civicrm/event/manage/registration?reset=1&action=update&id=<event_id>

With this option enabled a participant gets a unique link in the registration confirmation mail where he/she can transfer the participant to some other contact.

It is included in 4.7 version. Check this for more info.


Which table is used for hook_civicrm_triggerInfo?

Triggers are stored in the information_schema, a virtual database provided by MySQL.  This StackOverflow answer gives a pretty good overview.


Mailing Bounces 100% with "authentication failure" or "failed to set sender"

I experienced this problem when I was running different versions of PHP in the website and my command line interface (CLI).  You can check your PHP version for the web at Administer menu » Administration Console » System Status.  You can find your CLI PHP version by running php -v.  I was running 7.0 and 7.2 respectively.

Since PHP 7.2 has deprecated the php-mcrypt module, CiviCRM was expecting my mail password to be unencrypted when run from CLI, and encrypted when run from the web interface.  So all web-based testing works - but CLI gets authentication errors.  The solution is to match your PHP version on web and CLI.

Note that if you move from some lower version to PHP 7.2+, you'll need to re-enter your mail password for things to work.


Disable the default tick to send email confirmation for events registration.

There's an extension which does that here: Prevent Sending Event Registration Confirmation from the Back-Office


Which payment gateway are you wanting to develop?  If it is one supported by Omnipay then take a look at the Omnipay Multiprocessor Extension

If you are considering any work in this area I'd strongly encourage you to discuss this in the ~dev-financial channel on CiviChat

As regards Settings - there are significant changes coming up in 5.8 as described by Eileen here


How do I increase the backtrace line length

:( it is hard-coded.  I changed $maxArgLen in CRM/Core/Error.php and now I can see the full backtrace.


PayPal recurring payments are in pending state

From my experience, PayPal Express and PayPal Payments Pro have always conflicted with Civi.  PayPal Standard works fine for both recurring and one-time payments, but the other two options do not work for recurring payments.  My organization went back and forth with PayPal over this issue for months.  Then we tried to fix it on our end with zero positive results.  We finally concluded  based on what others said in this forum that other than PayPal Standard, most PayPal options are not compatible with Civi.  We now take our credit card payments with iATS, which is specifically designed to work with Civi and also have the option of using PayPal Standard if the user prefers it.


Drupal block not appearing on CiviMail page

I think this may have something to do with the fragment identifier (#).  This is typically used to link to a particular point within a page (an anchor).  However, in this case I think it is being used by the JavaScript framework to indicate a particular page view.  I guess that Drupal may not be able to process URLs like this.


CiviCRM admin menu not visible in Wordpress

Turns out the problem is related to the latest install of the UK Gift Aid extension v 3.4.4. Disabling the extension brings back the menus.


Adding an individual to repeating events

The Multiple Event Registration extension can handle this.


You can make any fields "required" when they are part of a profile.

Admninister > Customize data and screens > Profiles > Fields > Edit


Can users (non-administrators) log their hours in CiviVolunteer

Not yet, though we'll be pushing this into a release before the end of the year. (Sorry about the misleading "log own hours" permission -- we got a little ahead of ourselves there!)


Evan from IMBA here. Sorry for replying in a new answer, I don't have the required 50 points of reputation to comment in reply specifically to Lizz Trudeau's answer. I just watched the video Jason (my predecessor) gave at CiviCon 2012, and it gives a really solid overview of how we've tackled this and for the most part we're still set up this way. We've made improvements and enhancements along the way as new features become available in Civi, but the bones of what we're doing are the same. There are loads of things to consider when deciding on a tiered implementation, and a couple of good ideas have been thrown out already. Here's my take on what we've done vs. other solutions presented:

CiviCRM Multi-Site: for us at the time, we didn't have the need or capacity as an organization to support this structure. In our revenue share model, all membership funds are processed and collected by the parent organization and then dispersed quarterly to the chapters. We could certainly set up the payment processors, etc. for each chapter but restricting access to change settings like this would have been an issue. This remains a viable option for us in the future, as our chapters grow in function and capacity. Particularly if we enable a Drupal multi-site structure where IMBA offers chapter website hosting as subdomains of the main site. It's on the table for consideration in 2016.
Relationship Permissions as ACLs has my attention. Our method of using a multi-select custom data field to track multiple contact-to-chapter relationships works pretty well, but can be a little cumbersome and finicky when importing large lists into Civi and a few other tasks. Using relationships as ACLs could be a better way of handling this, but might also trade one set of challenges for another. I think if we were starting from the ground up, this would be a solution we would strongly consider, right now making the change seems rather daunting. We would still need to use custom data fields to track the revenue share component of contributions, to the best of my knowledge.
Using Custom Data Fields to Create Groups and ACLs has worked pretty well for us over the years, has been scalable through multiple Civi updates starting with 3.x all the way to 4.6. We've built some custom code to support it here and there such as increasing efficiency in the back office during data entry, but as Jason said in the video it's largely out of the box functionality. What it doesn't give our chapter admins permission to do is use their own payment processors, access to CiviEvent, etc. There are some pain points but largely it works well. In some ways it's a similar approach to the Relationships, and I think each would have their own challenges and strengths. Co-branding with our chapters is super important, and using the custom fields allows us to pull that data in searches, reports, and other lists which are then sent to vendors for doing membership fulfillment, renewal messaging, and even some region- or chapter-based variable content in our quarterly print magazine for instance. We're also making some changes to these custom fields to (hopefully) enable us to place custom tokens into email messaging as well.

Challenges we face:

Better signup UI: Right now we still have just one user workflow on the /join page, and I'd like to revamp this so we send renewing members directly to a contribution page for their specific chapter, rather than sending them through the "join" workflow which requires them to select their local chapter each time. This should be possible using the custom data fields as tokens and contact hashes. We now have over 180 chapters, and having a giant dropdown select is not a good UI solution. We've got some ideas in the works with Fuzion that will address the signup process and provide a better experience for visitors, but still capture revenue share data as needed.
Living with your neighbor's dirty laundry: this remains a bit of an issue with certain features of Civi not easily quarantined via ACLs. That all users can see the entire "From" email address list is one of these things, although minor. A larger one is that our chapters would like us to support Event Registration for their local events, but enabling those users access to CiviEvent grants them access to all other events in the system, not just their own. This may have changed since last I looked, but it has been a sticking point of opening up this feature to our chapters.
Growing our chapter's contact lists: Each "CHAPTER All" ACL group is a smart group based on that chapter's name being in the multi-select custom field. Each chapter's territory is defined by postal code. When a chapter is integrated, we import their list of contacts and also search out any existing contacts in their zip code territory, and add this chapter to that custom field for all these contacts. So the only time we place existing contacts in a chapter's partition (share back contacts from the main IMBA DB) is when the chapter is integrated. As new contacts come to the main IMBA database, they're not being actively shared back the appropriate chapter's partition. This was a conscience decision made years ago, but one that has recently changed. We have an extension that updates a contact's region based on zip code, it will be more challenging to update the chapter affiliation of a contact as each contact can be visible to multiple chapters. (NOTE: a contact can be associated with a chapter outside of their zip code by opting in, attending a fundraiser and signing up for email newsletters is an example of this)
Accommodating members who wish to join multiple chapters: Pretty self-explanatory here. Some of our members want to belong to more than one chapter. Summer home, favorite vacation spots, etc. Our preference would be to NOT implement 180+ membership types, so we're still brainstorming ideas for a solution. And the reality is, right now this challenge lies in sorting out the business rules and requirements, not in database or CRM limitations.

That's just an overview from our perspective, I'm sure I could ramble on and on about everything we've done that's worked and hasn't but I really should get back to testing some new functionality. Feel free to ping me with questions, I hope I helped.


Closing this as I've managed to get wp-cli to work from ssh, just trying to get it to work from cron now....


Getting recurring contributions with Authorize.net that predate CiviCRM instance to register in CiviCRM

This would be incredibly difficult to do, because you would need to create recurring contribution records with the correct IDs matching those that Authorize.net is sending.

In this situation, I usually use the Offline Recurring extension.  Please download from the link above; the original authors no longer maintain the extension, and this branch on my copy is the only version with no known bugs.

Create offline recurring contribution subscriptions to match those that exist outside of Civi.  The missing contributions will be added to CiviCRM, but it's up to an end user to manually mark failed payments.


Upcoming Birthdays custom search not working

The easiest way to do this is via the Upcoming Birthdays Report extension.


Mosaico extension stores path in civicrm_mosaico_template and civicrm_mosaico_msg_template table. When mosaico extension code is moved you will need to update path in these tables to new path.
You can run below query to update the path from sites/default/files/civicrm/ext/ to wp-content/civicrm_extensions/
UPDATE civicrm_mosaico_template
SET metadata = REPLACE(metadata, 'sites/default/files/civicrm/ext/', 'wp-content/civicrm_extensions/‘);

UPDATE civicrm_mosaico_msg_template
SET metadata = REPLACE(metadata, 'sites/default/files/civicrm/ext/', 'wp-content/civicrm_extensions/‘);

HTH
Pradeep


Drupal Forms + Civicrm Contributions, Doesn't process Contribution?


CiviEvent link Parents with Child participants during registration

I dont think registering for an event and creating a relationship using the standard CiviCRM event registration pages.

So if you use CiviCRM with Drupal I would go for the webform solution.

There is also a third possibility and that one is using the form processor extension in CiviCRM and then use the CiviMRF to submit you the webform data to CiviCRM. I wrote an example instruction in this blog post: https://civicrm.org/blog/jaapjansma/using-civicrm-form-processor-extension-to-handle-form-submissions-from-an-external

The pro of the form processor solution is that you can create a webform on a remote website. Or in other words, if your website and crm are not on the same site this solution will also works. The con is that it requires a bit more knowledge to set it up.


How are CiviCRM form names defined (civicrm_validateForm)?

In principle the names are based on the files, so the form which is CRM/Contact/Form/Contact.php will be CRM_Contact_Form_Contact.

AFAIK the name of the form will always be commented if you inspect the form with Firebug, Firefox or Chrome.

In some cases forms will be called from pages (like the contribution page). This is kinda hard to find out, I always do a post hook in my extensions to log the $formName parameter to find out what forms are called during the process.

AFAIK you will need to include a call to the form hook to make sure your customized form is also usable in a validateForm hook (see below). But I would certainly try first if the parent CRM_Core_Form does not handle that and you can indeed already check for your customized form name.

    CRM_Utils_Hook::validateForm(
  get_class($this),
  $this->_submitValues,
  $this->_submitFiles,
  $this,
  $hookErrors
);


For a particular event, how to list all the other events that participants have been on?

You can create a block using view.

Below exported view will list all events the logged in user is being registered.(To test you will need to import the views using below code)

$view = new view();
$view->name = 'event_listing';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'civicrm_participant';
$view->human_name = 'Event listing';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Events';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/* Field: CiviCRM Events: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'civicrm_event';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['title']['link_to_civicrm_event'] = 'page';
/* Contextual filter: CiviCRM Participants: Participant's Contact ID */
$handler->display->display_options['arguments']['contact_id']['id'] = 'contact_id';
$handler->display->display_options['arguments']['contact_id']['table'] = 'civicrm_participant';
$handler->display->display_options['arguments']['contact_id']['field'] = 'contact_id';
$handler->display->display_options['arguments']['contact_id']['default_action'] = 'default';
$handler->display->display_options['arguments']['contact_id']['default_argument_type'] = 'php';
$handler->display->display_options['arguments']['contact_id']['default_argument_options']['code'] = 'civicrm_initialize();
return CRM_Core_Session::singleton()->get(\'userID\');
';
$handler->display->display_options['arguments']['contact_id']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['contact_id']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['contact_id']['summary_options']['items_per_page'] = '25';

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');


Where can I find the Release Schedule for CiviCRM?

Releases are generally the first Wednesday of each month.

The testing period for the next release starts when the current release is published.

The release dates and testing periods are recorded in gitlab


The speed you experience seems to be much slower than usual (not that contact imports are super fast, but civi can do better than 1 per second ;)

What is the field mapping you use? the less fields you import, the faster it's going to be (mostly true, some are more expensive than others, eg current employer if you import individuals)

Are the salutations one of the fields you alter?

What is the dedupe rule you use?
Some of the out of the box rules are optimised, but if you create and use your own, it might end up being super slow

What is the rule you use? update data is more expensive than ignoring duplicates, skip or replace


I think its an issue with Webform module itself where it doesn't show relationship if you have relationship type label and name different.

Developer from Circle-Interactive submitted a fix for this today. Can try applying patch if it displays the relationship type on case tab of the webform?

Thanks

Pradeep


My custom fields are not visible on Contact's Activity Log

Have you enabled detailed logging (this is disabled by default)?

If no, you can enable this from the Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.) menu option -

/civicrm/admin/setting/misc?reset=1

This feature records a full history of all changes made.

Please note the below before this feature is enabled -

Detailed logging (aka "logging") allows you to maintain a full history of all changes made to everything in CiviCRM. It's a powerful feature which is turned off be default — because it's a bit overkill for most organizations, and it comes with some downsides too.

Full details can be found HERE


Custom date field formatting with smarty

Found the answer. The civi field token must be captured to a Smarty variable first:

{capture assign=arr}{contact.custom_105}{/capture}{$arr|date_format:"%A, %B %e, %Y"}


I was advised by another organisation to set the tax rate to 20% and this is now working correctly showing the correct gift aid amount as calculated at 25%. So this matter is now sorted.


Calculate a better price for Webform CiviCRM Payment Installments (Annual)

That’s still on the ToDo list. Can you open an issue for this in the Drupal queue? I’ve got a small PR related this that I need to submit - will have a look at how to resolve this as well.


As it turns out,  this appeared to be a file ownership problem (at least for me) and after changing the ownership to the appropriate account, I was able to continue.  I'm not sure why the error message was like that ... everything else was set correctly ... and I wish the error message was more clear.  But if anyone else is searching on this topic, it's worth a shot to make sure that every file in the civicrm directory has the same user.  If not, chown with recursion.

I had some files with the account username and some with root.  My bad.

Thanks to the commenter above for your willingness to help!


Why is my search for a specific contact subtype giving no results?

I remember there was a patch for a contact type search...let me dig....that was with CiviCRM 4.6 and the issue was https://issues.civicrm.org/jira/browse/CRM-18063. The patch worked for me, but I am not sure if you have the same problem?


error when making contribution page - "No Contribution Price Sets have been configured"

You need to select price set or Add amounts under 'Fixed Contribution Options'


Send different event confirmation emails

Make two different Message Templates yourself and use CiviRules (also requires Email API extension) to send out the correct one based on the Event someone registers for.

If you need payment details as well then make your default CiviCRM Event Registration template just contain the default bits like profile and payment/receipt details.

The second Email via CiviRules/Email API will contain the Event specific information.


Membership renewal forms - am I handling this correctly?

What i do is I have the same profile, but since they see the info filled in, they can just browse over that area. I have found it helpful as some people like to update info, such as, in our case, emergency contact, and volunteering preferences.


If you are talking about eg http://d46.demo.civicrm.org/civicrm/report/instance/2?reset=1 then no there is no option via the UI to do so. A developer would be able to add such a feature I expect.

Meantime there are other options such as: you can use eg Advanced Search, find the contacts you want to export, select "Select fields for export" then in the Export Mapping you can set the Tags field, and it should include that data with all the contacts Tags in a single cell separated by a comma. eg

Irvin Deforest | Volunteer,Major Donor
alidacooper@airmail.biz | Volunteer,Major Donor

You can then save that Export for future use. I have done this on Demo - it is called Contacts and Tabs via "Select fields for export" and then look under "use Saved Mapping fields".

But demo site will flush in a few hours

HTH.


How to connect to REST API from remote host?

To get the rest API working, you need to call an url looking like that (this example to create a contact)

http://www.mysite.com/wp-content/plugins/civicrm/civicrm/extern/rest.php?entity=Contact&action=create&api_key=(myAPIkey)&key=(mySiteKey)&json={“contact_type":"Individual","first_name":"Tester","last_name":"Yolanda"}

The specific path to rest.php depends on what CMS you use

A few pointers:

you need to set the key with the site key (from civicrm.settings.php)
you need to create an api key on the contact that peforms the operation, and
this contact needs to a user that has the appropriate permission (start with an admin account to rule out the permission issue)

This being said, your error message is not normal, you should get a "Failed to authenticate key" error message

https://civicrm.org/sites/all/modules/civicrm/extern/rest.php

it might be that you don't use the proper url to reach the rest.php file, or that something needs to be configured on your webserver so it's properly processed

What is the url you try? it's a different one from the ajax api used by the api explorer

X+


Styling the webform contact autocomplete box

If anyone's looking for it in future, it's found in

  sites/all/modules/webform_civicrm/css/token-input.css


Demerit was correct in his answer posted as a comment and it worked great! I followed this procedure:

  For that particular jump I would just go straight. But of course as always do it on a copy of the site first or make a backup that you can restore.


"CiviCase: access all cases and activities" Issues

Can you try this patch https://github.com/civicrm/org.civicrm.civicase/pull/123

Hope that helps!


You can use "Default invoice payment page" setting which is used to set contribution page that can be used to pay pending or partially paid contribution using payment processor.
More about the setting and uses:
Wiki: https://wiki.civicrm.org/confluence/pages/viewpage.action?pageId=346750980
Here is how you can achieve this

Create a Contribution Page by enabling Other amount and payment processor.
Navigate to Administer >> CiviContribute >> CiviContribute Component Settings and select contribution page create at #1 for Default invoice payment page
Create a contribution for a contact with pending status.
On User Dashboard of contact (/civicrm/user?cid=[contact_id]) under contribution section you will see pay now button against the pending contribution. When clicked on pay now it will redirect to online contribution page where one can pay pending contribution online using credit card.

You can also generate the link to pay pending contribution online http://domainname.com/civicrm/contribute/transact?reset=1&id=[contribution_page_id]&ccid=[contribution_id]

where contribution_page_id(id) is contribution page id created at #1 and contribution_id(ccid) is contribution id created at #3.
6. You can use this link to send in invoice for people to pay online.
HTH
Pradeep


Why am I getting this message when setting up membership payment page?

Isn't this because the auto-renew function on the Membership tab takes care of the recurring payment, so you don't need to also enable recurring Contributions? Does the Manual help clarify this for you?


Royal Television Society payment problem

We are the support providers for the Royal Television Society, we'll take a look and come back to you.


Handling organizations and subscriptions

Agree with others that Memberships is way to go. Organisations tend to have someone with fingers who can fill in an 'on behalf of Organisation'-type Membership form. This automatically creates a Permissioned Relationship between the contact person and the Org which can then be utilised for sending out renewal / resubscription reminders.

Note: if you want to rename Memberships as "Subscriptions" then be aware that text strings including words Members or Memberships often in multiple places in the System Template (Membership Receipt) messages. You may be able to fix some of these via Word Replacement but I suspect some need tackling direct in the template - possibly with an 'if' statement if you have some Membership Types for Subs and others for Members


When you install the Mosaico and related Extensions, you then create the Templates in civicrm and they become available to use in CiviMail, you do not upload them.

ADDENDUM:

If you have installed correctly, as per instructions, ie Shoreditch then FlexMailer then Mosaico then at /civicrm/a/#/mosaico-template you should see the word NEW on top of the base template


api4: get(FALSE) vs get()->setCheckPermissions(FALSE): which is preferred?

Core tends to use the short form but both are equally valid. The short form was introduced later just because it comes up so often that you want to set it to false.


Summing up donations on the household level

This is what you're looking for: https://civicrm.org/extensions/aggregate-household-contributions-report


It appears there isn't a merge option for SMS.
At present, I am exporting my search results and/or group, finding/removing the duplicate mobile phone numbers in Excel (via Conditional Formatting), and re-importing the remaining contacts and numbers as a new group that I can then target for the New SMS.

I don't know of a purely Civi way of doing this, but if someone has other ideas, I'd love to hear them.


I am pretty sure this happens because the link between your Civi contact id and your CMS user has broken.  This happened to one of my clients, the cause was that I moved the Civi database & not the Drupal one, so the link was broken. The table to look at in Civi is civicrm_uf_match - field is uf_id which should link to your CMS user table (in my case, it was Drupal's 'users' table)


CiviCRM Entity is the way to go if you want content creators to reference create CiviCRM data on nodes or other Drupal entity types...The downside is, assembly on some not so well documented features required. We have used it to allow users to add/edit contacts with emails etc..well as you know, I wrote that article.

There is this article too which tries to explain the CiviCRM Entity Reference field: https://skvare.com/blog/using-civicrm-entity-reference-field-submodule-inline-entity-form

If you place a CiviCRM Entity Reference field on the Contact entity, and target Emails, then it will save the email and connect it to the contact as you would expect them to be. CiviCRM Entity Reference field is a "remote" reference field, in that it doesn't save data in any Drupal field tables, but accesses the Civi data directly.

You shouldn't have to setup your forms and any CiviCRM Entity Reference fields but once, and then you can use the same config with Entityreference fields on your node type over and over.

One big disadvantage to the D7 version, is that you cannot have multiple "form modes" in D7 .. that is multiple configurations of which fields appear on edit forms.....So if you want one entityreference field inline entity form for an organization contact, and another for an individual contact, you can run into problems, because you want the  organization name for the org contact, and maybe first / last name for the individual contact.

You can use hook_form_alter or css to hide fields when needed though too. You would configure your contact edit form to have all the properties/fields you may need, and then hide them as necessary for the different reference fields. That will require some development and special knowledge.

CiviCRM Entity is a very powerful tool, but does require some learning and elbow grease, and sometimes code, to make very custom setups.

As to which tool to use when, that depends on the use case IMO. I'd be happy to chat about it sometime on CiviCRM mattermost, chat.civicrm.org, civicrm entity channel, just ping jackrabbithanna. We use Webform CiviCRM alot too.


Can I use different financial types for membership registrations and renewals without losing functionality?

As a member of the CiviCRM documentation team I will follow up on that quote, as I am not sure what it means myself. It may be left over from earlier times and no-one has been brave enough to modify or delete it.

From experience I can tell you that you can create the new financial types for income that you need.

My organisation also uses different accounting codes for new memberships and for renewals and I have created a different financial type for each.

For historical reasons we use a different contribution page for our renewing members than the one set up for our new members. You would not need to do that if you are prepared to have two price sets on the same page, one for new members and one for renewals.

In terms of reporting, you may need to use the line-item report from the Extended Reports Extension to give the income broken down by financial type.


Assuming the webhook runs as a specific user, you can disable the IDS (it's one of the permission)

So if you create (on drupal) a role "trusted user", disable the IDS check permission for that role only and grant that role to the webhook user, you should be ok


Civi is Requiring "On Behalf of Organization" fields when that's not even checked

Never did find a good solution. We ended up just removing the option from the form. At the time, I think we misunderstood how CivicCRM works and what the purpose of "on behalf of an organization" was. One thing we learned though, that might help you. The organization in question has to already exist in the database. I think that is still true for the latest versions of CiviCRM.

Anyway, we just tell donors that if they want to contribute "as an organization" (note the wording: not "on behalf of an organization" but rather, "as an organization"), then they need to use a corporate credit card or a corporate bank account. That way, the organization entity gets the tax credit, not the individual. Civi assumes that the donor is an individual. Always, so far as I know. So, if the donor in filling out the online form is "representing" a corporate entity, that's fine. Can do that. But the payer, usually as indicated by the payer address (the billing address associated with the credit card), is the one that the IRS will look for if they ever audit. Of course, you can set it up so that the person filling out the form gets a "soft credit" whereas the actual payer (the organization) gets the hard credit. Hope this helps.


Why is my dashboard showing 503 errors? Is this a host issue or a civi config issue?

Some issues with the dashboard have been fixed in the upcoming 4.7.11 release. See CRM-16035: Dashlet refresh can crash server / Replace use of HTTP_Request and CRM-17663: Dashlet code improvements for details.

There are quite a few existing questions on dashboard issues on this site - you'll find some good answers there I'm sure for dealing with CiviCRM below 4.7.11.

The dashboard does not render
CiviCRM Dashboard Not Working - WordPress installation
Dashboard problem after installing reverse proxy server
CiviCRM Dashboard Hangs for 5+ minutes

Once 4.7.11 releases, that should resolve your problem.


Unsubscribe Confirmation Page Shows Too Much Information

Write an extension and use hook_civicrm_buildForm( $formName, &$form )
where you can change the values for the specify page

please use this link for reference for more details
http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_buildForm


Is there a way to upload multiple discount counts into CiviDiscount?

I upvoted Zachary's answer, but I felt conflicted.  I do NOT recommend importing directly to MySQL, because you end up bypassing validation logic and could create corrupt discounts.  However, their suggestion of the API CSV Import GUI is a good one, and the one I'd recommend.

If you're not sure what the values should be for your various columns, go to Support menu » Developer » API Explorer.  Set your entity to DiscountCode and action to Get and press Execute.  You'll get something much like you're seeing below.  In the "Results" screen you can see the values, which you can copy/paste.  If you already had discount codes, you may need to scroll down to find one that matches the ones you want to enter.  You can click "Add Option" to set Limit to 0 if you can't see the full list.


Contribution custom field not appearing in New Contribution window

Did you make a Custom Field on Contribution of type -any- or did you narrow it down to specific financial type(s)? If that's the case you must select the Type first when entering a new Contribution - to make the Field appear;


Implement CiviCrm SAML with Google Suite as IDP provider

Civi uses the CMS for authentication so the question is about configuring Drupal 7 (in your case) with Google SAML IDP.

I've not tried it, but a bit of googling shows a few links that look promising:

Drupal SAML Authentication module
Set up your own custom SAML application


Issue using shortcode to insert Contribution Page into a WordPress Page

Try disabling the Jetpack Open Graph component and see if the problem persists.


I have everything done and still this red no go

So I'm no tech, this is going to me layman's terms.

The issue fixed by going into FTP to the plugins file and adding a file named "files" and then dropping the civicrm folder into that file named files.


I just created a working example for curl and tested it on linux. Do also URL encode the curly braces. I used the this website to do that. So {"contact_id":"358383"} becomes %7B%22contact_id%22%3A%22358383%22%7D .

I used curl with different parameters. My example is

curl -X POST "http://localhost/sites/all/modules/civicrm/extern/rest.php?entity=Contact&action=get&api_key=XXX&key=XXX&json=%7B%22sequential%22%3A%221%22%2C%22id%22%3A%222%22%7D"

Update: I see I am a bit misleaded by the example generated by the api explorer. JSON for parameters is not mandatory. It is possible to use the following format.

 curl -X POST "http://localhost/sites/all/modules/civicrm/extern/rest.php?entity=Contact&action=get&api_key=XXX&key=XXX&json=1&contact_id=2"

See REST API without JSON just key=value .


What is the best way to alter menu permission?

Could hook_civicrm_alterMenu be what you need?


bulk email to two addresses - tokens don't work

You could try this extension for tokens & see if it helps
https://github.com/eileenmcnaughton/nz.co.fuzion.civitoken


Unable to launch a fresh install of CiviCRM

Two "simple" things jump to mind immediately.  Did you do a recursive change on the sites/ folder, chmod -R 755 sites?  Secondly, and I'd assume from the error message that you did, but you did install the l10n package, correct?


How to add the address column in a report

You need something like this:

LEFT JOIN civicrm_address address_civireport ON contact_civireport.id = address_civireport.contact_id AND is_primary = 1

and then you need the column street_address.
Enough to get you a step further?


quick search autocomplete not working on civi 4.6.20 drupal 7.50

This was a hosting issue. ModSecurity rules had to be edited. Not a 4.6 update issue at all.


Sounds like some javascript got pasted into a rich text editor ("WYSIWYG"), and the result is linebreaks in the JS are being interpreted as content linebreaks and wrapped in <p> container.

Simple fix: edit the content containing the JS, and use the "View Source" button or equivalent to enter the JS in source mode rather than content mode.

More robust approach (less easy to break, etc): add the JS via a custom template (see "Appending jQuery or other code") or from a custom extension.


FYI - Sending mail via G Suite - Google announce username/password authentication will be turned off

CiviCRM is not responsible for authentication of users (that's the CMS, ie. Drupal or WordPress). Using OAuth2 (or other protocol) for authenticating CiviCRM to another system would be the responsibility of the extension that wants to do that.

Or do you see a reason to include Oauth2 in core CiviCRM?

I'd be hesitant about using Oauth2 before fully understanding what you're getting into - here's a helpful blog w/ links from Colan Schwartz:

https://colan.consulting/blog/authenticating-drupal-users-oauth2


anyone getting "IPN warning" emails from PayPal?

Thank you for the confirmation others are seeing this issue. In the end, this solved it for us - add lines 4-6 from the following code (lines 1-3 and 7-9 included for reference) to file /CRM/Core/Payment/PayPalProIPN.php

CRM_Core_Error::debug_var('GET', $_GET, TRUE, TRUE);
CRM_Core_Error::debug_var('POST', $_POST, TRUE, TRUE);
if ($this->_isPaymentExpress) {
  if (empty($this->_inputParameters['rp_invoice_id'])) {
    return;
  }
  $this->handlePaymentExpress();
  return FALSE;
}


Issues with refunds for credit card payments

You don't say what version of CiviCRM you are using.

In 4.7 you need to record the refund against the registration record. This can be done at the time you alter the registration or by viewing the event registration later on.

In both case you will get a screen that clearly offers you chance to Record refund.  ]1


CiviReport - Add days to Transaction Date for Estimated Deposit Date

This is not an elegant solution by any means.  But it does work.  So there's that.

To start, I copied the Bookkeeping transactions report from here (sites\all\modules\contrib\civicrm\CRM\Report\Form\Contribute) and renamed it Reconcile.php and placed the new file in my custom PHP folder so I wouldn't be adjusting the original report.

I renamed the class on line 35 to CRM_Report_Form_Contribute_Reconcile so the class name and file name match.

My report does not require both the Receive Date and Transaction Date columns, so I re-purposed the Transaction Date column. (Truthfully, I would rather have been able to add a column for this, instead of re-purposing an existing one... but alas, I didn't know how). In the function __construct(), under 'civicrm_financial_trxn' 'fields', I changed the 'title' of 'trxn_date' to 'Est Deposit Date'.  Approx line 299:

'trxn_date' => array(
  'title' => ts('Est Deposit Date'),
  'default' => TRUE,
  'type' => CRM_Utils_Type::T_DATE,
),

I also changed the title in the 'filters' section so that the UI would match.

Then in 'function select()', I added another case to the switch ($fieldName) (which begins approx line 371). Our payment instrument 1 is credit/debit cards. Our payment instrument 2 is ACH/EFT.

//adjust Transaction Date column to yield adjusted dates for Estimated Deposit Date
case 'trxn_date':
  $select[] = " CASE
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 1 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 1
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 1 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 1 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 6
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 3 DAY)

     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 1
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 10 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 2
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 9 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 3
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 8 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 4
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 7 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 5
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 6 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 6
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 5 DAY)
     WHEN {$this->_aliases['civicrm_financial_trxn']}.payment_instrument_id = 2 AND DAYOFWEEK({$this->_aliases['civicrm_financial_trxn']}.trxn_date) = 7
     THEN DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 4 DAY)

     ELSE DATE_ADD({$this->_aliases['civicrm_financial_trxn']}.trxn_date, INTERVAL 2 DAY)
     END AS civicrm_financial_trxn_trxn_date ";
break;

I'd be curious to hear and learn how others might have tackled this. I know I could have done this as an extension, but that would have been more work for me at this point.  Maybe if I learned the extension system better it wouldn't be more work in the future.  :-)  I also initially tried finding a solution in Drupal Views, but I couldn't sort out how to add days to a date within the Views ecosystem.


Agreed that the correct solution is to work within getBasicContactFields(), but since your question is a good one with a more general application:

When you add organization name and prefix, you're doing so by adding them to the class's _columns property.  As you note, this doesn't look up "pseudoconstants", such as converting prefix_id to a prefix.

That happens in the alterDisplay method toward the bottom of the same file.  Here's a good example in the Lybunt report of using a pseudoconstant lookup to convert the gender ID to a gender:

https://github.com/civicrm/civicrm-core/blob/master/CRM/Report/Form/Contribute/Lybunt.php#L719

Hopefully this example is what you need; otherwise feel free to comment/update the question!


How do you save generated content not tokens in emails & print/merge?

The feature seems to be available just it seems very few components use it. For example if you do a contribution search and then choose to send thank you letters from the actions dropdown, it DOES convert the tokens in the filed activity on the contact.

In the code if the caller of this function includes the $perContactHtml parameter, then the activities get filed with the tokens converted:
https://github.com/civicrm/civicrm-core/blob/5.18.4/CRM/Contact/Form/Task/PDFLetterCommon.php#L278

The contribution one does do that, e.g.
https://github.com/civicrm/civicrm-core/blob/5.18.4/CRM/Contribute/Form/Task/PDFLetterCommon.php#L127

and here is where it resolves the tokens:
https://github.com/civicrm/civicrm-core/blob/5.18.4/CRM/Contribute/Form/Task/PDFLetterCommon.php#L431

But it seems most of them don't and so it uses the default which is just the verbatim text.


ProPublica Congressional API CiviCRM Module

The successor to the Sunlight API Dupal module is the Civi-native Electoral API extension.  I wrote documentation back when I was collaborating on the project, but it seems to have been taken down.  I will investigate finding a copy and getting it online.

You may also be interested in the CiviCRM for e-advocacy page.


Can a Profile have hidden fields with preselescted or predefined values?

I've used a custom template page with jquery to do something similar. (I wanted the event to assume they were registering themselves and one other person - and NOT allow them to see they could choose how many.)

I wrote a quick jquery statement to preselect the value and then hide the option altogether with css.

https://civicrm.org/blog/hershel/how-customize-civicrm-pages-jquery