How do I run CiviCRM PHPUnit tests from within Netbeans?

[This all assumes you have civicrm-buildkit already working and that you can run CiviCRM phpunit tests successfully from the command line.]

1. Tell Netbeans which phpunit executable you're using.

Go to Tools » Options, then PHP tab, PHPUnit subtab.
Set the path of your PHPUnit script.  See screenshot:

2. Create a shell script with your environment variable.

Copy this script into a file anywhere on your filesystem:

#!/bin/sh
env CIVICRM_UF=UnitTests /path/to/your/phpunit5 $@

3. Tell Netbeans where to find your tests.

Go to File menu » Project Properties, Testing tab.
Click Add Folder and select the <civiroot>/tests/phpunit folder.  See screenshot:

4. Tell Netbeans the CiviCRM-specific info it needs.

Go to File menu » Project Properties, PHPUnit tab.
Check the Use XML Configuration box.
Set the XML Configuration path to <civiroot>/phpunit.xml.dist.
Check the Use Custom PHPUnit Script box.
Set the PHPUnit Script to the path of the file from step 2.

5. You're ready to go!

From any PHP file in the main codebase, press Ctrl-F6 (or Run menu » Test File) to start your tests.  You can also re-run only failed tests.

Troubleshooting

If PHPUnit isn't working, bring up the "Output" window (Window menu » Output).  This will show you the exact command Netbeans tried to run.  You can run it on your command line to compare results and tweak it.


CiviCrm Custom Fields - Random Number Generation

There is no built-in way to do that, but it would be an easy extension.  Could you give a bit of background about how you would use the random numbers?


I'm not sure, but these extensions may help:

1) CiviStats: https://civicrm.org/extensions/civistats
2) CiviWCI: https://civicrm.org/extensions/civiwci


with Price Sets you can add a field that is an integer that you can set so that those people are counted as 'attendees' for the sake of counting the number of registrations. You should find some helpful instructions here but I am not seeing images currently.

You should then be able to use either the front or back end to make a registration for the 'head of household' and then e.g. put 6 in that price set field to have that registration be counted as having 6 attendees.

That may go some way to what you need.


Create User Account profile creates error Undefined index: location_type_id in CRM_Dedupe_BAO_Rule

Since you talk about /user/register (which is not a drupal webform but a core drupal form) then this should be a Civi Profile and that is where you would edit the Location Type.

Your screenshot shows you have a Profile called "Name and Home Address" -

have a look for 'edit' on one of the fields in the Profile eg 'Street' and there you should be able to specify the location type of 'street'


Is anyone creating tickets or printing bar codes from CiviCRM?

Years ago we used 'QR Code Checkin' extension for one of our clients. Using the extension you can email the QR code to participant and same extension can also be used to confirm the registration.


The way I would do it is create a Constituent report through here - /wp-admin/admin.php?page=CiviCRM&q=civicrm%2Freport%2Fcontact%2Fsummary&reset=1

You can add in the fields you'd like the report to show (so address fields in your case).

Once you've created the report, you can copy and paste the report URL and add it to the menu here - /wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Fmenu&reset=1


Duplicates being created by Webform Submissions

We’ve come across this issue several times in the past and our solution was to use the below Drupal module –

https://www.drupal.org/project/hide_submit


Token information not pulling through to Mailing Template

{membership.start_date} was never supported in token list for sending mailings unless you have any custom extension or module that generates one.

{membership.start_date} token is supported only in Schedule reminders(for memberships) or printing letters for membership.(i believe). The schedule reminder screen allows you to save the template so that it can be used in future. If you using the same message template to send mailings then the tokens other than contacts won't get replaced unless you have custom code that deals with such tokens.

Civitokens extension does allow some additional token like latest current membership which can be used in mailings however you will need to replace the existing token with the new ones.

The error message you posted seems like your server doesn't have permission for apache user to download/extract the extension from UI. Alternate way is to download the extension and extract into extension directory and install it manually.

HTH

Pradeep


Keeping track of sessions attended for one to one program "package"

You could create activity types for Packages & Consultations. When a package is purchased create an activity in the contact record. As they use their consultations record them as activities. You can then run Activity reports (or search) filtered on those activity types.

Hope this helps.


How do I uncheck the recurring contribution check box by default?

You're in the right place to see what's going on, but the wrong spot to do anything.  The field will arrive in the template fully-rendered, within {$form.is_recur.html} or an equivalent Smarty variable. Editing the template won't help you there.

The form PHP code would allow you to change it, but that's not the best way to go about this: doctoring core CiviCRM code is a bad idea, and while there's a way to set up override files for code files, it's a clunky method.  Besides, you'd have to navigate Quickform, which is a headache in itself.

The better approach to forcing a checkbox checked or not is to use jQuery.  You'll have CSS-style selectors, so you won't need to troll through the templates to see where to alter the box.  You can add your code in one of three places:

Somewhere in your WordPress theme
In an extension you write, using the Resource addScriptFile method to add a script within hook_civicrm_buildform (the preferred method)
Using an .extra.tpl file in your template override directory


Display Custom Fields in Activities in Views

Nope.  That is not expected behavior.

If you have two separate databases, one for Drupal and one for Civi, then you'll need to add the tables to the settings.php file.  Until you add them, Views will show the fields as available but will display an error that the table could not be found.

Every time you add a new custom set of fields, you'll need to go to Admnister/System Settings/CMS Database Integration, copy the code there and paste it into your settings.php file.


The issue went away once I adjusted the membership rules.

I disabled Grace because we want users to renew right away. I changed the expired rule so that the start of the event is the end date and the end of the event is not selected. See screenshot.


Importing contacts and their relationships

If your csv includes eg First, Last and Organisation, then in the mapping, way way down the bottom, you will see the options to set the organisation field to map to something like 'relationship, employer of' and then choose eg 'organisation name' and that should take care of it.


Allow duplicate contacts with the same email

You will want to adjust your Deduping and Merging settings (top menu > Contacts > Find and Merge Duplicate Contacts). See https://docs.civicrm.org/user/en/latest/common-workflows/deduping-and-merging/ for info.

If you're using the default rule that comes when Civi is installed, any contact with the same email will get merged automatically as you're experiencing. It wasn't good for us either because we have so many families and couples who share email addresses.

You will want to 'soften' your Unsupervised rule (the above link has instructions on how to adjust the rules). We changed our Unsupervised rule to take names and birth dates into consideration as well (see image below).  We do get the occasional duplicate contact (Robert Smith with rsmith@example.com is technically not a duplicate of Bob Smith with rsmith@example.com according to our rule), but we'd much rather have easy merges to do than the much more difficult task of 'un-merging' two contacts.


The top two complaints we hear the most from organizations about their previous providers are:

lack of responsiveness/customer service to inquiries.
consistency in maintenance and updates.

When we take over hosting and maintenance services, we try to identify any technical debt that exists so it can be addressed as early as possible in the engagement.

I recommend paying attention to what sort of site/code audits the provider does upfront. It will likely save you in the long-term and start everyone off in the relationship with better and more information.


What's the purpose of the hash added to filenames in custom folder?

Two reasons I can think of:

what happens if you upload twice a file with the same name for different contacts? the hash allow to avoid overwriting
probably increase a bit the protection and privacy too, eg. by guessing and trying to download warren_buffet.jpg or bill_gates.jpg, we could know if you have some wealthy donors in your db

This being said, it's been there since forever and I never quite questioned it.

If it's for mass uploading contact images, you can probably just set the field into civicrm_contact and put the image at the right place, I remember having done something like that a while ago, it probably still works

as andy detailled, you need to touch a few more tables if you want to upload the file in a custom field

add a row to civicrm_file with the file name
add a row to civicrm_entity_file to link to the contact id, civicrm_file table & your custom table
update your custom table with the numeric id from the civicrm_file
upload the file into the right folder


hook_civicrm_post - on creating event cannot update the record in `civicrm_event` table

See custom fields, See custom fields
http://docs.civicrm.org/user/en/4.6/events/custom-data-for-events/


There is a FinancialType API which returns the name with the ID, for example:

$financialTypeName = civicrm_api3('FinancialType', 'Getvalue', array('id' => $financialTypeId, 'return' => 'name'));


Smart groups are kind of complicated. If you've got a small install, using the defaults will generally just work, i.e. there will be temporary caching that gets refreshed when necessary.

To answer your first question though, smart groups are updated depending on the timeout configuration and/or the scheduled job, and also depending on urls being loaded.

To answer your second question - if you mean disabled instead of hidden, then the answer is that I don't think they are ever updated. But if you mean when you're looking at the groups of an individual contact - then the smart groups are only calculated when you open the section of the page that displays them.

In other words, there are quite a few clever ways that CiviCRM tries to cache smart group results to avoid long re-calculations.

If you've got performance issues, especially with a larger install, then you'll want to think about the configuration under the Administer -> Customize Data and Screens -> Search settings. In there you can set a different default timeout for the smart group cache so that your site isn't constantly recalculating smart groups. You can also set this to a very large number and then use the system job to selectively regenerate the cache as appropriate for each smart group.

BUT, this gets tricky and is often counter-intuitive about the results, you'll find quite a few discussions about optimal settings for this.

The best advice (yes, not your question) is that if you're having issues, e.g. with slowness due to caches being rebuilt, then the first thing to do is to get rid of unused smart groups. A couple of smart groups that include all your contacts (e.g. all individuals) can really take a long time to regenerate for a large number of contacts.


Two domains, one site how to manage civicontribute?

This page: https://wiki.civicrm.org/confluence/display/CRMDOC/Multi+Site+Installation

Plus Domain Access Module (Drupal) got me 90% of the way there - however no matter what I try, contribution pages and event pages auto-generate their page links with the primary domain.


Feature Request: Partial Event Registrations (like abandoned carts)

It depends on the scale of the partial registrations you have, but I don't think you need any additional functionality. We get a small number and I think they are best followed up manually. All of them have been people failing to complete the transaction in PayPal. One was them was someone who fell asleep (!) and the rest were people uncomfortable with anything online and not understanding PayPal and a friendly personal email was the right thing where an automated message would probably have not helped.

You can Find Participants with status "Pending (incomplete transaction)". Also I think you need to do it manually so that you can see if they tried again soon afterwards and were successful, which has often been the case.


Editable "Other" option in multiple choice / select field?

This has been a feature request from time-to-time, and would be a great one to submit to the Paid Issue Queue.

If you want to DIY a solution I'd suggest you create a simple textfield as your custom field, and then use jQuery to add some extra radios that hide and populate the field unless the "other" box is selected, then show the field.


Can Twilio 'from' number be a text field with the organisation name?

Yes, it's easy. You have to ask Twilio customer support to enable 'Alphanumeric Sender ID' in your project.  Here's the link for that.  Once that's done then all you need to do is to set the 'From=' in Administer/Settings/SMS Providers to whatever you want.  Of course, users cannot then reply or 'STOP' etc.  But it works and there's nothing to enter or change in your Twilio account once the alphanumeric send ID is enabled, just update Civi with your chosen text.


Yes you can do some comparison in CiviRules using the Field Value Comparison condition. Assuming that your external ID is a custom field (in CiviCRM an external identifier has to be unique....) you might be able to work your way through. It might mean you have to develop a specific condition though.
And please note that the "link them together as a partner organization" is an action, not a condition :-) And it will definitely be bespoke development, but possible.


Can't get through initial install - dashboard error page

I followed the instructions on Word Press Install Missing civicrm.settings.php; dashboard unavailable; no menus and was able to add the following immediately after the initial <?php line of my wp-content/uploads/civicrm/civicrm.settings.php file:

global $civicrm_setting;
$civicrm_setting['Directory Preferences']['customTemplateDir'] = 'public_html/wp-content/plugins/civicrm/civicrm/templates/';
$civicrm_setting['Directory Preferences']['customPHPPathDir'] = 'public_html/wp-content/plugins/civicrm/civicrm/php/';
$civicrm_setting['Directory Preferences']['extensionsDir'] = 'public_html/wp-content/plugins/civicrm/civicrm/extensions/';
$civicrm_setting['URL Preferences']['extensionsURL'] = 'https://www.<website>.com/wp-content/plugins/civicrm/civicrm/extensions/';
$civicrm_setting['URL Preferences']['imageUploadURL'] = 'https://www.<website>.com/wp-content/uploads/civicrm/persist/contribute/';
$civicrm_setting['URL Preferences']['userFrameworkResourceURL'] = 'https://www.<website>.com/wp-content/plugins/civicrm/civicrm/';


Upgrade from 5.14.1 to 5.15.0 throws error

As per comments this was caused by a customized Event.php file in the custom php folder set at administer - system settings - directories.


Why does a Smart Group disappear when assigned a Parent

On the manage groups screen is there a triangle to the left of the word 'Members' that expands to show the child groups when you click on it?  There should be.


I am the Director of Organizational Technology for the National Federation of the Blind (the largest and oldest consumer organization of blind people in the US). We have used CiviCRM for a few years to collect data from our website. Since October 2015 it has become our primary member, donor, subscription, and event management database.

The majority of our users (blind or sighted) access CiviCRM through a “portal” we had custom developed. Mainly, this is because we are working to provide access to our affiliates and chapters  around the country and needed a way to containerize their access, but it did also provide a more accessible front end. However, myself and a couple other users do use the Civi backend with screen readers.

From the perspective of using Civi from the backend, I would say that an experienced screen reader user can learn the tricks required to use Civi. I’m a blind user and while I have encountered issues with the interface, I have successfully navigated most of them. In general, the following summarizes my experience with CiviCRM 4.6.5 and JAWS:

The menu bar is keyboard accessible, but awkwardly. Generally I find it best to focus on the first item then TAB (as opposed to arrowing) to the top level menu the user wants to interact with before pressing ENTER to activate the pop-up menu. You will then have to locate the HTML list element containing the menu choices. Often this element appears after the menu bar, or at the bottom of the virtual document (sometimes depending on the CMS theme, sometimes depending on, seemingly, the browser’s mood). In either case, it will not appear immediately “under” the activated menu.
The global contact search field has an autocomplete. While it does actually work with the keyboard, the information the screen reader reads when arrowing through the choices is the contact ID, not the name and other information that is visible on screen.
Accordion panels in the contact record cannot be expanded with the keyboard. In general, panels containing certain contact data (demographic information, address, etc.) are collapsed by default. It is necessary to use the mouse (JAWS) cursor in order to expand these panels.
Civi makes use of the Select2 library in a number of places to generate certain pop-up lists. Basically, the library creates an edit-combo box (one where you have both a pre-defined list of options, but can also type in to narrow this list). While these elements are keyboard accessible, there are occasionally focus issues. As an example, choosing a date range  filter on searches offers selections like, “previous year,” but also allows the user to choose a date range. When selecting the choose a date range option edit fields appear next to the dropdown allowing the user to enter a start and end date range. However, for a screen reader user, pressing TAB after selecting this option will focus on the next group of fields, bypassing the date range fields. Although they don’t use Select2, this behavior is also observed with combo boxes that dynamically populate other combo boxes (like on the import data screens).
I think there are a couple places where fields lack proper labels, but I would need to hunt up specific examples.

I believe most of these issues also persist in 4.7, though we haven't upgraded our production install yet.

I do have web accessibility and development experience and ideas for fixing the issues I've identified. I'm happy to get more involved in CiviCRM development and work with anyone interested in broadening accessibility. We've been pretty focused on getting our install up and our two Civi databases merged, but I should now have more time to start contributing on the accessibility front.

In the interim I'm happy to discuss how I get around the present issues with anyone who needs that advice.

Rachel


As per the code the select list loads all relationship types of corresponding Contact's contact Type. So for instance [Employee of (Individual type), Employer of (Organization Type)] Relationship Type(RT), if you are going to add relationship for Individual Contact A then on you will only see 'Employee of' (not 'Employer of') RT.

In your case "other projector contributor' and 'other project contributor is' are both related to same contact type thats why you are able to see both on select list.


Event registration's 'Continue' button disappears when Payment Processor is changed

The missing button is there - it just has display set to none. It looks like there is a bunch of javascript on the page that hides various things, then reshows them - but I'm guessing behaves differently for different payment processors.

The issue looks to be the javascript is using .prop to reshow the element.

      $('.crm-submit-buttons input').prop('disabled', false);

This function was added to jQuery in 1.6 but it looks like you are using jQuery 1.4.4. If you are able to use a more recent version of jQuery you should hopefully see the missing button load. There are a number of solutions documented here:

To easily update your jquery you can use this module to check if it resolves the issue. https://www.drupal.org/project/jquery_update


Extended Report - Line Item report for price sets final line concatenating all records

This is because of full group by mode. I feel the latest version of CiviCRM group bys with fields that are mentioned in sort by(order by). Try after clearing the sorting fields.


Create custom entity in CiviCRM with its UI form for data entry?

It sounds like you want to use the CiviCRM Webform Integration module and start a case in CiviCRM when an application form is submitted?


Yes, you definitely can connect CiviCRM to Mandrill for email delivery, including mass emails. Theres also Sparkpost etc. We did a video on the subject if you're interested. https://youtu.be/lQvl4i86Z6Q


custom fields type "Select Date" are broken as of 4.7

Yes I did, and I posted a fix to that issue. You can find it under the "links" section.


How to get Target Contacts from Api4 Activity.get call?

For joining explicitly by adding an ActivityContact join then a Contact join instead of just a Contact join with "Using ActivityContact" in the explorer, I think it's just the Contact join that is causing you problems.  Either join on contact.id not id, or omit the explicit clause to use the implicit one.
ie use:
    ['Contact AS contact', TRUE, NULL, ['contact.id', '=', 'activity_contact.contact_id']],

or
    ['Contact AS contact', TRUE, NULL],

Both this:
$activities = \Civi\Api4\Activity::get()
  ->addSelect('activity_date_time', 'subject', 'details', 'contact.display_name')
  ->setJoin([
    ['ActivityContact AS activity_contact', TRUE, NULL, ['activity_contact.record_type_id', '=', 3]],
    ['Contact AS contact', TRUE, NULL, ['activity_contact.id', '=', 'contact.id']],
  ])
  ->setLimit(3)
  ->execute();

and this:
$activities = \Civi\Api4\Activity::get()
  ->addSelect('activity_date_time', 'subject', 'details', 'contact.display_name')
  ->setJoin([
    ['ActivityContact AS activity_contact', TRUE, NULL, ['activity_contact.record_type_id', '=', 3]],
    ['Contact AS contact', TRUE, NULL],
  ])
  ->setLimit(3)
  ->execute();

produce the same sql:
SELECT `a`.`id` AS `id`, `a`.`activity_date_time` AS `activity_date_time`, `a`.`subject` AS `subject`, `a`.`details` AS `details`, `contact`.`display_name` AS `contact.display_name`
FROM civicrm_activity a
INNER JOIN `civicrm_activity_contact` `activity_contact` ON `activity_contact`.`activity_id` = `a`.`id` AND `activity_contact`.`record_type_id` = \"3\"
INNER JOIN `civicrm_contact` `contact` ON `activity_contact`.`id` = `contact`.`id`
WHERE ((`a`.`activity_type_id` IS NULL OR (`a`.`activity_type_id` IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 17, 19, 22, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57)))) AND (`a`.`is_test` = \"0\") AND (`a`.`is_deleted` = \"0\")
LIMIT 3
OFFSET 0

(API Explorer 4 on 5.36.alpha1)


How do I use the javascript field in the price_sets table of the database

I don't see any evidence that that field was ever used for anything. If you want to insert javascript into the page see https://docs.civicrm.org/dev/en/latest/framework/resources/#javascript which you can use as part of an extension: https://docs.civicrm.org/dev/en/latest/extensions/


Copy a Sites Customizations (Custom Fields, report instances, etc)

The API approach you're using is the "best" approach - but agreed it can be slow.  There are alternative approaches though:

Delete all the records in civicrm_contact with a direct SQL call - except the default organization and logged-in user.  This will remove most of the other records (e.g. contributions) via cascading deletes.  However, it doesn't delete all records - e.g. activities.  With a similar delete of civicrm_event, I would usually call this "good enough", if the resulting database will never see production use.  I'd avoid this if your dev work involves reporting on activities, financial line items, or other tables that lack foreign keys.
Store your CiviCRM config in code.  CiviConfig is an option; others have written a "Features CiviCRM" extension for Drupal folks, and of course you could do this with hook_civicrm_managed.  However, the tools for creating these configs are weak!
Depending on my staging site's requirements, I'll often use a RAM disk for MySQL and store it all there.  This usually gives me a 250% speedup on API calls compared to raw SSD - if your database is stored on spinning disks the improvement will be far more dramatic.  Just remember to dump the db before shutdown!


How to empty the trash? (permanently delete)

Go to Advanced Search, tick the box, 'search in trash'. hit 'enter/search' - that should give you all those in Trash (and ONLY those in Trash) and from Actions you can then choose 'permanently delete'


Drupal 8 / CiviCRM ; Directories that need to be manually created?

Nevermind....
I was accidentally using the drush-10 and I see that drush-8 is recommended.
That fixed my woes.
composer require drush/drush:^8


The Error message does not say none is selected. It says the option selected is not one of those options.


I guess you have disabled the CiviContribute Component which lead the function to return NULL for account relationship.


Yes - you can put a "1" in the "Usage limit" field.  See screenshot below:


How to permanently delete contact with API?

You can pass the skip_undelete parameter to the API, ie.

$result = civicrm_api3('Contact', 'delete', array(
  'sequential' => 1,
  'id' => 9999999999999999999, // replace with your contact's Id.
  'skip_undelete' => 1,
));

Obviously a lot of care has to be taken over specifying the id to delete...


How can I set up a BCC option for automated messages?

You could set up a second scheduled reminder for the membership and have it go to the administrator only.  You could even customize the message to be more concise and provide information that he or she needs (like the contact's full name and a link to the contact record on the backend) but wouldn't naturally go in the email to the member.

Although this wouldn't be the precise email that the member receives, it'll be driven by the same process, and you can set the same timing for it.


What are all these missing CiviCRM CSS and jQuery files?

Some of those files should exist in the 4.7.15 filesystem; others shouldn't.  The question is why those files are being called at all.

Most likely, you have an "HTML Snippet" somewhere in Drupal - perhaps a "sign up for our website" block or similar.  HTML snippets really should be removed if possible - but if that's not doable, you should generate a new HTML snippet and replace the older one.  That should cause MOST of these to go away.

The other thing I'm noting is that the jQuery plugins SHOULD load, not 404.  I'd check to see what happens when you visit those links directly.  It could be an HTTPS redirection issue.


How can I integrate Google Forms with CiviCRM?

You can do this by adding a Google Script and trigger to your Google Form, and installing Form Processor on the CiviCRM side.
Configuring Form Processor is out of scope of this question - there are documentation and blog posts available to explain that.  However, no documentation exists for the Google side.
Instructions

From the Google Forms editing screen, click the More menu (three vertical dots) and select Script Editor.

This won't appear if you're too zoomed in.

Paste the following code into the editor and press Save (latest version on Github):

/**
 * @OnlyCurrentDoc
 */

function onFormSubmit(event) {

  // Set the values on these four lines for your Form Processor and site.
  var url = '<API3 REST Endpoint here>';
  var api_key = '<api key here>';
  var site_key = '<site key here>';
  var form_processor_machine_name = '<machine name of Form Processor here>';

  // Don't modify anything below this line.
  var submission = {};
  var responses = event.response.getItemResponses();
  for (var i = 0; i < responses.length; i++) {
    // Convert all non-alphanumeric values in the title to underscores, lowercase as well.
    title = responses[i].getItem().getTitle().replace(/[\W]+/g,"_").toLowerCase();
    submission[title] = responses[i].getResponse();
  }

  var payload = {
    "entity": "FormProcessor",
    "action": form_processor_machine_name,
    "json": JSON.stringify(submission),
    "api_key" : api_key,
    "key": site_key,
  }
  var options = {
    "method" : "post",
    "payload" : payload,
    "muteHttpExceptions" : true,
  };

  Logger.log(JSON.stringify(submission));
  // Fire the webhook.
  var response = UrlFetchApp.fetch(url,options);
}

Modify the indicated lines at the top of the script to add these values:

The URL of your REST endpoint (varies by CMS and by CiviCRM version; check the REST Endpoint documentation);
The API key of a user with the necessary permission specified by your Form Processor configuration;
The site key (can be found in civicrm.settings.php);
The machine name of your Form Processor instance (can be found in the configuration).

In the Google Script editor left navigation, click the Triggers tab, click Add a Trigger and configure it as follows:

Choose which function to run: onFormSubmit
Which runs at deployment: Head
Select event source: From form
Select event type: On form submit.
NOTE: If you create the trigger before adding the code, Google won't ask you to authorize the necessary scopes.  Create the trigger last.

Now your forms will send the data to CiviCRM when they're submitted!  To find the names of the inputs to configure Form Processor, do a test form submission, then in Google Script editor, click the Executions tab.  The script will log the payload to Form Processor, and you can easily see the names of the fields as CiviCRM will see them.


I have noticed some quirks with how it handles the  wp_enqueue_media function. when we disabled that core function, some of the functionality started working.   I am still trying to figure it out.


Is CiviCRM planning a 'cloud' version of civicrm (perhaps using AWS or Azure)?

Yes, if by "cloud version" you mean an on-demand managed service. CiviCRM LLC is currently trialing Spark, a hosted entry-level CiviCRM offering.

https://civicrm.org/spark

This service is currently in beta, and you can sign up at the link above. From the linked page:

CiviCRM Spark — currently in Beta — allows you to get your own installation of CiviCRM up-and-running in minutes, with a specially-customized version including the new Shoreditch interface.
Spark is ideal for organizations of any size wanting to test and trial CiviCRM, or for smaller organizations and activities with up to 2000 contacts.

This offers an easy entry point to running CiviCRM, without the ongoing effort of managing a server.
Note the mentioned 2000 contact limit (as of April 2018), beyond which you could consider hosting with other providers, eg those mentioned in Erik's answer, or running your own version.


Webform-CiviCRM and the "my billing address is the same" checkbox

This feature has not been implemented in Webform-CiviCRM. If you do see that box in a webform, it's a mistake (and the fix is to remove profiles from the contribution page you are using for the webform).

Implementation of this feature would require writing some javascript to fill those fields from available data, and some php code to store the data across potentially multiple pages. The best place to put it might be in wf_crm_webform_preprocess::addResources.

Note that if the user is logged-in then the billing fields will already be pre-filled.


Emailing event participants - using 'send email' versus 'civimail'

I think I see what is happing.

When you select your  Participants (from Find participants) you only have an option for

Email send now (50 or less)

When you select your Participants as Contacts (from Adv Search) you should have an option for

Email schedule/send via CiviMail
Email send now (50 or less)

So, I think you can get what you want by searching for Contacts who were at your Event, and using that option, rather than searching via Find Participants.

NB iirc you need to have an existing CiviMail group that you use as part of this process, but it doesn't result in your participants being added to it. That said, I am not certain if all the bounce etc happens for these 'tack on' contacts but expect it would.

NB what the Action is called changes between versions so yours may be different if not 4.7.x.

READ MORE: instructions are at https://docs.civicrm.org/user/en/stable/email/mass-mailings-using-civimail/

starting with "If you are basing your mailing on search results, perform your search (for example, using Search > Advanced Search) and then choose Email - Schedule/Send via CiviMail from the Actions drop down. "


How can I edit the name provided in the billing block for an event registration?

Graham,

You will have the issue with first and last name no matter where users enter the information. The name is entered as the contact name and the billing fields are just pulling the data for the billing address.  I would like at the Civi Normalize Extension (https://civicrm.org/extensions/normalise-data-entered-firstname-last-name) to help you with this.

Thanks,
Steve


I don't think that your standard SMS gateways are going to be able to cater to this. You could certainly set something up where CiviCRM forward SMS it receives from a gateway to specific people with contact details attached, i.e. someone texts central number. CiviCRM forwards that text to a specified mobile with the originating number prepended but that doesn't help for inbound SMS.

You might be able to acheive this with Telerivet, which allows you to 'turn any phone into an SMS provider'.

If the user was OK with downloading the telerivet app to their phone, it would allow them to forward any SMS sent and received to CiviCRM. I suspect that you can limit the numbers that have SMS forwarded to certain groups / contacts within the phone but you would want to do a bit of research on that.

Not 100% that this would work but might be worth exploring. It would certainly involve a bit of playing around and experimentation, but might deliver what they need.


I may not quite understand the question. When you create a Field, if you set it to eg Select or Radio, then you get to create, or choose an existing set of field options, eg apple, banana, carrot.

Once created, you can access these to modify them either via the field itself, or via Admin > System Settings > Option Groups, or at civicrm/admin/options?reset=1

Documentation: best page i can see in book is this one, search for 'multiple choice options' on that page. Maybe documentation needs to be improved so Search for 'Option Groups' offers this page - something you could offer to do as an active member of this open source community?

GENERAL NOTE: these options belong to the Custom Group, which can then be 'used' in a Profile. You do not create or modify them in the Profile directly. Newcomers to civicrm often find it confusing as 'fields' are used in Profiles, and some aspects of them, eg title, pre-help, can be changed in the profile. But the Fields itself is created/modified via Custom Fields.


can't delete Event Registration - web page hangs with spinning logo

Update to the latest version of civicrm_entity


Want to display in a profile that a particular contact is part of a smart group related to their membership type

If you are using Drupal, why not make a Views Block showing membership status/type and put this somewhere eg /user?

I understand I am not answering the OP of 'how to show a Smart Group in a profile' but am trying to answer a more generic question "how can i show a user their membership type"

You may find a downloadable view that already does this in our Treasure Trove eg this one


I've certainly found cPanel very useful to do lots of things and easier that using ssh access (some hosting providers might not provide that). I have found it does everything I need that can't be done in the CiviCRM UI. My hosting provider (Siteground) has moved away from it to its own control panel which covers all the same functionality and has some better functionality, but there was nothing wrong with cPanel. Of course it also depends on the functions provided through cPanel as its a toolkit and they might leave bits out.


Does anyone have a working example for CiviMail bulk emails on Wordpress and 4.7.x

I found the problem. There was a breaking change in CiviCRM over the past year. We were just using the access CiviMail permission for the wordpress user used for sending bulk mail. But it turns out you now need 3 permissions. (I found this in a 3 year old forum posting.)

CiviCRM: view all contacts
CiviCRM: access CiviCRM
CiviMail: access CiviMail

Both of the following cron job commands work now. cli.php still works contrary to what I posted before -- and this is the easiest to use since you don't have to learn and install SSH or wp-cli.phar. Our wordpress system is on inexpensive shared hosting.

/usr/local/bin/php -d extension=phar.so /home/example/wp-cli.phar --user=CiviMailUser --url=http://example.org --path=/home/example/public_html civicrm process-mail-queue job.execute auth=0

/usr/local/bin/php -q /home/example/public_html/wp-content/plugins/civicrm/civicrm/bin/cli.php -j -s example.org -u CiviMailUser -p password -e Job -a process_mailing


Can CiviCRM do mass/bulk targeted e-mail "blasts" and "petitions" like Salsa, NationBuilder and other for-profit platforms?

It may help if you clarify the criteria around 'email blast to officials' but as I interpret it both 'send an email to an official' and 'sign up to a petition' can both be handled nicely using drupal webform and views.

Send an email to an official: will depend how automatically you want the target to be identified, but you could set up a View search, enter your postcode, get back a link to a webform that prefills cid2 to be the email for the designated official, and submission of the form triggers the email with or without the personal message.

Sign up to a petition: set up webform with a views block that will show eg 'number of petition signatures' and/or 'latest people to sign up' with a checkbox on the form that would allow users to indicate if they are happy for their name to show on the public roll.


You can set up cron jobs besides the main one driving all the scheduled jobs on the Scheduled Jobs page.  The way to do it is explained at http://wiki.civicrm.org/confluence/display/CRMDOC/Managing+Scheduled+Jobs#ManagingScheduledJobs-PHPclimethod

You might have your main job going every 10 minutes like:

*/10 * * * * php /path/to/civicrm/bin/cli.php -s site -u user -p password -e Job -a execute

You'll just need to add a new one for the report, let's say to send the report instance with the ID of 123 every Monday at 8:00:

0 8 * * 1 php /path/to/civicrm/bin/cli.php -s site -u user -p password -e Job -a mail_report --instanceId=123

You don't need anything in the main Scheduled Jobs page for this--this is 100% separate.

Back in the old days, this is how you had to do all scheduled jobs!  Uphill--both ways!


Potentially you could do this in a little script using the API?


Adding additional admin fee on top of civicontribute membership signup

If you haven't tried using priceset then i would recommend you to use priceset

The best way to have membership fee and administration fee would be using a price set which allows you to have multiple option

reference:
https://wiki.civicrm.org/confluence/display/CRMDOC/Membership+Price+Sets

https://docs.civicrm.org/user/en/4.6/membership/membership-price-sets/

I guess this helps !!!


I'd say it should be ready for you to do some testing with. According to this ticket it seems like Paypal Standard functionality should now be active.

(Caveat: Webform_Civicrm is not yet fully compatible with CiviCRM 4.7).


In a word, yes.  You'll have to implement this as custom field sets, which is easy.  That's menu option Administer/Customize Data and Screens/Custom fields.  You can have a custom type of 'file' as a custom field, which then allows you to attach a file.  You can have as many of these fields as you require, and you can set the custom field set as applying to contributions only.


Is CiviCRM compatible with OU Campus (OmniUpdate) CMS

They can still run CiviCRM on a subdomain separate from the site, likely under Drupal since they already have that installed. See another answer to a recent question that asked something similar about a different system.


How do I write unit tests for time based actions?

Totten, who is a complete legend, shared this pearl with me:

  there are some examples like:
  tests/phpunit/Civi/CCase/SequenceListenerTest.php:    \CRM_Utils_Time::setTime('2013-11-30 01:00:00');
  however, these are the exception rather than the rule. there are lots of places where someone called time() or strtotime() without reading CRM_Utils_Time to find the baseline.


Is it save to delete old entries from the civirule_rule_log table

This table is used to prevent that cron triggers fire two times on the same day. So entries older than a day can be deleted.
The table is also a help debugging. For example, in the 'Manage CiviRules' form, they are used to show the latest contact a rule is triggered for. This information possible dissapears if you delete the older entries.

(But beware, in the Open Source world it is always possible that you have installed an extension that this table for important actions).


Call to undefined function mysql_error() when install extension CiviHR for CiviCRM

It sounds like CiviHR is still using the php-mysql extension not php-mysqli. You can try installing php-mysql, or asking your hosting provider to do it, but if they're running a fairly recent server they may not be able to.


Is it possible to notify a staff coordinator for offline/backend contributions?

CiviRules is available and you can use it to do what you want. There is documentation as well :-)

If you want to use CiviRules to send an email you will also need the send email API (and please pull the civirules branch): https://github.com/CiviCooP/org.civicoop.emailapi

Once you have that you create a Rule, select the trigger for the rule as an event and come up with conditions. In your case the event will probably be 'new contribution' and the condition might be the source or the financial type, depending on how you are going to distinguish a back end contribution.

The action will then be 'send email', or could possibly also be 'create an activity'. It would make sense to me not to send lots of internal email but instead to create a specific activity type with a dashboard so the user can see his daily workload. But perhaps your end users have other preferences.


Use complete address and full county name in mailings

It should be like below
// Not returning anything, the tags are not interpreted at all //
function mailhooks_civicrm_tokenValues( &$values, &$contactIDs ) {
  foreach($contactIDs as $id){
    $address = \Civi\Api4\Address::get()
      ->addSelect('street_address', 'supplemental_address_1', 'supplemental_address_2', 'supplemental_address_3', 'city', 'postal_code', 'state_province_id:label', 'country_id:label')
      ->addWhere('contact_id', '=', $id)
      ->execute()
      ->itemAt(0);
    $values[$id]['contact.complete_address'] = nl2br(CRM_Utils_Address::format($address));
    $values[$id]['contact.province'] = $address["state_province_id:label"];
  }
}

HTH
Pradeep


iATS ACH/EFT payment verification scheduled job not finishing

Your symptoms suggest that the issue is some kind of fatal error happening during the job execution itself. I'd recommend you run the job directly via the command line, i.e. something like

drush -u 1 cvapi job.iatsverify

And see if there are any errors showing up. Make sure it's the same php version ...

My guess is some curious error that our code isn't handling properly. If you try turning on some logging it might be more instructive.

To answer your other questions:
1. No, you don't need to schedule a separate cron, it should run okay 'out of the box' (it calls in hourly for verifications, it really wants to tell you when your contributions are actually going through).
2. Tamar's diagnosis is interesting - I did implement job locking to prevent recurring payments from getting generated multiple times, but that shouldn't affect the verification, which is a separate job and can happen multiple times in parallel without ill effect.
3. Your civi version doesn't look terrible, but there have been a number of civi core fixes in the 4.6.x recent release that may affect some things, I'd recommend you update your testing platform as well. There is some testing for versions in the iats extension, but doesn't try to manage all the older minor version quirks.

From the comments below: Since you receive a "PHP Fatal error: Class 'SoapClient' not found" when you run the Drush command that means your drush is running a different php environment from your web interface. That's not untypical, you'll just need to inspect your php configurations and make sure that the php cli used by drush also has the soap extension. You can test that by running "php -i | grep soap" for example.


what kind of sanitization needs to be done when doing civicrm_api3('Contact', 'create') inside custom drupal modules?

The Drupal Webform module sanitises form inputs.

The Webform CiviCRM Integration module uses the underlying webform submission functions to sanitise data.

However the accepted answer on this question makes a very valid point.

  It's a common misconception that user input can be filtered. PHP even has a >(now deprecated) "feature", called magic-quotes, that builds on this idea. It's nonsense. Forget about filtering (Or cleaning, or whatever people call it).
  What you should do, to avoid problems, is quite simple: whenever you embed a string within foreign code, you must escape it, according to the rules of that language.

Both modules mentioned above are covered by the Drupal security advisory policy.


What is required to run CiviCRM on Pantheon?

There are two approaches, use the CiviCRM Starterkit which currently is available as an upstream for Pantheon, or use a fresh CiviCRM install with some patches.

CiviCRM Starterkit

The starterkit is a Drupal distribution will get you most of the way since it includes a few patches so CiviCRM will work more smoothly on Pantheon's architecture. In order to use the the starterkit in Pantheon use the option provided when creating a new site from the Pantheon dashboard (and not from the distribution hosted on drupal.org). Unfortunately, the original maintainer is no longer working on CiviCRM projects so has been unable to maintain the distribution.

CiviCRM with patches

The other approach is to install CiviCRM manually on top of the default Pantheon upstream for Drupal and apply the patches from the Starterkit which patch CiviCRM core. One can then maintain the appropriate patches so they can be applied to each CiviCRM upgrade, similar to the repo "CiviCRM for Drupal on Pantheon" we've maintained for a client (though there are differences currently in what people are patching).

Dealing with a dynamic system

The main change required for CiviCRM to work with Pantheon is get around CiviCRM's approach of hardcoding the absolute paths to all its configuration. Pantheon (and other similar hosts) use environment variables to set the server paths and the database connections. That's because its app bindings will change depending on whether the fallback server kicks in to deal with the load on the site. I've found that this can happen often, especially when a large mailing is being sent out.

First the paths and database connections are set up dynamically in civicrm.settings.php (as described in Kalamuna's post and patched in the Starterkit and the alternative patches). Then one needs to deal with CiviCRM's caching of absolute server paths (at least up to 4.7). For now one can simply bypass the caching of configuration entirely with no discernible downside.

Using Redis for caching and template storage

Pantheon uses Redis caching to improve the handling of the Drupal cache (Redis can handle it better than MySQL). In order to get CiviCRM to also use Redis caching as the default for CiviCRM cache one needs to set up a new Redis caching class in CiviCRM and set it as the default in civicrm.settings.php. This has been merged into CiviCRM core for 4.7. (based on this git repo).

To use Redis for storing the compiled Smarty templates follow the approach outlined in this forum post, which for some has made noticeable improvements to the speed at which CiviCRM loads templates in Pantheon. It can be done by either using Drupal caching functionality cache_get and cache_set or with CiviCRM to store cache in Redis (patch). You may notice some side-effects with using scripts in extern/* folder that don't bootstrap the CMS, so you may find these patches.1 2 useful (for PaypalPro).

There are a few other minor patches as part of the Starterkit but these main ones will get you a long way to a stable and efficient CiviCRM on Pantheon.

Cron

By default Pantheon runs cron once an hour. In order to run cron more often, which is useful for more granular control of CiviCRM cronjobs (also useful for Drupal's Elysia cron), one needs to use an external cron or ping service.

Emails and SMTP

For basic Drupal setups on Pantheon just using their email service for sending basic transactional emails is okay. But it is highly recommended to use an external SMTP service for emails on CiviCRM (and for Drupal). CiviSMTP and Mandrill (with a CiviCRM extension) will work for Civimail and CiviCRM transactional emails.

Benefits of CiviCRM on Pantheon

As others have noted, being able to quickly clone the site into a new branch with MultiDev, or even just clone between the default environments, can be a big time saver for small development firms and for freelancers without the knowledge or support of building a similar system.


Event registration times out with invoicing enabled

Generating a pdf can take a lot of memory and time. If you can turn of the PDF option, that should skip the problem, as Laryn suggested try to turn if off, at least to be sure it's the root problem.

But ff it really takes a lot of time (300 sec is a lot) it might be that you changed the layout of the pdf and/or include too many heavy things (like a huge heavy image for your logo?)

If you do need complex/heavy pdf, one workaround is to let civi delegate the hard work of generating that pdf to an external program. Check if your hosting provider can install wkhtmltopdf and under Admin/system settings/misc put the path of that program into "Path to wkhtmltopdf executable"

I use it for instances that need to generate loads of complex pdfs, the default civi way should work fine for "simple" pdf, it's likely you have something in your setting that is an issue (either faulty pdf layout if you customised it, non optimised images or something)

X+


Only in WORDPRESS: REST.php ---> Unable to decode supplied JSON

The correct endpoint for WordPress is wp-json/civicrm/v3/rest. Its documented in the developer manual, see https://docs.civicrm.org/dev/en/latest/api/v3/wp-rest/#endpoints.   When you just copy the URL that is suggested in the API explorer you are left in the dark.


Incomplete (abandoned) event registrations

CiviCRM doesn't store data that has been partially submitted. If your form uses paypal standard payment method and user fills in the other details and pay's now then he will be taken to paypal screen where he will need to enter card details or pay using paypal account. Before going to Paypal CiviCRM creates Pending Participant records and then changes status to completed if it receives payment.

So you will need to either have registrants submit 3 step form or build extension that would do one of the following

Don't use confirmation page incase for Pay later and/or Pay now.
Store Data in CiviCRM when user submits the main form, Truncate if user submits confirmation, Add report to list all the user that submitted partially.

(#1 will be simple and #2 will need more work)

HTH

Pradeep


CiviEvents Confirmation email not being sent

Went into php.ini and replaced the session.save_path parameter from

/opt/alt/php71/var/lib/php/session

to

/path/to/your/homedir/tmp

And it looks like that's done the trick!


I was also dealing with the same problem and after many debugging, the following uninstall script finally helped me to install CiviVolunteer succesfully. Warning: you will lose the data stored in CiviVolunteer tables. Use at own risk.

/* drop custom tables */
DROP TABLE IF EXISTS `civicrm_volunteer_need`;
DROP TABLE IF EXISTS `civicrm_volunteer_project_contact`;
DROP TABLE IF EXISTS `civicrm_volunteer_project`;

/* drop report-related records */
DELETE FROM `civicrm_report_instance` WHERE report_id = 'volunteer';

/* drop custom option group for roles (FK takes care of option values) */
DELETE FROM `civicrm_option_group` WHERE NAME = 'volunteer_role';
DELETE FROM `civicrm_option_group` WHERE NAME = 'skill_level';

/* drop custom field group from Activities (FK takes care of fields) */
DELETE FROM `civicrm_custom_group` WHERE `name` = 'CiviVolunteer';
DELETE FROM `civicrm_custom_group` WHERE `name` = 'Volunteer_Information';
DELETE FROM `civicrm_custom_group` WHERE `name` = 'volunteer_commendation';

DELETE FROM civicrm_option_group WHERE `name` = 'msg_tpl_workflow_volunteer';
DELETE FROM civicrm_option_group WHERE `name` = 'volunteer_project_relationship';
DELETE FROM civicrm_contact_type WHERE `name` = 'Volunteer';
DELETE FROM civicrm_custom_group WHERE civicrm_custom_group.name = 'CiviVolunteer';
DELETE FROM civicrm_custom_field WHERE civicrm_custom_field.name = 'Volunteer_Need_Id';
DELETE FROM civicrm_custom_field WHERE civicrm_custom_field.name = 'Volunteer_Role_Id';
DELETE FROM civicrm_custom_field WHERE civicrm_custom_field.name = 'Time_Scheduled_Minutes';
DELETE FROM civicrm_custom_field WHERE civicrm_custom_field.name = 'Time_Completed_Minutes';
DELETE FROM civicrm_custom_field WHERE civicrm_custom_field.name = 'volunteer_project_id';
DELETE FROM civicrm_custom_field WHERE civicrm_custom_field.name = 'camera_skill_level';
DELETE FROM civicrm_msg_template WHERE msg_title = 'Volunteer - Registration (on-line)';
DELETE FROM civicrm_navigation WHERE `name` = 'New Volunteer';
DELETE FROM civicrm_option_value WHERE `label` = 'Volunteer';
DELETE FROM civicrm_option_value WHERE `label` = 'Volunteer Commendation';
DELETE civicrm_uf_join FROM civicrm_uf_group JOIN civicrm_uf_join ON civicrm_uf_join.uf_group_id = civicrm_uf_group.id  WHERE `group_type` = 'Volunteer,Contact';
DELETE FROM civicrm_uf_group WHERE `group_type` = 'Volunteer,Contact';

/* relationship_type, */

/* drop volunteer sign-up profile (FK takes care of profile fields) */
DELETE FROM `civicrm_uf_join` WHERE `module` = 'CiviVolunteer';
DELETE FROM `civicrm_uf_group` WHERE `name` = 'volunteer_sign_up';


Error Event registration - When registering for an event

It might be because you start on a different domain name or protocol than the one configured in civi.

a common issue is to go to http://example.org but http://www.example.org is configured, or https://example.org

Can you copy/paste the url of the registration form and the one after? are they the same?


We fixed this on https://chat.civicrm.org.

The latest versions of the Authorize.net eCheck payment processor extension (versions 1.2 to 1.2.2) break CiviCRM (the problem exists as far back as 4.7.23, probably further).

The solution for now is to disable the eCheck extension.  The author of the extension (or someone else - it's open source!) will need to fix the problem with the extension.


Turns out, this hook is not called when a profile form is submitted on the front-end of the site. The hook is fired during the creation/edit of a profile. Found through a Google search

Page Title: hook_civicrm_processProfile - CiviCRM 4.3 Documentation ARCHIVE ...
Page Link: wiki.civicrm.org:8090/confluence/pages/viewpage.action?pageId=86638695

Dropped the port 8090 in the SERP link to see the wiki page that says:

  This hook is invoked when processing a submitted CiviCRM profile form (e.g. for "civicrm/profile/create" or "civicrm/profile/edit"). This hook may be used to inject additional markup, scripts, or styles on the profile.

I dont know why that important detail was dropped among other important details. The most recent wiki has no such text.

Edit: added as issue in 2017devdocs.


Why am I getting "Column not found: 1054 Unknown column 'civicrm_activity.source_contact_id' in 'field list'" on Activity View after upgrade to 4.6.7?

Have you applied this https://github.com/civicrm/civicrm-drupal/pull/298 ?. As error you have mention is recently resolved.


CiviReport - Error when registering new Report

Ok, again solved my own problem after doing more research.  This apparently is a known issue with mySql and MariaDB where strict mode seems to be default.  Adding sql_mode=""
to your /etc/my.cnf file will resolve the issue.


Change logo for specific contribution pages

in the smarty templates you should be able to build a smarty 'if' statement with the contribution page

eg

{if $contributionPageID == 3}

or if more than one page

{if $contributionPageID == 3 OR $contributionPageID == 8}


How to notify CEO of large contributions?

You could install the extensions CiviRules and Email API.

Then you could set up a rule, which triggers on contribution added.
The condition should be contribution total amount larger then 10 000.
And then the action should be "send mail".
There you have the possibility to select a template. If you have created a template containing tokens of contribution details (you can easily use the extension Summary Fields to have the appropriate contribution tokens), then you can use that specifically for this purpose.
And then  finally you can tick off a box to send the email to someone else than the contact itself. There you can write the email adress of your CEO.

Then your CEO will receive an automatical email containing the details (tokens) of the contact contributing more than 10.000


Safe to run cron jobs using wget and user with full admin rights?

It's better to limit the cron user to the minimum permissions - but I'm not 100% sure what those permissions are.  E.g. if you don't give access to CiviEvent, can you use smart groups based on participant status?

The reason why it's unsafe to give a full admin user cron access is because you're leaving an API key (essentially a password) in plaintext on a server.  Depending on how wget is configured (with HTTP GET instead of POST) you're also leaving the api key in the server logs.  Someone who accesses one of those can escalate their permissions.  This is especially true if you're using wget from a remote server.


comply with CAN-SPAM in workflow messages

Take out the $ signs. Smarty variables use $ signs, tokens don't. It is a little bit awkward when they're mixed in the same template.

I don't know the legal answer to the other part of the question, but bulk mailings include it by default.


The participant create in set_kavo_state() triggers your post hook again which then calls set_kavo_state() etc.  You need to determine whether the post hook is being called just to update the $kavo_status_field and $kavo_message_field fields - and therefore not set up another callback to set_kavo_state().

Do you actually need to call your external API for participant edits?  If you could limit the post hook to only trigger on 'create' you would avoid the loop.


CiviCRM upgrade can't find core module in Drupal

Since it's no longer listed and it says it can't be found, it's usually one of these two things:

your files are uploaded into the wrong spot
your files have the wrong permissions and/or user attached


The JIRA issue appears to be this one
It is marked as CLOSED and "cannot reproduce"


after i use api to update the database results not immediately showing

Sounds like you have to 'force' the summary page to rebuild. You can do this by re-building your userContext (which will be the summary page):

$session = CRM_Core_Session::singleton;
CRM_Utils_System::redirect($session->readUserContext());


What is the largest number of customer records that civicrm supports?

See this question: Number of contacts vs. hosting space required

Here is a thorough answer to that question: https://civicrm.stackexchange.com/a/3289/105.

The short version: there is no formal limit to how many contacts CiviCRM can store.  It really comes down to the amount and type of hardware you have supporting the software.  For a record count of 5-10 million, you would definitely need powerful hardware.


Is there a way to prevent CiviCRM profile fieldsets from nesting inside each other?

I'm wondering if using a webform might be a better solution. You could have a paginated webform using webform civicrm, that gets the data into CiviCRM. Then on the webform adnaced, do a redirect to the Drupal registration form with the email address prefilled using the Drupal Prepopulate module.


What is the most integrated Drupal 7 shopping cart for CiviCRM?

yes Eileen at Fuzion is working towards pulling together Commerce + CiviEntities + Rules as a more flexible approach. We have clients using both Commerce_CiviCRM and uc_civicrm and have had some grief with both of them, such as in terms of when should it update civi addresses and when shouldn't it and clients wanting different outcomes etc. Or eg can customer buy a Membership as part of the cart and get instant member discount on other items in the cart. Hence us going for a more flexible solution.
But to more directly answer your question, starting now I would go down the  Commerce path.


How can I search for or report on contacts based on date, method and/or status of group subscription?

Currently there is no reporting or search on group subscription history. But I do think the gdpr extension (https://github.com/veda-consulting/uk.co.vedaconsulting.gdpr) has a custom search which allows you to search the group subscription history.


Pay Later option not displaying on front end when Paypal option

Looks like there is a history of issues with pay later an pay pal express - there is a ticket on JIRA that sounds like it might be related to what you are reporting can be seen here: https://issues.civicrm.org/jira/browse/CRM-18118

Hope this helps,
Tamar


Contact which is both Organisation & Individual

I would rather think like this:

Something he/she is --> contact type

Something he/she does --> group

If he is a person, then the contact type should be Individual. Maybe he works with or owns an Organization, then create a relationship.

To be a lecturer or an advertiser can change ( if he change job), but he will always be an Individual.

So to me it gives more sense to create two groups called Lecturer and Advertiser, and put this contact and the others in the corresponding groups.


Are there Spreadsheets (samples) with Google Apps script to work with CiviCRM?

Here's an example. We have a WP-hosted Civi install using the v3 API. This pulls contact records from some smart groups and dumps the entries as a table in a google sheet. Other pages on that sheet automatically parse/filter the data table. I'm a novice coder, so perhaps clunky, but it will give you the guts of the API calls and sheet filling.


This should be fairly simple to script using the Attachment api.  For docs, go to https://dmaster.demo.civicrm.org/civicrm/api#docs and select Attachment as the entity which has an example of using create with a custom field.


For a free option, you can also look to past CiviCRM conferences.  A lot of presenters upload their notes to the session pages.  Videos are often posted as well.  The videos for the most recent conference in Denver are now available: https://www.youtube.com/playlist?list=PLjSU7YfE0E01HW7JPVAI80XDI0sgOSPDs. There are helpful notes already posted on the session pages.

https://denver2015.civicrm.org/sessions

https://london2013.civicrm.org/sessions
https://london2014.civicrm.org/sessions

https://dc2014.civicrm.org/sessions

http://sf2013.civicrm.org/sessions


Activity emails aren't sent when using sender's primary email address

Are your volunteers are using an email from an external provider as their main address?

If it's the case, say john.doe@yahoo.com or john.doe@gmail.com, it's "normal" that the emails are automatically filtered and flagged as spam:
It's a feature for pretty much any big mail provider to whitelist what servers are authorised to send emails on their behalf (SPF) in order to limit spam and prevent "rogue" servers to try to impersonate one of their user.

Obviously, your civicrm server isn't one of the authorised servers, so it ends up directly into the spam, or even simply discarded.

The way emails are sent with civimail is different (no matter what you put as the from sender, it's the email that you defined as bounce that is used to really send the email) so it might be why you experience something different there

Try to use as the sender for "regular" emails an email from a domain you control (your own), the email should be sent properly


Custom report Action not working on new development

OK,

I tried deleting the report and recreating the report from the template, and like magic the functions started working.  Seems that CiviCRM has certain ways about it that developers need to know. ( is there a list somewhere ).

Moving on to the next part suppressing duplicate row content and page braking on sections. Getting closer to the goal :)


Scheduled reminders on membership end date not sending

I posted a summary HERE just yesterday that should provide you with way too much detail as to the cause of the issue, but by far the easiest way to fix the issue for existing records is to enable repetition (being sure to enter every 1 year until 0 days before membership end or the scheduled job will get mad and won't run).

In the "Current Behavior" section of the same post, you will find a detailed description of how to test to make sure schedule reminders will continue to work - if you don't have access to the database and want to be completely sure that the renewal reminders will send when expected, the next easiest option would be to create new schedule reminders and disable the old ones.

Hope this helps,
Tamar


You can't access civicrm backoffice?

Try http://yoursite.org/civicrm/admin and disable the payment processor from there.


Detail instructions on manually updating message templates (5.9.0 to 5.10.4)

It links to an old wiki page that redirects to https://docs.civicrm.org/user/en/latest/email/message-templates

Note it doesn't tell you what your customizations were before. You would need to know that separately or look at a backup.


Setting up non-Admin user account in Drupal / CiviCRM - Menu bar not visible

One option would be to create a Menu Block or just a Block with some links and set it in to a region with settings so it only shows for Authenticated

But also, am unclear if you really want a non-admin person getting to those 'modules'.

If a non-admin person is making donations, registering for events they do not need access to CiviCRM itself.

Perhaps update your Q with more detail about what the non-admin person needs to access perhaps by providing the paths you want them to get to so you avoid saying 'member page' which could be construed in many ways. HTH


It is fixed. It was as simple as returning to Admin > Localization and re-enabling the country list. Sorry about asking before thinking :-)

Miguel


Civi Reporting - where's the preview tab?

If you have an older version of extended reports extension, or the advanced reports extension installed this can happen. Assuming you are on 4.7 make sure that if you have those extensions they are up-to-date


Yes, I think this is a core bug because of recent change. You can find temporary solution at CiviCRM 5.4, Unable to create case type (angular validation error)

HTH

Pradeep


Update core from 5.33.2 to 5.35.1 generates errors when re-enable modules

WD civicrm: hook_civicrm_alter_drupal_entity_labels should be updated to [warning] pass an array of parameter names to CRM_Utils_Hook::invoke(). Array ( [civi.tag] => deprecated )

For this,  i think you need to apply https://github.com/eileenmcnaughton/civicrm_entity/pull/238 patch in civicrm_entity module.


Tracking links that have been added via tokens

@Andrei - thanks a lot for pointing me to the solution!

Based on your answer, I wrote this function that did the trick for me for finding and converting links in arbitrary $html:

function trackUrls($html, $contactId, $jobId){

    // Find all URLs
    preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $html, $matches);

    // We need to find the mailingId and the eventQueueId
    $mailingJob = civicrm_api3('MailingJob', 'getsingle', ['id' => $jobId]);
    $mailingEventQueue = civicrm_api3('MailingEventQueue', 'getsingle', [ 'job_id' => $jobId, 'contact_id' => $contactId]);

    foreach($matches[0] as $url){
        $replacements[$url] = CRM_Mailing_BAO_TrackableURL::getTrackerURL($url, $mailingJob['mailing_id'], $mailingEventQueue['id']);
    }

    $html = str_replace(array_keys($replacements), $replacements, $html);

    return $html;
}


Changing page layout for Contribution pages in Joomla

In Joomla, it's actually not too difficult to override the CSS of any particular page. You can give your page a custom CSS class, then append the CSS to the end of your template CSS file, or a custom CSS file that is pulled into the page.

If you don't already have one, create a menu item for the particular Contributions pages you want to override. You can create a hidden or links menu in Joomla that doesn't have an associated module. Select the CiviCRM - Contribution page type, then the page. You'll need to do this separately for each page.
Under Page Display Options for the menu item, add the new class into the Page Class box.

A few notes: When I create CSS overrides for individual pages, I usually define the page class, then use Firebug (or something similar) to test the overrides prior to uploading them. Depending on how and when the CSS of your template loads, you may need to make use of the !important declaration.

Also, the use of display:none usually works for me in the case of having to hide certain elements, but there is some debate about when you should and shouldn't use that.

Another option that's a little more work than creating a template override is to create an entirely new template. One of the features that Joomla has over certain other CMSes is the ease with which you can assign different templates to individual pages via the template manager. This would completely avoid having to hide certain elements, because you would simply leave them out of your new template. You could start with your current template, and just remove the pieces that you don't need. Install it via the Extension manager, and assign it to your Contribution pages. Note that you will still need to create a menu item for each Contribution page in question.


Creation of a form from the front-office?

There are "profiles" that work with joomla - see https://docs.civicrm.org/sysadmin/en/latest/integration/joomla/forms/


Shoreditch theme is not working when resource URL is "localhost"

Your screenshot shows the URL for CSS files at "http://localhost".  This suggests that either your CIVICRM_UF_BASEURL in civicrm.settings.php is incorrectly set to localhost, or that the same problem exists in one of the directories or Resource URLs (in Administer menu » System Settings » Directories or Resource URLs).


Membership Auto-Renew Changes in AuthorzeNet

Changes made to recurring contributions directly through the payment processor portal tend to break the communication back to Civi on subsequent installments (as you have surmised).

For any significant changes to a recurring contribution (amount, credit card type, financial type, etc.), it is best to cancel the existing recurring subscription and create a new one to avoid communication and other issues. If all you need to update are the credit card details (e.g. someone wants to use a different AMEX card from the one they originally created the subscription with), then making those changes from within Civi should communicate with Authorize.net without interrupting communication back from authorize.net on subsequent installments. You would do this by clicking the "More" hyperlink to the right-hand side of the recurring contribution record, select "Change Billing Details" and entering the details. The best way to see if this works is to update the credit card details directly from Civi, then log into the authorize.net portal and check to see that the updated information is listed on the subscription in question.

Hope this helps!
Tamar


For CiviCampaign - how can I enable any user to see Canvass and other Activities entered by another user via a webform?

Turned out that a user can only see Activity Types = Canvass on their Activity Tab if they are given the "administer CiviCampaign" permission.

Also it seems that perhaps because Canvass is an Activity Type related to Entity = CiviCampaign that

it is not available in a Drupal Views as an Activity Type filter
it is not available as an Activity Type filter on an Activities report.

Jamie - any thoughts on how to unlock this? anything to do with component_id being 9 in the civicrm_option_value table?


I suggest that you check that the Base URL in the CiviCRM settings file.

Look for CIVICRM_UF_BASEURL in civicrm.settings.php file.

See this similar question for more details: **Network Error - Unable to reach the server


How to create an event with relationship to participant?

You can do this using webform for drupal or caldera for wordpress. The CiviCRM webform/caldera provides ability to add multiple contacts and relationship (and also events) on a single form.


CiviEvent automatically send survey after event

You can use the CiviRules extension to do that? There is a CiviRules Guide which should help you to understand what it does and how to use it.


What is the contact ID of my own user record?

On Drupal -> go to Hello [user] in the Toolbar -> then hit view contact Record (or view Contact Dashboard):


Is there any way to import files into a custom field for uploaded files?

You asked about SQL, but it is generally recommended to use the API rather than direct SQL. See the Attachment API - examples in the Code Docs section of API Explorer.


Unfortunately, there is no way to batch update relationship via the user interface b/c relationships are reciprocal. Using the Import Contacts wizard and selecting "Update" doesn't allow you to designate a relationship as permissioned either.

If you have a programmer on hand, this type of update would be easy to do using an SQL query directly on the database:

Assumptions:

Relationship Type ID = 4 (in my environment, this is the ID for Employee/Employer)
Contact A = Individual
Contact B = Organization

Query:

UPDATE civicrm_relationship SET is_permission_a_b= 1 WHERE relationship_type_id= 4

Alternatively, if you have sufficient permissions, you could use API Explorer as documented HERE, but this should only be done by someone who has good knowledge of the CiviCRM database structure.

Good luck!


How do I set up a cronjob to run scheduled jobs?

you should add directly after cron.php

?name=username&pass=password&key=site-key

so it will be in your case:

/usr/local/php53/bin/php-cli /home/ashguild/public_html/home/administrator/components/com_civicrm/civicrm/bin/cron.php?name=username&pass=password&key=site-key

The site-key is generated during install and can be found in civicrm.settings.php.

For your joomla you should be able to find it in
/home/ashguild/public_html/home/administrator/components/com_civicrm/civicrm.settings.php


What is the API for class CRM_Civirules_TriggerData_TriggerData?

What you could do is use the getEntityData? That should give you all data that is avaiable for the entity in the triggerData. The contactId is special as we tend to want to do things with contacts :-)
Does that help?
So an example:

$contributionRecur = $triggerData->getEntityData('ContributionRecur');

which in your case is likely to become

$eventData = $triggerData->getEntityData('Event');


How to sync CiviCRM contacts with a Drupal content type

It depends what you are after. You can use CiviCRM Contact Reference Field and this gives you a field on Node that you can then pull in the civi data. Having done that you can then pull in other civi data to that node via Views. You can see an example of this in action here where the Node is the Party, there is a reference field on that node to the Party contact in civi - and then the info about the Party eg Contact details are pulled on the page via Views using a Context Filter for 'nid from current node).

Then the MPs in the list lower on the page are pulled in because they have a Civi relationship to the Party ;-)

The Leaders on the other hand are 'node referenced' to the party in Drupal.
And if you click through to a Leader page you get the same deal. The MP page has 'civi reference' field to the MP civi contact. And all the other blocks are pulling in data eg Nodes that are node referencing back to this node.

Hope that gives you some ideas and partially answers your question.


Is it possible to have many to many relationships between custom field sets?

I think, if I'm reading your question correctly, that what you want to do does not require anything custom. I would do it this way:

Create an event in CiviEvent. This will have the fields name, date, location, etc already available for you to fill.
Make this event a certain "type." The built-in options are things such as workshop, meeting, and class, but you can add a type called "team."
All the events of type "team" are easily searchable and viewable.

Is this what you were going for? If not, please describe in more detail what it is you are trying to do.


Is Civi having a separate copy of jQuery inefficient?

I wrote a Drupal module to do just that!

https://www.drupal.org/project/civi_jquery

It allows Drupal and CiviCRM to share the same copy of jQuery, and resolves redundant plugins so the browser has a lot less javascript to download and run.

Maybe someone could do something similar for Wordpress?


Yes it was made obsolete when another menu system was brought in: https://github.com/civicrm/civicrm-core/pull/13582

You could try the shoreditch theme: https://civicrm.org/extensions/shoreditch


UPDATE: All the admin forms have now been made available for translation but they aren't all in transifex yet because it only has strings up to version 5.22 as of today and the latest changes will be in 5.23. So it may be a few months before they'll be available in transifex for translation.

A while ago the admin forms settings started to get moved to a different subsystem, and a note appears to have been made that they should take translation into account (the last bullet point here https://lab.civicrm.org/dev/core/issues/495#note_10020), but if you look in the <civicrm_root>/settings you can see that some title strings in the files are wrapped in ts() but some are not. It is of course ironic that the ones in the localization file are not.

Some of the strings on that page are translated, because they are still handled by the previous system, e.g. Monnaies Disponibles, because it's a fancy multiselect widget.

EDIT: After looking closer at https://lab.civicrm.org/dev/translation/blob/master/bin/create-pot-files.sh and the admin screens, it seems like the settings folder isn't included in the files that get scanned. It's just that some strings, like "Recherche de contacts avec autocomplétion" on the search preferences screen, appear to be translated because they are used elsewhere too. So I've posted on the lab ticket to get clarification.


How can I check if Civicrm mails sent through scheduled Cron are bounced or sent successfully?

I do not think CiviCRM currently offers a way to catch bounced messages from sending an email direct from a contact record, or via Scheduled Reminders.

The only 'bounce' processing that occurs, afaik, is when CiviMail is used.


How to add Scheduled Reminder CC and BCC email?

This doesn't currently seem to be a feature available in CiviCRM, however, when setting up the schedule reminder, there is an option to "Record activity for automated email or SMS" - if this is toggled, then you can set up an activities dashlet on your dashboard filtered on the given activity such that every time you login to the back office you will see if any reminders have been sent - this option might even be preferable to receiving an an email and will definitely keep your inbox more manageable).

Hope this helps!
Tamar


Email sent via CiviRules removes unsubscribe token from email template

The problem with the {action.optOutUrl} token is that generates a url which is linked to a send mass mailing.

When CiviRules sends an e-mail it is not a mass mailing but an inidvidual one. Send to one specific contact at the time.

I could understand that you want some sort of link to a profile/optout page. One way to do that is probably create a profile page and link to that page from within the e-mail you send from CiviRules.

Did you solve the issue yourself? If so how?


How can I show only Cases that have no Case Manager?

If you set up the page view as mentioned in your other post here, you can add a global text field with a rewrite to civicrm/contact/view/case?id=[id]&cid=[id_1]&action=view.

If you need to set it up for folks that may have multiple case types then filter this page by a single case type.

After you have this view behaving as desired, add an attachment and on the attachment, change the case type filter to your next case type.

Add an attachment for each additional case type.


Unfortunately there is not a way to assign a pledge to multiple contacts.

In the CiviCRM database, the pledge is assigned to a contact, but the individual pledge payment/installment is related to the pledge and not the contact.

Without a customization, this would not be possible.  Sorry


Wordpress main search widget - Search events

If you use a short code for your event on a page and include the search terms you are looking for in the permalink it should be found in search results. So in your case you would create pages (or posts) for each event with the short code included  and include the city in the permalinks.

Hope this helps.


Itemized Annual Statement of Contributions

Assuming you are using version 4.4 or higher the answer is yes.

In brief the steps are:

Use a Find Contributions search to identify the relevant contributions from last financial/fiscal year.
From the actions list select Thank-you letters for Contributions
Choose to Group Contributions by Contact.

More details, including layout of letters, can be found in the Thank-you letters section of the our user and admin guide for version 4.6.  ( Functionality has been available since 4.4, but not documented until 4.6.)


How do I make a new Custom Field Set visible in the Tab Display Style?

Tab or Tab with Table display style creates a separate navigation tab to display and edit the values.

It will be shown as an extra tab in the Contact Summary Page unlike Inline which include the set of fields in the main contact Add/Edit form and Contact Summary screens.

Note: Tab with Table is recommended for customs data sets which allow multiple records.


You put it in your own extension, under the CRM folder and subfolders you need to create depending on the class name. See https://docs.civicrm.org/civirules/en/latest/create-your-own-action/#step-2-add-a-class-that-extends-crm_civirule_action

You can include the class file in the Civirules extension if you want,
but you can also include it in your own extension. This class should extend
CRM_Civirules_Action to be able to add your action to the CiviRules Engine

So let's say your class is CRM_Mynamespace_CivirulesActions_Contact_Subtype, then you'd call the file Subtype.php and put it in your extension in CRM/Mynamespace/CivirulesActions/Contact


How can I run the Drupal 8 & Drupal 9 Webform CiviCRM unit tests on my local?

Ok here are the steps!
I'm on a Mac/MAMP and I use PhpStorm
A. Get Drupal
composer create-project drupal/recommended-project:8.9.13 d8civicrm.local
cd d8civicrm.local

composer config extra.enable-patching true
composer config minimum-stability dev

B. Get CiviCRM
composer require civicrm/civicrm-core:5.35.0 civicrm/civicrm-packages:5.35.0 civicrm/civicrm-drupal-8:5.35.0 civicrm/civicrm-asset-plugin:~1.1

C. Install Drupal
Browser to your new website -> in my case: http://d8civicrm.local
and follow the install step in the UI.
D. Make it writeable
chmod -R +w d8civicrm.local

we need to write e.g. the civicrm.settings.php file next!
E. Install CiviCRM
Go to the UI -> Extend -> or use drush!
F. Patch alert!
No longer needed!
G. PHPUnit configuration
copy this file: https://gist.github.com/mglaman/efcdb804dcced6ddc856e9e0050aad1e
-> into /Applications/MAMP/htdocs/d8civicrm.local (i.e. where your composer.json is) and make updates specifically add in your BASE_URL and your DB location and credentials:
19c19
<     <env name="SIMPLETEST_BASE_URL" value="http://d8civicrm.local"/>
---
>     <env name="SIMPLETEST_BASE_URL" value=""/>
21c21
<     <env name="SIMPLETEST_DB" value="mysql://myadminuser:db^88*@localhost:3306/d8civicrm_local"/>
---
>     <env name="SIMPLETEST_DB" value=""/>

Note: when testing CiviCRM Extensions -> add this line as well - as per docs:
docs -> https://docs.civicrm.org/dev/en/latest/testing/mink/
<env name="DEV_EXTENSION_DIR" value="/Applications/MAMP/htdocs/d9civicrm.local/web/sites/default/files/civicrm/ext/"/>

H. Install webform module
composer require 'drupal/webform:^6.0'
I. Install webform_civicrm module
-> (at this points the tests have not been released yet so you'll need to clone the webform civicrm github repo):
git clone https://github.com/colemanw/webform_civicrm.git --branch 8.x-5.x

J. Get the Drupal Dev tools
We started with drupal-recommended - now let's get the dev tools:
composer config minimum-stability dev
composer require drupal/core-dev-pinned:^8.9 --no-suggest
Note: reproducing this just now - I ended up having to rm composer.lock and rm -r vendor as it was spitting out a symfony conflict. Ah looks like in the .github/workflows/main.yml file we install the drupal dev tools before we install CiviCRM
K. Configure PHPStorm
PHPStorm -> Preferences -> Language & Frameworks -> PHP -> Test Frameworks.

If running into autoloading issues - things to try:
add the entire path to phpunit -> /Applications/MAMP/htdocs/d9civicrm.local/vendor/phpunit/phpunit as a PHP include path in Languages and Frameworks in the PhpStorm settings - hit Apply -> then check the Test Frameworks page again.

L. Install Chromedriver
https://chromedriver.chromium.org/
and start it
/usr/local/bin/chromedriver
To check that it's running:
karins-MBP:bin sysadmin$ ps -ax |grep chromedriver
62821 ttys004 0:00.18 chromedriver

M. Run a test!

PS - Note to self: if you run into:
Error : Call to undefined method CRM_Utils_System_UnitTests::parseUrl()
Go into -> Run/Debug Configurations and hit Environment Variables and SWITCH OFF -> Include system environment variables (as one may have included variables specific to CiviCRM Unit Testing)
I'm still working on getting xdebug to work with phpunit test - in the mean time -> to debug variables within your unit test ->
throw new \Exception(var_export($api_result, TRUE));


List organization on individual profile signup

You can add a Contact Reference field (one of the types of Custom Fields that you can create) and then display that in your profile and limit that to just the group of schools. users need to have permissions to use the autocomplete option so you need to visit /wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Faccess%2Fwp-permissions&reset=1 and find th permission "CiviCRM: access contact reference fields
Allow entering data into contact reference fields" and give it to your anonymous visitors. (You may also need to give "CiviCRM: access AJAX API
Allow API access even if Access CiviCRM is not granted")

The above won't do this as a Relationships, which is the ideal, but I don't know how that is done via Profiles for WP


What are the files and fields in CiviCRM?

Sounds like you're new to CiviCRM - Welcome to the community. Here's a link to the CiviCRM data architecture page on the CiviCRM wiki.

You can create multiple custom fields in CiviCRM so you should be able create the fields you need for your existing data. During import you can choose which fields get imported and which CiviCRM field they get mapped to.

For match/merge of duplicate records - see: Deduping and Merging

For capabilities of selecting subsets of contact files based on things like member type, zip code, has email address (or not) - see: Searching and Groups & tags

I've mentioned import already - there there various way to export data, including Exporting Contacts

You should try out the demo(s) or better still, download it and create a sandbox to explore CiviCRM's functionality.


It's best to not edit the files directly, but to create your own file. Otherwise it will get overwritten with each upgrade you do. In the version I'm using, I can set the custom CSS file here:

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

I use the "inspect" option in Chrome to see what CSS is being applied, then I copy it into my custom css file, and edit it.


How do I modify the new 4.6 CiviMail form?

I ended up adding a small bit of javascript that waits for Angular to build the form, then it disables the checkboxes. Don't know if it's the right way, but it works.

CRM.$(function($) {

function disable_tracking() {
    var i = $('#tab-tracking').length;

    if (i > 0) {
        $('input[name="url_tracking"]').attr('disabled', true);
        $('input[name="open_tracking"]').attr('disabled', true);
    }
    else setTimeout(disable_tracking, 250);
}

if ( (typeof(CRM.crmMailing) == 'object') && (CRM.vars.sendgrid.track_optional == '0') )
    disable_tracking();

})


It is possible they mean the info in the Organisation Address and Contact Info settings (Under Administration > Communication Settings)

or the CiviMail "From Email Address" (under Administration > CiviMail)


do you have Permalinks 'plain' enabled (in WP Dashboard/Settings)? Or do you have custom? I don't know if that makes a difference but it relates to how URLs are constructed. I switched between plain and custom Permalinks. And in civicrm Wordpress Integration how did you configure your 'base' page?  I used the postname of my WP base page (ie, just 'civicrm') and it seems to work, civicrm event pages show.
Does your .htaccess file have URL rewriting enabled (begins like "# BEGIN WordPress

RewriteEngine On.."
In the URL for, say, an event I get "page=CiviCRM&q=civicrm%2Fevent%2Finfo&id=1870&reset=1" where &id=1870 is the registration form for an event I created.
 I am using 4.7.20 and WP 4.8 also


Trying to run Civi cron Jobs using Drupal cron?

Just to summarize all the places to look. If you've chosen to try to run CiviCRM cron from Drupal, you need the civicrm_cron module. Then in the Elysia Cron settings: admin/config/system/cron/settings take a look at the settings for the civicrm_cron job and make sure it's enabled. It's probably called: civicrm_cron_cron. Though if you're seeing civicrm_cron in watchdog then it's being called.

The next step is to check that you can manually run cron by executing the cronjob by entering the url for the cronjob in the url (with the site key set in civicrm.settings.php), by using a drush command, or by clicking the Execute Now button next to the scheduled job in Administer > System Settings > Scheduled Jobs. Make sure those scheduled jobs are enabled and have a frequent enough schedule. (More info here: http://wiki.civicrm.org/confluence/display/CRMDOC/Managing+Scheduled+Jobs#ManagingScheduledJobs-Command-lineSyntaxforRunningJobs).

If the scheduled jobs are working but still not being called from Drupal, then you may want to see if you're able to get them to run via third-party cron service such as EasyCron and create a cronjob such as
*/15 * * * * wget -O - -q -t 1 'http://mysite.org/sites/all/modules/civicrm/bin/cron.php?name=username&pass=password&key=site-key'.

I'm also running CiviCRM 4.4.14 on Pantheon and I'm using an external cronjob to call Elysia Cron and it's triggering CiviCRM cron. So I know that in general it should work.


How does CiviEvent Facebook "like" works?

the facebook like embed a widget from facebook in the page, that (beside spying on your visitors, or anywhere that contains that button) knows on which page it's embedded and therefore what to like

What do you mean by it doesn't work?

it has nothing to do with the event you might have created on facebook, it's only about the civicrm page on your website that describes the event


Go to your sparkpost account(https://app.sparkpost.com) and click on 'Account' and then 'SMTP RELAY' and click on radio button 'Enable Tracking'. This will make sure tracking of clicks and opens.


Creating Membership Directory using Views in Drupal 7

If you have separate databases then you need to enable CiviCRM Drupal views integration you need to add some information to the sites settings.php file.

Visit - /civicrm/admin/setting/uf?reset=1

Data from the above CiviCRM page needs to be copied and pasted into your sites settings.php file.

Detailed info can be found here


Why would CRM_Utils_Hook::entityTypes($entityTypes) return results with a non-civicrm table?

You might have extension or module that implements entityTypes() hook. Try grepping TEAM inside your module or extension directory, if found either remove the code if its implemented in entityType hook or disable the extension or module if not in use


WP sidebar replicated in dashboard window

Found the problem.

Firstly the screen in the image above is not fully loaded.

Once it had loaded the error message "custom field expected (0) found" which pointed to the report it was attempting to load in the dashboard being obsolete.

Deleting the report resolved the problem. :)


How to Change Price Set Field Type without deleting and re-adding

My first answer is: yes you can do this in the backend! I just confirmed it: in the civicrm_price_field table find your Price Field ID (row) and then change the html_type from: Radio to: CheckBox I just did this on a dev site and my price/field?action=preview looks just fine - no errors/notices.

My responsible answer is: first make an extra backup - next make a clone of your project and make the edit to the html_type - check your contribution page(s) where you offer this price_set - run any report you would normally run to check to see that everything still adds up [IF you've already had users selecting these price_set fields so you have data in them already].


Is this a bug in civicrm/case/activity/view breadcrumb?

That was logged to gitlab & Coleman provided a fix which was merged - I think it missed the 5.3 rc so will be in 5.4


In CiviMember, can one set a rule where expired members, when renewing, are assigned probation status

Welcome Lawrence: One thought would be to take the approach that if an expired member signs up again, that rather than renewing the original membership, it creates a brand new one - in which case i assume your existing Probation process would work fine.

I don't recall if there is an Extension or just a setting to change CiviMember to always create a new membership but i know it has been done as some Ors prefer that.

If you think that could work for you, I or someone else can probably post a link to it if providing you with the idea is not enough to help you find it yourself.

UPDATE

Also note that eg for Drupal there is a Member Role Synch module that lets you specify what User Roles are given/removed based on the civi membership type and status


I'm afraid the answer is "no you can't configure that to allow HTML tags". If you need lots of Help text put most of that into the 'Body' on the Event Info and/or Event Register and/or Contribution pages - keeping the help text nice and short.


Drupal Views using over ride feature with civicrm fields - token

Ok have worked this one out... was very much a "DOH!" moment... there is a section called Replacement Patterns under the ReWrite section - which is collapsed by default and can be overlooked which had the taken information.


What is the correct return from payment provider URL?

welcome to CiviCRM - we had some communications with a potential client who had an in-house developer that did some work on SwipeHQ. Suggest you try getting in touch with him via this question or give me a buzz and I will put you in touch if that is helpful. Adding a SwipeHQ tag


Need to make a group of members who have been members for 5 consecutive years

It sounds like you're doing this:

Instead, try this:


Recording Funding Applications in CiviCRM

I would recommend against using contribution type or contribution status as those have specific system uses for actually received contributions. Instead, you might try creating groups of contacts that have received your mailings or phone calls asking for contributions, perhaps based on whether the contact has specific activities under advanced search. If you want to target prospect contacts for donations of a specific amount I might create a custom field to contain the amount for the ask. You might want to make a Prospect contact type, add this contact type to the relevant contacts, and make the Target Ask' field a custom field of Prospects.