# Question
Title: You do not have permission to access this page - Contribution Page - WordPress Install
WP Version 5.8.2 CiviCRM Version 5.44.0

When trying to make a contribution when not logged in or in a private browser I get the following error sometimes on page load but more often after pressing the contribute button.

Using administer - users and permissions - permissions, I have set the following for the Anonymous User

CiviCRM: access uploaded files
CiviCRM: profile create
CiviCRM: profile edit
CiviCRM: profile view
CiviCRM: access all custom data
CiviEvent: register for events
CiviEvent: view event info
CiviContribute: make online contributions
CiviMail: access CiviMail subscribe/unsubscribe pages
CiviCampaign: sign CiviCRM Petition
CiviVolunteer: register to volunteer

I also receive an email with the following info

```
***ERROR***

```

message: You do not have permission to access this page. code:
exception: CRM\_Core\_Exception Object ( \[errorData:CRM\_Core\_Exception:private\] =\> Array ( \[error\_code\] =\> 0 )

```
[cause:protected] =>
[_trace:PEAR_Exception:private] =>
[message:protected] => You do not have permission to access this page.
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /public_html/wp-content/plugins/civicrm/civicrm/CRM/Utils/System/WordPress.php
[line:protected] => 605
[trace:Exception:private] => Array
    (
        [0] => Array
            (
                [file] => /public_html/wp-content/plugins/civicrm/civicrm/CRM/Utils/System.php
                [line] => 60
                [function] => permissionDenied
                [class] => CRM_Utils_System_WordPress
                [type] => ->
                [args] => Array
                    (
                    )

            )

        [1] => Array
            (
                [file] => /public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php
                [line] => 233
                [function] => __callStatic
                [class] => CRM_Utils_System
                [type] => ::
                [args] => Array
                    (
                        [0] => permissionDenied
                        [1] => Array
                            (
                            )

                    )

            )

        [2] => Array
            (
                [file] => /public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php
                [line] => 69
                [function] => runItem
                [class] => CRM_Core_Invoke
                [type] => ::
                [args] => Array

```

I have also disabled all WP plugin except for CiviCRM and still get the error, any help / advise appreciated thanks in advance.

Cheers

Stuart

Update Github Debug Info

# Answer
> 2 votes
Juggy69 Welcome to CiviCRM SE. Since you are using stripe as payment gateway for taking payment can you please check if Anonymous and Authenticated users have `CiviCRM: access Ajax API` permission, if not try assigning those permission to both anonymous and authenticated user role?

# Answer
> 2 votes
So after messing with the WordPress Plugin User Role Editor and going through the Access permission controls again it now looks to be working with the following in Access Permissions

CiviCRM: access uploaded files
CiviCRM: profile create
CiviCRM: profile edit
CiviCRM: profile view
CiviCRM: access all custom data
CiviCRM: access AJAX API
CiviEvent: register for events
CiviEvent: view event info
CiviContribute: make online contributions
CiviMail: access CiviMail subscribe/unsubscribe pages
CiviCampaign: sign CiviCRM Petition
CiviVolunteer: register to volunteer

In the User role editor image below

---
Tags: wordpress, civicontribute, contributions, contribution-page
---


# Question
Title: Moving existing CiviCRM to new Drupal instance + upgrade to Drupal 9
Hello dear Civi experts,

I am new to CiviCRM world and have a task at hand to upgrade **CiviCRM 5.40** which integrated to **Drupal 7.82** into **5.42**.

Then **lift whole CiviCRM** side and integrate to **new Drupal 9 system**, which is getting built at the moment.

Is it something possible to do? What are the thoughts or considerations in doing above practices?

Thanks in advance.

# Answer
> 15 votes
For the Drupal 7 to Drupal 9 part of the upgrade you are best to look for help with the Drupal Community. But sounds like you have this in hand.

The CiviCRM specific part of the D7 -\> D9 the things you'll want to think about are:

**Drupal users** If you are migrating drupal users and preserving Drupal User Ids, and drupal roles and user role mappings then you can just copy the civicm\_uf\_match table. If not then you will want to truncate/update the civicrm\_uf\_match table each time you bring the civicrm database across - and populate it appropriately.

**CiviCRM \<-\> Drupal Modules**

CiviCRM Webform Integration - do you have many CiviCRM webforms? How complicated are they? It is possible to migrate CiviCRM webforms using the Drupal webform\_migrate module - however you do need to patch it. However any complicated webforms you might be better rebuilding from scratch. And if you only have a couple you are probably quicker to build them from scratch in D9

CiviCRM Views - I've not seem any good solutions to automagically migrate views yet. You'll need to rebuild all of these.

CiviCRM Entity - There is a D9 version of CiviCRM Entity - however I'm not aware of any migrations for this.

**CiviCRM Version and extensions** To minimise the chance of problems you are best to keep your CiviCRM version and extension versions in sync between your Drupal 7 and Drupal 9 site. (I'm assuming you will have a period of time where you are testing CiviCRM on a copy of the Drupal 9 site.)

However as you will only ever be copying the CiviCRM database from Drupal 7 site to Drupal 9 site (at the very least once to get it working to test on and another time during the go live for the Drupal 9 site) you can have more recent versions for your extensions and CiviCRM core on the Drupal 9 site than the Drupal 7 site - but it doesn't work the other way around. Just remember to run the upgrade after you import the database each time and I'd only recommend doing this if you are only jumping a few minor versions of CiviCRM core.

**Installing CiviCRM on Drupal 9**

In terms of the process of installing CiviCRM on a Drupal 9 site:

The following should be all you need if you are installing the latest version of CiviCRM on a site created from drupal/core-recommended - if you were installing older versions there might be additional configuration required.

```
composer config extra.enable-patching true
composer require civicrm/civicrm-{core,packages,drupal-8}:'~5.42'

```

More details instructions here https://docs.civicrm.org/installation/en/latest/drupal8/

Note this includes -\>

```
composer config minimum-stability dev

```

which is no longer required - and you are probably best avoiding.

Make sure you have the correct server requirements - especially php extensions. https://docs.civicrm.org/installation/en/latest/general/requirements/

**Things to think about**

Ideally I'd recommend using drupal/core-recommended to set up the Drupal 9 project. While CiviCRM might work with other set ups if you can use drupal/core-recommended as a starting point you are eliminating some sources of problems and this is what CiviCRM is tested with so you are less likely to hit problems.

If you are not starting from drupal/core-recommended I'd recommend setting up a copy of the site your building and attempting to install CiviCRM as soon as possible. With a goal of proving the install will work. At a minimum test an angular page like the System Status Check page (Admin -\> Admin Console -\> System Status) renders properly, but if you have a lot of extensions you probably want to check they work too.

If someone is building the Drupal 9 site that is not familiar with CiviCRM you'll want to discuss with them theming requirements for any CiviCRM native pages (i.e. Events/Contribution Pages) if this is something you will want to use.

Additionally if you are using CiviCRM + webforms especially for contributions you will want to consider this as well.

You might want to have them working on a site with CiviCRM enabled but not a copy of your database just so their styles work for these pages.

**Run sheet**

The addition of CiviCRM to a D7 to D9 upgrade adds complexity and some additional steps. Make sure you have a good run sheet and testing is your friend.

You can copy your CiviCRM install from your live Drupal 7 to your Drupal 9 by copying the relevant database tables.

Before you go live you will want to test with a copy of your live CiviCRM database installed on your Drupal 9 site. Assuming you have a copy of the CiviCRM codebase (with a version greater than or equal to your D7 site) and the same for any extensions then all you will require is to:

Dump all your CiviCRM tables from your D7 site. These should all be prefixed with civicrm\_ (So something like - assuming you have pv installed if not remove that from the pipeline)

```
 mysqldump --single-transaction --skip-triggers database-name $(mysql -BN -e "select table_name from information_schema.tables where table_schema = 'database-name' and (table_name like 'civicrm_%' or table_name like 'civicrm_log_%' )  | pv | perl -p -e 's#\/\*\!5001[7|3].*?`[^\*]*\*\/##g' | gzip > dumpfile.sql.gz

```

Where the mysqldump command dumps the database taking the database name and a list of tables returned from the mysql command - which you should test first. The pv command is optional - just shows you a progress bar. The perl command strips out various things you don't need in the dump that can cause errors - see Why do I get "Access denied; you need (at least one of) the SUPER privilege(s) for this operation" when importing a SQL dump to CiviCRM? for more information. the gzip command is optional if you are copying between servers you'll want to compress the output.

There is at least one CiviCRM extension which uses a non standard prefix (not civicrm) - so if you get missing table errors double check that you don't have an extension using a table that isn't prefixed correctly.

Assuming you have already installed a blank CiviCRM for testing on this site drop all the CiviCRM tables (or database if you have the CiviCRM tables in a different database).

If you haven't note you can't just copy the civicrm.settings.php file from the D7 install over - there are some differences in paths between the two systems which will probably show as any CiviCRM CSS/JS resources failing to load in the browser.

Then load the dump file into database you are using for the Drupal 9 site either into the Drupal Database (easy) or a different database (slightly more difficult).

If the path to your extension directory is different between d7 and d9 which is likely make sure that is set correctly - the easiest way to use the commented setting in civicrm.settings.php. Visit a CiviCRM admin page and ensure you don't get missing extension warnings. if you do you'll need to force a refresh either in the UI via the manage extensions page or using cv.

Set your outbound mail off and put into staging mode to prevent a cron job from triggering any payments. (Assuming you haven't overridden this in your schedule jobs page - which would be rare, in which case disable the job there).

Files - you'll also want to copy across any files that CiviCRM manages. If you check your Admin - System Settings -\> Directories it will give you a path to look for these in. It might be that you don't have anything to copy. And you might be okay to just do the initial copy and the final copy and leave this step out of any intermediate copies during/for testing.

If your D7 site CiviCRM version is behind your D9 CiviCRM version run the CiviCRM upgrade.

**Go live**

You'll need to plan in as part of the migration the time taken to switch your CiviCRM database over - and you want to either:

* have the Drupal 7 site in maintenance mode for this period, or
* have a plan to manually copy any updates made in CiviCRM (i.e. unsubscribes, subscribes, payments etc) after you dump the tables to the time you switch over.

If the people managing your Drupal upgrade are not familiar with CiviCRM you'll want to flag this with them as they will need to build this into their plans.

If the new D9 site will live on a different server then you will need to think about the DNS propagation time too, decrease your TTL in good time to minimise this. You can potentially set up a reverse proxy on one of the servers to eliminate this lag to minimise time in maintenance mode - however if you are okay with more downtime that is an easier solution.

If possible I'd recommend running a practice of copying your CiviCRM install across immediately before you go live, and after a freeze on any changes to the Drupal site. Build in an additional round of testing. That gives you a chance to get a good time estimate to help with your cut over planning and will hopefully pick up any last minute errors that happen.

**Final Notes**

If you have any custom extensions test them. If you take payments test your payment processor if possible with a live $1 transaction.

Then enjoy your shiny new Drupal 9 site. And share anything you found about the process here/with the community. With Drupal 7 end of live November 2022, and Drupal 7 still having a plurality of installs by CMS there will be a few people treading this upgrade path this year.

--

Postscript:

Migrating webforms? If only a couple recommend rebuilding but if you want to migrate you could look at using https://github.com/fuzionnz/webform\_civicrm\_migrate and https://github.com/fuzionnz/webform\_migrate\_plus \- definitely backup before using.

# Answer
> 1 votes
I have setup CiviCRM with drupal 8 and 9 few times and here is how i would do it.

**Prep**

1- Check your machine supports at-least the minimum PHP and MySQL versions https://docs.civicrm.org/installation/en/latest/general/requirements/

2-First Install Drupal 9 and have it working 100%.

3-Then use the cv command line tool (my preference) to install civi, specially if you want to install civi in separate database than the Drupal one and check this link for other requirements. https://docs.civicrm.org/installation/en/latest/drupal8/

4 - move over your modules or other dependency stuff such as composer

5- Fix whatever issues that popup etc

**For: Drupal 9:**

1- Note that Drupal 9 has higher PHP, Apache and MySQL requirement, so check below link to meet those. My personal preference is since Drupal 10 isn't too far and it will require PHP 8, to just go straight to PHP 8 (supported by latest Civi and Drupal 9).

https://www.drupal.org/docs/understanding-drupal/how-drupal-9-was-made-and-what-is-included/environment-requirements-of-drupal-9

https://www.drupal.org/docs/system-requirements/php-requirements

2 - Other steps will be similar to above one. You would install Drupal first and get it working, then copy your modules that support Drupal 9 and fix comparability issues.

3 - Then you would install Civi 5.4.2 or latest version that supports Drupal 9.

4 - Consult with below links if the official install links for Drupal 9 don't work for Civi.

What is the status of CiviCRM working with Drupal 9?

Can't install civiCRM with drupal 9.2.7

* my recommendation is if your final destination is Drupal 9, just go straight to that and save time, unless you have other requirements that need Drupal 7.8.2

Good luck.

---
Tags: upgrade, drupal-9
---


# Question
Title: How to connect Data processor, Content Views & Content View CiviCRM on a remote WP site
We're struggling to connect CiviCRM on server A (source) with a Data processor that we want to expose on a WP site on server B (target). We're using WP 5.7.2 and CiviCRM 5.39.

What we've done until now:

* Installed Dataprocessor on site A with CiviCRM. A processor is set up and ready to be remotely exposed.
* Installed CiviCRM McRestFace on site B to connect both sites. Connection is ok and we've successfully tried with a contact form 7
* Installed Content Views on site B to show the data.

Question is now: where do we install Content Views CiviCRM Data Processor?

If on source site, then we can't find the Data Processor on target site.

If on target site, then we have this error `It looks like CiviCRM is not activated, Content Views CiviCRM integration requires CiviCRM to be installed and activated.` which is obvious because CiviCRM is on source site. And then we don't even need `CiviCRM McRestFace` because they already share the same database.

If we install `Content Views` and `Content Views CiviCRM Data Processor` on source site then we see the option 'CiviCRM' when adding a new view but why would we use `Content Views` on the source site.

We've looked after documentation and on SE but haven't found yet anything useful.

Are we missing something obvious like an other extension (I saw two of them made by Andrei Mondoc and especially this one) or is this still the current state that it doesn't work on remote site?

If this is not yet possible (we could also contribute), are there user cases of making it possible other way round?

# Answer
> 2 votes
@Jaap from CiviCoop has released this extension to fill the gap.

Actually, we've managed to reach our goal by directly calling the API through an URL.

---
Tags: wordpress, data-processor
---


# Question
Title: How to setup a "Schedule Reminder" to trigger on a regular interval that sends an email to a "Smart group"
I have a smart group and would like to send an email to all those contacts on a regular interval. For example, every Sunday at 10am. How can I set this up please? I have tried but cant seems to figure it out...

# Answer
If the email content will include text and contact tokens than I would suggest to create mailings and use civicrm recurring mail extension to setup as recurring.
> 3 votes

---
Tags: smartgroups, scheduled-reminders
---


title: Contribution - Config Error

text:
# Question
Title: Contribution - Config Error
When trying to make a contribution end users are getting the following error Configuration error - unable to process paymentIntent

Using CiviCRM 5.44.0, Stripe Payment Processor Extn Version 6.6.3

It was working on 10/12 from 12pm as I tested several times, and also around 2pm a 3rd party made a contribution, then literally the next day it has stopped working and I have changed nothing.

Setup the Payment Processors correctly as far as I can tell Payment Processors
Payment Processors : Comparison

And also found this CivicRM payment Issues

```
Got error 'PHP message: PHP Fatal error:  Uncaught Error: Call to undefined method InvalidArgumentException::getRequestId() in
/public_html/wp-content/uploads/civicrm/ext/com.drastikbydesign.stripe/api/v3/StripePaymentintent.php:229\nStack trace:\n#0
/public_html/wp-content/plugins/civicrm/civicrm/Civi/API/Provider/MagicFunctionProvider.php(89): civicrm_api3_stripe_paymentintent_process(Array)\n#1
/public_html/wp-content/plugins/civicrm/civicrm/Civi/API/Kernel.php(149): Civi\\API\\Provider\\MagicFunctionProvider->invoke(Array)\n#2
/public_html/wp-content/plugins/civicrm/civicrm/Civi/API/Kernel.php(81): Civi\\API\\Kernel->runRequest(Array)\n#3
/public_html/wp-content/plugins/civicrm/civicrm/api/api.php(22): Civi\\API\\Kernel->runSafe

```

# Answer
Could you make sure you have CiviCRM ajax api permission set for anonymous and authenticated user?

CiviCRM \>\> Administer \>\> Users and Permissions \>\> Permissions (Access Control) \>\> WordPress Access Control
> 2 votes

---
Tags: wordpress, civicontribute, contributions, payment-processor
---


# Question
Title: api3 and contact.is_deleted when using "return", and discrepancy between api explorer and php code?
**Scenario**:

Contact id 2, is\_deleted is set to 1. Permissions not an issue since running as admin and no acl's present.

**Results**:

* api3 explorer: Ask for return value "contact is in trash" which translates to `'return' => ['is_deleted']`, so in full `civicrm_api3('contact', 'get', ['id' => 2, 'return' => ['is_deleted']]);`. This returns 0 results in api3 explorer (which is wrong).
* command line with cv: also no results
* command line with cv but change is\_deleted to contact\_is\_deleted: `civicrm_api3('contact', 'get', ['id' => 2, 'return' => ['contact_is_deleted']]);`. This does return results.
* Seeing same on 5.35 and master. I don't remember having this issue before but maybe I never put it in the `return` clause. It does work as a "where" clause on the command line, e.g. `civicrm_api3('contact', 'get', ['id' => 2, 'is_deleted' => 1]);`, but not in api3 explorer.

# Answer
> 3 votes
Certain field values are blocked through ajax call that includes from api explorer as well. The ajax call makes check permission to true by default and cannot be over-riden from api params. The result may vary incase calling from php or smarty

---
Tags: api
---


# Question
Title: Email link tracking generating a 404 on preview
CiviCRM 5.43.0 in Wordpress 5.8.2

When building a traditional mailing which includes hyperlinks, and enabling click tracking, we see the following behaviour:

When clicking the HTML Preview button in CiviCRM, the link works (no tracking enabled)

When sending the email to the intended recipients, the link works. This is an example of a link from a sent campaign: https://heritagepulse.insights-alliance.com/civicrm/?civiwp=CiviCRM&q=civicrm/mailing/url&u=91&qid=330

When using the "send test email to" function, on clicking a link, we see a 404 error. This is an example of how the link is constructed in 'send test email to' mode: https://heritagepulse.insights-alliance.com/civicrm/mailing/url/?u=92&qid=331

Is this intentional behaviour? Thanks!

# Answer
My wordpress base page was set to 'civicrm', changing it to 'civicrm/' seems to have fixed this
> 3 votes

---
Tags: civimail
---


# Question
Title: Getting error when entering valid credit card and cvv
When people try donate at this page they are getting a pink bar underneath the credit card entry line that says "Error" no other info on type of error. Credit card and and cvv are valid.

https://emptyhometax.org/civicrm/contribute/transact/?reset=1&id=1

# Answer
> 2 votes
So I actually solved my issue by going to Wordpress Access Control under Users and Permissions. I just enabled the permissions for Anons under "CiviCRM: access AJAX API Allow API access even if Access CiviCRM is not granted". Payments are going through no problem now.

# Answer
> 1 votes
Just adding a note that this problem can also be caused by the WordPress basepage being set to something other than 'civicrm'. There's no fix for this as yet, with some discussion of potential issues here.

---
Tags: contribution-page, stripe
---


title: Notices on online contributions pages

text:
# Question
Title: Notices on online contributions pages
After upgrading CiviCRM from 5.20 to 5.44.0 we started getting lots of notice errors on screen specially on front end online pages, is that something we need to worry about? We did some QA by submitting Donation, Membership and Event registration everything seems to be working as expected.

```
Notice: Undefined index: trackingFields in include() (line 5 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%6E/6ED/6ED627C5%%TrackingFields.tpl.php).
Notice: Undefined index: islifetime in include() (line 93 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: ispricelifetime in include() (line 93 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: is_quick_config in include() (line 5 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: renewal_mode in include() (line 10 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: membershipBlock in include() (line 22 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: membershipBlock in include() (line 26 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: help_pre in include() (line 29 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%FA/FA7/FA71A514%%PriceSet.tpl.php).
Notice: Undefined index: help_post in include() (line 65 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%FA/FA7/FA71A514%%PriceSet.tpl.php).
Notice: Undefined index: auto_renew_membership_field in include() (line 123 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%FA/FA7/FA71A514%%PriceSet.tpl.php).
Notice: Undefined index: help_pre in include() (line 29 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%FA/FA7/FA71A514%%PriceSet.tpl.php).
Notice: Undefined index: help_post in include() (line 117 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%FA/FA7/FA71A514%%PriceSet.tpl.php).
Notice: Undefined index: auto_renew_membership_field in include() (line 123 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%FA/FA7/FA71A514%%PriceSet.tpl.php).
Notice: Undefined index: noCalcValueDisplay in include() (line 6 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%E1/E1B/E1B56AD0%%Calculate.tpl.php).
Notice: Undefined index: autoRenewOption in include() (line 79 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: membershipBlock in include() (line 154 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: membershipBlock in include() (line 179 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%0B/0BB/0BBEE922%%MembershipBlock.tpl.php).
Notice: Undefined index: is_pledge_payment in include() (line 138 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: is_pledge_interval in include() (line 154 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: start_date_editable in include() (line 163 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: start_date in include() (line 174 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: start_date_display in include() (line 176 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: pcpSupporterText in include() (line 221 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: help_pre in include() (line 6 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%70/70E/70E79F81%%Block.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: phone_ext-3-1 in include() (line 124 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: html_type in include() (line 134 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: html_type in include() (line 150 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: options_per_line in include() (line 63 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: is_datetime_field in include() (line 108 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: html_type in include() (line 134 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: html_type in include() (line 150 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%5C/5C2/5C26BC2B%%Fields.tpl.php).
Notice: Undefined index: field in include() (line 10 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%70/70E/70E79F81%%Block.tpl.php).
Notice: Undefined index: help_post in include() (line 10 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%70/70E/70E79F81%%Block.tpl.php).
Notice: Undefined index: submittedOnBehalfInfo in include() (line 123 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%B0/B02/B02188B6%%OnBehalfOf.tpl.php).
Notice: Undefined index: submittedOnBehalf in include() (line 126 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%B0/B02/B02188B6%%OnBehalfOf.tpl.php).
Notice: Undefined index: showCMS in include() (line 5 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%98/98F/98F6DF1D%%CMSUser.tpl.php).
Notice: Undefined index: preview in include() (line 33 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%DF/DF4/DF4B6A64%%PremiumBlock.tpl.php).
Notice: Undefined index: preview in include() (line 37 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%DF/DF4/DF4B6A64%%PremiumBlock.tpl.php).
Notice: Undefined index: thumbnail in include() (line 39 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%DF/DF4/DF4B6A64%%PremiumBlock.tpl.php).
Notice: Undefined index: image in include() (line 39 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%DF/DF4/DF4B6A64%%PremiumBlock.tpl.php).
Notice: Undefined index: preview in include() (line 39 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%DF/DF4/DF4B6A64%%PremiumBlock.tpl.php).
Notice: Undefined index: membershipBlock in include() (line 53 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%DF/DF4/DF4B6A64%%PremiumBlock.tpl.php).
Notice: Undefined index: honoreeProfileFields in include() (line 266 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: customPre in include() (line 298 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: isHonor in include() (line 304 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: is_pay_later in include() (line 361 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: description in include() (line 31 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%2F/2F3/2F376CCE%%BillingBlock.tpl.php).
Notice: Undefined index: description in include() (line 31 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%2F/2F3/2F376CCE%%BillingBlock.tpl.php).
Notice: Undefined index: description in include() (line 31 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%2F/2F3/2F376CCE%%BillingBlock.tpl.php).
Notice: Undefined index: description in include() (line 31 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%2F/2F3/2F376CCE%%BillingBlock.tpl.php).
Notice: Undefined index: profileAddressFields in include() (line 47 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%2F/2F3/2F376CCE%%BillingBlock.tpl.php).
Notice: Undefined index: profileAddressFields in include() (line 78 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%2F/2F3/2F376CCE%%BillingBlock.tpl.php).
Notice: Undefined index: event in include() (line 50 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%51/516/51624B60%%paymentBlock.tpl.php).
Notice: Undefined index: urlPathVar in include() (line 86 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%51/516/51624B60%%paymentBlock.tpl.php).
Notice: Undefined index: customPost in include() (line 383 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: bank_account_number in include() (line 389 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: isCaptcha in include() (line 398 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: footer_text in include() (line 412 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: isHonor in include() (line 420 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).
Notice: Undefined index: allowAutoRenewMembership in include() (line 447 of /Users/sportskida/Sites/drupal7/sites/default/files/civicrm/templates_c/en_GB/%%3D/3D1/3D13F2BA%%Main.tpl.php).

```

# Answer
> 3 votes
There's nothing you need to worry about those php notices from Smarty, Can you check if you have debugging enabled? If so by turning off debugging the notices should disappear.

To turn off debugging you will need to navigate to CiviCRM \>\> Administer \>\> System Settings \>\> Debugging and Error Handling. Find for 'Enable Debugging' option on the form, choose 'No' and save it.

HTH

Pradeep

---
Tags: contribution-page
---


# Question
Title: "Invalid Filter in CRM_Core_BAO_CustomGroup" error
Things have come to a virtual standstill on a CiviCRM/Drupal7 installation. CiviCRM page loads (and reloads) are taking a minute or more, but do eventually load. Another two installations on the same server are unaffected.

Perhaps related, I had just upgraded the mosaico extension from the beta to the release version and the mosaico menus are absent from 'Mailings'.

I have tried clearing the caches and rebuilding the menus.

Advice and insights would be gratefully received.

The log shows:

```
CRM_Core_Exception: Invalid Filter in CRM_Core_BAO_CustomGroup::validateSubTypeByEntity()
(line 689 of /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/BAO/CustomGroup.php).

```

and:

```
$backTrace =
  #0 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/Error.php(229): CRM_Core_Error::backtrace("backTrace", TRUE)
  #1 [internal function](): CRM_Core_Error::handle(Object(DB_Error))
  #2 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/PEAR.php(921): call_user_func((Array:2), Object(DB_Error))
  #3 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: already exists", -5, 16, (Array:2), "INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...")
  #4 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/PEAR.php(575): DB_Error->__construct(-5, 16, (Array:2), "INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...")
  #5 [internal function](): PEAR->_raiseError(Object(DB_mysqli), NULL, -5, NULL, NULL, "INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...", "DB_Error", TRUE)
  #6 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/PEAR.php(224): call_user_func_array((Array:2), (Array:8))
  #7 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/common.php(1905): PEAR->__call("raiseError", (Array:7))
  #8 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/common.php(1905): PEAR->raiseError(NULL, -5, NULL, NULL, "INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...", "DB_Error", TRUE)
  #9 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-5, NULL, NULL, NULL, "1062 ** Duplicate entry 'civicrm/contact/view/note-1' for key 'UI_path_domain...")
  #10 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
  #11 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...")
  #12 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/DataObject.php(2446): DB_common->query("INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...")
  #13 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/packages/DB/DataObject.php(1068): DB_DataObject->_query("INSERT INTO civicrm_menu (domain_id , path , path_arguments , title , access_...")
  #14 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/DAO.php(495): DB_DataObject->insert()
  #15 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/Menu.php(309): CRM_Core_DAO->save()
  #16 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(185): CRM_Core_Menu::store(FALSE)
  #17 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(83): CRM_Core_Invoke::getItem((Array:2))
  #18 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:2))
  #19 /var/www/clients/client4/web5/web/sites/all/modules/civicrm/drupal/civicrm.module(448): CRM_Core_Invoke::invoke((Array:2))
  #20 [internal function](): civicrm_invoke("admin")
  #21 /var/www/clients/client4/web5/web/includes/menu.inc(527): call_user_func_array("civicrm_invoke", (Array:1))
  #22 /var/www/clients/client4/web5/web/index.php(21): menu_execute_active_handler()
  #23 {main}
  SEVERITY

```

# Answer
> 2 votes
Tracked down the cause. It was some 'bad' (non-numeric?) values in civicrm\_custom\_group.extends\_entity\_column\_value, such as 'media\_info', 'Funder' & 'Elected\_Info\_Ind'. Perhaps a legacy from an old module or extension? Deleted these, errors disappeared & performance excellent.

# Answer
> 0 votes
From the error, it seems you have double entry for `path, domain_id` combo in `civicrm_menu` table. This need to be unique as it has an index created over it.

Try deleting the one row from `civicrm_menu` table that contains a duplicate values for `path and domain_id`.

Eg. Run this query

```
SELECT id, path, domain_id
FROM civicrm_menu
WHERE path = 'civicrm/contact/view/note';

```

If this contains two rows with same domain\_id - delete one of them -\> rebuild menu and check if this fixes the issue for you.

# Answer
> 0 votes
I had a similar but different issue creating indices for contact\_id case\_id in that table. Had to remove before rerunning. Sadly no "IF NOT EXISTS" is available for CREATE INDEX.

# Answer
> 0 votes
I had this same issue when an organisation was being stored as an individual. So the main contact type was set to individual. This meant that the organisation contact sub type did not match the correct set of sub types for individual.

I changed the contact type in the database directly for that organisation (civicrm\_contact).

---
Tags: error, 4.7
---


# Question
Title: Can billing name/address not be pre-populated on Event Registration Page?
The pre-populated Billing Name and address information on the Event Registration Page is causing many credit card authorizations to be declined (Authorization.net payment processor).

Is there a way to make these fields:

1. Not be pre-populated?
2. Make the "My billing address is the same as above" checkbox not default to being checked (and then if checked the fields populate)?
3. Editing which fields are present in this field grouping?

Civi: 5.42.1 Joomla: 3.10.4

# Answer
> 2 votes
I am afraid to say its not possible without implementing hook\_civicrm\_buildForm hook via extension or module or plugin.

---
Tags: civievent, civicontribute, contribution-page, online-registration, billingblock
---


# Question
Title: Horizontal scroll bar on searchkit/afform
We have been using SearchKit and Form Builer (afform) to develop new reports for our teams. Some of the tables have grown to be quite extensive. The headers are becoming difficult to read because the table is only staying within the frame rather than creating a horizontal scroll bar. Does anyone know how to add a horizontal scroll bar to a SearchKit Table or to Afform?

# Answer
> 1 votes
You could use some css to increase the width. On mine there already is a scrollbar but you could force it with overflow-x. So something like:

```
div.crm-search-display {
  overflow-x: scroll;
}
div.crm-search-display table {
  max-width: 1500px;
  width: 1500px;
}

```

---
Tags: javascript, searchkit, formbuilder
---


title: Autocomplete organization

text:
# Question
Title: Autocomplete organization
Is there any extension that converts on-behalf Organization name field to a drop down on online contribution pages? Seems like publicautocomplete works only for current\_employer field.

# Answer
I created an extension for this and can be found at https://civicrm.org/extensions/autocomplete-organization
> 3 votes

---
Tags: contribution-page, organization
---


# Question
Title: Why does From Email address '1' retain FIXME as its name in the db
On 4.6.4 I recently spotted a client where a Scheduled Reminder was be sent using From Address = 1 In the UI this was clearly correct ie it had the clients email in it. But they were arriving in inboxes from FIXME. Checking in the DB there is a Label field (which is all that is visible in the UI) and a Name field. Should the Name field be being updated to match the Label when one saves? If not is my system incorrectly using the Name rather than the Label when sending out emails? If not should the Name field be editable in the UI

# Answer
When sending some emails, such as using CiviRules and the MailAPI extension, the display name of the specified from email address option is being read from the non-ui editable Name column, while the email address is read from the Label column. This results email being sent with the display name of FIXME when using the from email address that was created during the initial CiviCRM set-up. The Name of the first created email address is "FIXME" \<info@example.com"\> and is not editable via the user interface.

This record can be updated by editing option\_group\_id 31 value 1 in the database. An easier option might be to just create a new from address and delete or at least not use the original, and then make sure to update wherever that from address was used.

This behavior seems to be the result of two separate flaws, so I have submitted an issue to both the Core and MailAPI extension queues.
> 3 votes

---
Tags: email
---


# Question
Title: Search builder fails In Group and Not In Group Search
This was run on your demo account using Search Builder. All the records selected are in both groups. 8 Contacts
Group(s) **In** Advisory Board ...AND... Group Status 'Added' ...AND... Group(s) **Not In** Newsletter Subscribers ...AND... Group Status 'Added' Select Records: All 8 records 0 Selected records only

# Answer
> 1 votes
Welcome to SE. I can reproduce that and it seems to be a bug so have logged it as an issue. However, I'd suggest you look at Search Kit rather than Search Builder. See this

One of the many nice things about Search Kit is that you can expand the Query Info section to see how your GUI entry is being interpreted. Search Builder doesn't give you any info to help figure out why it's not showing the results you expect.

---
Tags: search, search-builder, searchkit
---


# Question
Title: Where should custom "Region" calls be stored?
I'm wanting to add content to a region in EventInfo.tpl. The Docs give this function as an example, but do not clarify exactly where this "CRM\_Core\_Region::instance('page-body')-\>add" method is called from.

```
  CRM_Core_Region::instance('page-body')->add(array(
      'markup' => '<p>Congratulations! You won the lottery!</p>',
  ));

```

Can I call this method from within a theme file like functions.php? Is there a predefined directory where custom region code should live?

# Answer
> 3 votes
You need to implement it in hook, if you are looking to add content on event info page than you will need to implement it in pageRun() hook

# Answer
> 3 votes
Solution found: https://docs.civicrm.org/dev/en/latest/hooks/usage/wordpress/

```
add_filter('civicrm_pageRun', 'addJoinLink', 10, 4 );

function addJoinLink() {
    CRM_Core_Region::instance('event-page-eventinfo-actionlinks-top')->add(array(
        'markup' => '<p>Congratulations! You won the lottery!</p>',
    ));
}

```

---
Tags: civievent, templates, custom-templates
---


# Question
Title: Reaching max participants on event price set results in WSOD
I have an event that uses a price set and limits a price option in a price set to 7. Once it was reached, the event registration page results in WSOD. If I increase it, the page loads just fine. I recall this occuring to me months ago as well.

I am unable to properly test on https://wpmaster.demo.civicrm.org/ as it does not appear a registration in test mode counts against the participant count and I can't change this in the db directly. Is this just me or can others replicate?

Civi 5.35.2 WP 5.7.2

Ref: https://lab.civicrm.org/dev/core/-/issues?scope=all&state=opened&search=max+participant

# Answer
This is now fixed with the following: https://github.com/civicrm/civicrm-core/pull/20073/commits/4a004c120d497f227165d98c81e828998fdd276c

https://lab.civicrm.org/dev/event/-/issues/53
> 1 votes

---
Tags: civievent, price-sets
---


title: Font editing buttons disappeared

text:
# Question
Title: Font editing buttons disappeared
The font editing buttons have disappeared from the New Mailings message box following a recent upgrade - is there a setting somewhere where I can turn these back on? Our test environment is still working fine.

# Answer
Can you check ckeditor settings under Display Preference ( Civicrm \> Administer \> Customize Data and Screens \> Display Preference)
> 2 votes

---
Tags: mailing
---


title: Recording simple offline contribution

text:
# Question
Title: Recording simple offline contribution
I'm using CiviCRM with Drupal to develop an internal (non-public) donor management system. Everything was coming together nicely until I began trying to create a simple block to record an offline donation from an existing contact (ie: receiving a check or cash). My intent was to have the simplest block possible (ie: amount, date received, optional check number, and a submit button).

I've Googled the heck out of it but just can't seem to make any progress. If this is indeed possible, anything pointing me in the right direction would be greatly appreciated.

Thanks!

# Answer
Did you try using Webform + Webform civicrm + webform block modules?
> 2 votes

# Answer
The easiest way would be to use the batch operations. They are designed for you to enter multiple contributions at the same time and therefore will allow the data to be captured as you want. You should find the ability to create batches under your contributions menu.
> 2 votes

---
Tags: civicontribute, drupal
---


# Question
Title: How to get "Last contribution amount" and "Last contribution date" into report?
I'm needing a way to add 2 columns to contribution summary report, 1 for displaying "last contribution date" and 1 for "last contribution amount" in a CiviReport. Is there an easy way using the UI to do this? If not, is there a way to write a plain SQL query that shows up as a report?

# Answer
The way we have approached this in the past is to install/enable the Summary Fields extension, and set that up so it calculates the Last Date and Last amount, which are then available as custom fields you can add to any report.
> 6 votes

---
Tags: custom-fields, civireport, reports, custom-reports, sql
---


# Question
Title: Registration button not shown when CiviDiscount results in zero amount to pay
having the same issue as linked below - while using current stripe extension:

I've got 100% discount, PayPal and the register button does not show for civiEvent, how do I get it to show?

so if using any discount code which results in zero the (reasonable) function to hide the payment processor's button also hides the 'register' button of the form for an event registration and it's not possible to finish it.

does anybody know about a quick way to fix this and/or know where @Interlated could have put that code he posted? (too little reputation to comment there directly)

tia.

# Answer
was able to resolve this by redoing the whole preceding upgrade process from core 5.2.0 to 5.44.0 directly - 5.2.0 to 5.28.0 which i did couple of weeks ago didn't work flawlessly and seems to have caused this.
> 2 votes

---
Tags: civievent, cividiscount, stripe
---


title: Complete Donation Report Per Donor

text:
# Question
Title: Complete Donation Report Per Donor
I am not familiar with the complete inner workings of CIVICRM - but does anyone know how to create a report (or CSV file) that would have the donor's information (name, address, etc) and their complete giving history? (date, amount of gift) for all gifts that have been entered?

# Answer
> 2 votes
Try using Constituent Detail report(/civicrm/report/contact/detail?reset=1). This report gives Contact details along with other information like Contribution or Membership etc

---
Tags: civicontribute
---


title: Multiple "Mail delivery failed" Emails

text:
# Question
Title: Multiple "Mail delivery failed" Emails
In the past month, I've been receiving a lot of junk/spam emails from CiviCRM. The email is titled "Mail delivery failed: returning message to sender" with the message:

```
This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed:

  XXX@email.com
    message has lines too long for transport

```

I'm using Drupal 7.82/CiviCRM 4.43.2. CiviMail is not enabled and my outbound mail is selected as mail(). No issues there. Users use the mail system to send copies of case activities through CiviCase.

This error seems to be related to ONEspecific case activity that's stuck in queue. Is there a way I can stop this email from resending?

# Answer
> 1 votes
Figured out the problem. The error was related to the "message\_linelength\_limit" due to recent changes in exim and directadmin on my server. Check the message limit using SSH:

grep message\_linelength\_limit /etc/exim.conf

# Answer
> 1 votes
I assume you have scheduled reminders set up in civi and that's where it's coming from? You said people send copies of activities but that wouldn't then be constantly repeating from the same lone activity so that's why I'm thinking scheduled reminders.

The error is "message has lines too long for transport" - if there's something about that activity like a really long details field can you break up the line lengths in it?

---
Tags: email, civicase
---


# Question
Title: How to include Partner Information in CiviReports
We have created a new (Pickleball) Tournament Event in Civi with On-Line Registration. As part of the registration, Partner Information (partner's name) can be entered for Men's Doubles Partner, Women's Doubles Partner and/or Mixed Doubles Partner. However, this information does not seem to be available on CiviReports for the Event.

How can Partner Information be included in CiviReports for Event Participants such that they can be properly link to their partners. Any assistance you can provide would be greatly appreciated.

Thanks,

LA Jones

# Answer
Welcome to SE. I'm assuming the partner info field is created as a custom field on Participants? What kind of field is it? (It could be a simple text field or a contact reference field to another contact) You should see those custom fields listed at the bottom of the Columns tab on the 'Event Participants List' or 'Attendee List'. Expand the custom field group and select the partner field.
> 1 votes

---
Tags: civireport
---


# Question
Title: SpamAssassin marking mailings as compromised WordPress site
A few of my constituents have told me that my emails are going to their Spam folder in Gmail. I did some digging with mail-tester.com and found that SpamAssassin is dinging my mailings -1.629 points for the code URI\_WP\_HACKED\_2.

I did some more digging and found this is likely caused by the WP REST API that was integrated into Civi in 5.25. I'm currently running 5.27.0. See this link for more information: https://docs.civicrm.org/dev/en/latest/api/v3/wp-rest/

My question is: how do I resolve this SpamAssassin false positive? I don't understand how to set the CIVICRM\_WP\_REST\_REPLACE\_MAILING\_TRACKING constant to true. I've tried both in wp-config.php and civicrm.settings.php. SpamAssassin is still marking the mailings as URI\_WP\_HACKED\_2.

Any ideas as to why this is happening and how I can fix it?

Many thanks!

# Answer
> 0 votes
Can you detail out some more information. Without the filter added there is no change at all to mailings pre and post civicrm 5.25. The urls are the same until you add the filter. I am unsure how to evaluate without a list of the URLs they are dinging you for and I understand you would not want to post them here. As far as the REST API for mailing, you can try this https://develop.tadpole.cc/plugins/cv-rest-mailing it's a small plugin that implements the filter needed.

# Answer
> 0 votes
It's not that your site is hacked; it's that a large fraction of mail sent using the plugin is spam; see https://bz.apache.org/SpamAssassin/show\_bug.cgi?id=7210. SA(SpamAssassin) has noticed the association; it's working as designed. The solution is to do something to make your email look more like ham. See https://cwiki.apache.org/confluence/display/SPAMASSASSIN/StopBlockingMyMail particularly **"Please read this FAQ all the way through first. It will be much more useful to you than that email or bug report."** and the second and third bullets -- ...For a much longer article on things you can do to prevent email you send from being flagged as spam see **AvoidingFpsForSenders**. If that article is over your head, find anyone with Unix or Linux sysadmin experience who understands basic email administration and working with open source software like SpamAssassin. ...

My past experience is that folks who follow a few tips from https://cwiki.apache.org/confluence/display/SPAMASSASSIN/AvoidingFpsForSenders that they're not currently following, improve their SA scores.

I know SE likes self-contained answers. So here is the content of that page, as of today. (I suggest seeing that page, as it will remain up-to-date.). It's SE-license-compatible.

AvoidingFpsForSenders

Created by ASF Infrabot, last modified by Bill Cole on Dec 13, 2021

Some Tips for Legitimate Senders to Avoid False Positives

Sections found below:

General Guidelines – These guidelines can be useful if you haven't yet sent out your email(s), and want to keep the scores low (or negative) to avoid false-positive problems.

Fixing FPs – Your email was flagged as a spam – how to avoid this next time Newsletter Aids – Your newsletter is confirmed opt-in / double opt-in, never spams, and you want to gain some negative (i.e. NOT spam) scoring traits. Other Resources – Where else can you look for guidance?

General Guidelines

These guidelines can be useful if you haven't yet sent out your email(s), and want to keep the scores low (or negative) to avoid false-positive problems.

Tip: Don't worry too much about specific rules within SpamAssassin. The rules catch spam. If your email isn't spam, you shouldn't be matching the rules. Even if you do hit an occasional rule, unless your email actually is spam, it shouldn't score high enough to be a problem.

Tip: Be honest in your headers. Be accurate in who you are (From), and which systems the email goes through, preferably from your own servers, using your own domain name. Make sure the the To header indicates the recipient. If the recipient is a list or a class of people, state so. Don't insert strange Received headers, or any other unwarranted header.

Spammers need to try to fake out filters by hiding their source and destination; if you try to hide your source and destination you'll look like spam too. Likewise, spammers often try to track their spam and guage its effectiveness through tracking headers they add to emails. If you add unnecessary headers to your emails, this can make them look like spam.

Tip: Use a domain name which is identified by a verifiable IP address. Make sure that if someone checks on the domain of your From address and Reply-To address that these addresses are valid, and the machine that would receive any Reply email can be identified.

Tip: Using SPF identification for your domain helps. It won't flag you as a good guy directly, but it will prevent bad guys from successfully masquerading as you.

Tip: Use an intelligent message id which ties correctly to your system. Use an intelligent mailing agent, one which identifies itself in the headers and which isn't heavily used by spammers. Make sure your date header is correctly formatted and in the correct time zone.

Tip: Use email composition and mailing tools that work correctly. Well constructed emails (technically correct) can be readily identified as not-spam. Emails with missing mime sections, invalid or missing message-ids, invalid or missing date headers, subject or other headers with unescaped unicode, etc., are frequently signs of spam.

Tip: Avoid useless or needless encodings. Don't use base-64 encoded text unless you need to.

Tip: Don't include a disclaimer that your email isn't spam. Don't claim compliance with some legal criteria, especially one which is not actually law in your country. Only spam needs to claim compliance – non-spam is supposed to already be in compliance.

If your email is covered by anti-spam laws, do make sure you are in actual compliance. Skirting the edge of compliance is a frequent spam trick, and is accordingly flagged by SpamAssassin.

Tip: Use normal conversational language, be sure not to use excessive spacing and or capitalization on your subject.

Tip: Be open and honest and plain in your emails. If you try to hide things, or try to use tricks to bypass spam filters, you'll look like a spammer and you'll be treated like a spammer. The statistics for use of these various techniques show that it occurs far more frequently in spam mail than non-spam, and the rules reflect that.

Do not use "cute" spellings, Don't S.P.A.C.E out your words, don't put str@nge |etters 0r characters into your emails.

Tip: If you're using HTML emails, use high quality HTML emails. Don't use tools which generate horrendous HTML (example: MS Word). They often leave signs behind (like empty tags, eg: ) which are generally found in spam. Make sure your HTML is valid (run it through a decent validator). Unbalanced tags and invalid tags will also flag an email as spam. If you use a title, make sure the title is meaningful – the default titles generated by HTML tools are often used as spamsign.

Tip: If you're using HTML emails, do not use invisible text within those emails. Make sure your text colors and sizes are distinct enough and large enough to read. Invisible text is often identified as a sign of spam.

Tip: If you're using HTML emails, do not use invisible web-bugs to track your emails. If you must track your emails and whether they're read, use visible graphics as part of your email, not invisible graphics.

Tip: If you're using HTML emails, include a text part in the email as well, for recipients (and anti-spam checkers), and keep that text as close to the HTML copy as possible. The closer they're related, the less likely your email will be seen as spam.

Very important: Don't insult your recipients by telling them to get a different email client so they can view your email. People use the email client they want, and if they're not using Outlook Express or some other basic, dumb, free, and automatically installed client, chances are they're doing so intentionally. If you want them to view your HTML, give them a web link they can follow in their web browser. (Give them this in addition to the non-HTML text.)

Tip: OK – one suggestion which actually does relate to SpamAssassin rules; don't include gratuitous references to spam subjects. Don't talk about rolex watches, sexually oriented activities or drugs, or debt treatment, unless those topics directly relate to your email. And if they do, limit your email to one topic at a time. An email which mentions rolex watches, Viagra, porn, and debt all in one email will very possibly hit several rules that flag it as spam, even if everything else is clear.

Tip: Don't use 'bulk-mailing' tools used by spammers (i.e., advertised in spam). These are overwhelmingly used to send spam, so SpamAssassin blocks mail sent by those tools as soon as possible. In particular, if the product's feature list includes 'stealth sending' or similar, that's a danger sign.

Tip: Be careful where you advertise, and be careful which advertisements you carry. If you advertise with companies that send out spam, your domains will be flagged as being related to spam. If you carry advertisements for those who spam, your domains will be flagged as being related to spam.

Tip: Be careful which domains/companies you allow to advertise in your emails (if any). Allowing spammers to advertise will get your emails flagged by the URI blacklists. On the other hand, don't advertise your domains with spammers – having your domain name listed in their spams can also get you flagged by some URI blacklists.

Tip: Be visible and public in your domain and hosting registrations. If people who check for you to see whether you might be a spammer, or to complain/ask about your emails, finds bogus entries in your registrations, or "private" or "hidden" annotations, that strongly suggests you are a spammer, hiding from an outraged public. If you are open about who you are in your registration emails, you'll get some complains and some queries. Answer those honestly and fully, and you should stay out of blacklists.

Make sure you have active and monitored abuse and postmaster addresses. Register them with abuse.net.

Tip: Make sure your privacy policy, including enforcement, and including query contact information, is easily found and clearly stated on your web site. It's good to include this information (where to find this policy, contact information), in your emails. Again, people who need to find out whether you're spammer will often look for that information.

Tip: Test your email with SpamAssassin. Send your draft to/through a system with SpamAssassin running, and see how it scores. If your email hits a number of high-scoring SA rules, then you can determine why and reduce your email's score.

Fixing False Positives Your email was flagged as a spam. These tips may help you figure out how to avoid this next time.

Tip: examine exactly which rules were triggered if a message was marked as spam or nearly marked as spam. Take careful note of the points listed beside each rule name – low-scoring rules do not make much of a difference, it's the ones with high scores that need to be avoided.

Tip: if there are hits in the body of your mail-out, try rephrasing those sentences. We find that spam often uses exactly the same phrases, over and over again, so we detect specific lines of text, and in most cases, synonyms are ignored.

Tip: if a subscriber reports that SpamAssassin is blocking mails they want, and they did not ask their ISP to set it up – get them to ask the ISP to take them off the filtering list! (Spam filters should not be installed on an account unless the person wants it there, in our opinion, since even nowadays some people don't get as much spam as others. As a result, we ask ISPs to let the users enable or disable the filter.)

Newsletter Aids

Your newsletter is confirmed opt-in / double opt-in, never spams, and you want to gain some negative scoring traits.

Tip: there are several whitelisting services which lower scores for sites using SpamAssassin network tests:

Return Path ( http://www.returnpath.net/ )

Return Path’s Sender Score Certified is an email accreditation program (or "whitelist") with strict standards for both infrastructure and practices. Return Path also operates the Sender Score Safelist, with somewhat different criteria. Given that, as a result, we can count on mails from these programs being non-spam, we're happy to give it "bonus points" and allow it through filters.

dnswl.org

DNSWL.org provides a Whitelist of known legitimate email servers to reduce the chances of false positives while spam filtering. Please report any spam that is given bonus points for either of these services to the respective service.

Other methods for receiving "bonus points":

HashCash ( http://hashcash.org/ )

See http://hashcash.org/faq and http://hashcash.org/draft-hashcash.txt. This is a technological solution, while Bonded Sender is an economic solution and Habeas is a legal solution. Hashcash may not be appropriate for large mailing lists, as it requires substantial computational power to send each email.

Other Resources

Where else can you look for guidance?

Some useful links:

Frugal Marketing: That's not Spam, That's My Newsletter! http://www.frugalmarketing.com/dtb/notspamnews.shtml

SpamCon Foundation: Best practices for marketers: http://www.spamcon.org/directories/best-practices.shtml

Bulk e-mail HOWTO: http://spam.abuse.net/marketerhelp/bulk-howto.shtml

---
Tags: wordpress, api, mailing, rest, spam
---


# Question
Title: Allow single site install to send from Multiple Domains using alterMailParams
We have a singe site Civi install and send mailing from 3 different domains using 1 of the addresses From Email Address Options, however the header information in the email is always the primary domain name. This is causing many emails to be marked as junk.

I have done some investigation and multi-site seems over kill as a resolution and I found some mention of using alterMailParams hook to control the sender. ref Is it possible to configure CiviMail to send from two different domains?

Has anybody implemented this and able to assist me.

# Answer
> 3 votes
Yes you should be able to alter the headers using alterMailParams() hook

```
function notify_civicrm_alterMailParams(&$params, $context) {
  $params['headers']['headervaraible'] = 'XXXXX';
}

```

# Answer
> 2 votes
JMA had two loosely related clients that were on the same server. See gist https://gist.github.com/JoeMurray/0d8663e9f034c0b5e23b123e75c9fa07 for the diff created about a year ago of the changes made to support this. I've obfuscated the client names but hopefully not mangled anything else. We didn't publish since this was a one-off, but maybe this will give you a starting place.

# Answer
> 0 votes
The first thing here is to disambiguate the "From Address", which unfortunately has two separate definitions

There is the 'envelope From' or 'smtp from' which is normally generated by CiviMail using the domain configured in Administer -\> Civimail -\> Mail Accounts. That "from" is not normally directly seen by the recipient, but is used for deliverability and bounce handling (and yes, can sometimes be seen by the recipient as well).

Then there is the 'header from' which is what the recipient sees and is less relevant in terms of deliverability (but still matters for different reasons), but also matters for optics and replies. That's the one you configure in the CiviMail From Addresses.

Until you specify what you're referring too, I'm concerned this issue will just generate confusion and misleading advice.

I think in your case, you want a system administrator to sort out the smtp-from issue and the deliverability. You should be able to put lots of different header-from addresses with different domains, but of course, it depends. Here's my more complicated long advice:

http://homeofficekernel.blogspot.com/2020/11/successful-mass-mailing.html

---
Tags: civimail, domain
---


title: wysiwyg missing on Campaign description

text:
# Question
Title: wysiwyg missing on Campaign description
Strangely, We have a wysiwyg for the campaigns goal field on New/Edit Campaign form but not description field. Is that intentional? Our users are not high tech and are not familiar with HTML tags. Is it an easy thing to enable on description field?

# Answer
You should have the wysiwyg on campaign description field after installing Convert textare to WYSIWYG extension

HTH

Pradeep
> 2 votes

---
Tags: civicampaign, wysiwyg
---


# Question
Title: How to merge two Memberships for the same contact?
For some reason I ignore, a few contacts - that have been merged by our client - have 2 identical memberships when they should only have one.

I want to merge these memberships but can't find if it's possible without accessing the DB.

I can search for memberships but then the 'action menu' provides no way to merge

Is this possible?

# Answer
> 3 votes
I can see only mysql or php script way to do that because of the complexity because it will need to

1. Update the line item reference i.e civicrm\_line\_item.entity\_id, incase the membership doesn't have payment best to delete to avoid duplicate mysql error.
2. Merge civicrm\_membership\_payment
3. Merge custom groups data
4. Merge membership logs

# Answer
> 3 votes
Our approach is to merge the duplicate contact that retains the contribution records, then apply a "transferred" status to make one membership dormant, then move the duplicate into the primary membership. This happens to us when a member renews using "Bob Jones" instead of "Robert Jones" and a duplicate record/membership is created. We then just add the membership term to the original and "orphan" the renewal membership by applying the "transferred" status.

---
Tags: civimember, duplicate-contacts
---


title: Validation on custom field

text:
# Question
Title: Validation on custom field
Have a custom field on Contact called as 'Employee ID #'. We want to restrict user/staff from submitting the form from adding more than 6 digits. How to add validation on custom field to accept up-to 6 digits only? i.e between 0 to 999999.

# Answer
> 5 votes
There are many ways you can achieve this

1. Implementing hook\_civicrm\_validateForm() hook via extension/module/plugin to add php code .

code:

```
function MYMODULE_civicrm_validateForm($formName, &$fields, &$files, &$form, &$errors) {
  // 12 is the custom field id
  // inspect on form to get the exact field name
  if (!empty($fields['custom_12'])) {
    preg_match("/^[0-9]{0,6}$/", $fields['custom_12'], $matches);
    if (empty($matches)) {
      $errors['custom_12'] = ts('Error message.');
    }
  }
}

```
2. Implementing hook\_civicrm\_buildForm() hook to add js via extension/module/plugin or from theme function

code:

```
function MYMODULE_civicrm_buildForm($formName, &$form) {
  // Replace the FORM_NAME with Form name
  if ($formName == 'FORM_NAME') {
    CRM_Core_Resources::singleton()->addScript(
      "CRM.$(function($) {
        // on custom field blur or change OR submit button hit
        // Check if the value in text is upto 6 digit using match()
        // display error using CRM.alert(ts('Error message'), ts('Error'));
      });"
    );
  }
}

```
3. You can add HTML5 pattern to do the validation. Civi provides attributes to be added into Custom field, however this is not visible through GUI, you can use mysql query or api3 or api4 explorer to add.

Mysql code:

```
-- Add attribute for custom field id 12
UPDATE civicrm_custom_field SET attributes = ' pattern="^[0-9]{0,6}$" ' WHERE id = 12;

```

API3:

API4:

# Answer
> 2 votes
You could make the field a dropdown list or autocomplete with a million option choices (ha ha! I'm joking. Partly - it *would* technically work...)

# Answer
> 2 votes
If this was Drupal and you were happy doing this via a Webform then webform\_validation might be your friend - and could potentially enforce 'unique' too if that mattered

---
Tags: custom-fields
---


title: Display preferences for Prefix

text:
# Question
Title: Display preferences for Prefix
On a CiviCRM 5.41 instance I can't even see the check box for individual prefix `civilité`. I've checked our extensions and I can't identify anything that could override the display, neither in the options list and nor in the Database.

Any idea?

# Answer
Inspired by this topic, I found that that the option was deactivated in

`Option List >> contact_edit_options`

Thank you SE :-)
> 1 votes

---
Tags: preferences
---


title: Mailing reports with AWS

text:
# Question
Title: Mailing reports with AWS
If you use AWS and try mailing a report to multiple emails it fails with:

> Mailing Error Failed to send data \[SMTP: Invalid response code received from SMTP server while sending email. This is often caused by a misconfiguration in Outbound Email settings. Please verify the settings at Administer CiviCRM \>\> Global Settings \>\> Outbound Email (SMTP). (code: 554, response: Transaction failed: Domain contains illegal character)\]

Under `Email Delivery`, it does not like the comma in the comma separated format that is supposed to be used for multiple email addresses.

# Answer
You can only put one email in the TO field but as many as you like in comma separated format in the CC field.

Not sure if there is configuration necessary in AWS to change this behavior but heads up for those on AWS.
> 0 votes

---
Tags: civireport, aws
---


# Question
Title: CKEditor5 on Drupal 9 is installed and accessible via the Display Preferences but when selected there is no tool bar in the editor
both Exensions are enabled (but in different locations)

CKEditor4

CKEditor5

Any suggestions?

# Answer
Needed to run `composer civicrm:publish` to sync over some assets to the web-accessible location.

It's not currently possible I think, but in a pure composer world, you would install everything using composer, and then the asset publisher would (should) kick in by itself.
> 2 votes

---
Tags: ckeditor, ckeditor5
---


title: migrate Civi data from Drupal to Joomla

text:
# Question
Title: migrate Civi data from Drupal to Joomla
I am getting ready to migrate a Drupal 7 site running CiviCRM 5.44 to a Joomla 3.10.4 site running CiviCRM 5.44 for Joomla.

Can someone point me to directions for doing this migration of Civi for Drupal to Civi for Joomla? I understand the best method is to make an SQL dump of the CiviCRM database tables, and then import that into the Joomla database.

thanks, JC

# Answer
Have a look at https://docs.civicrm.org/sysadmin/en/latest/misc/switching-cms/switch-cms/ It does not have Drupal to Joomla but the guides cover the steps that need to be done.

And once you figure it out, it would be great if you write a new guide to improve the documentation!
> 1 votes

---
Tags: drupal, joomla, migration
---


# Question
Title: How to display more than 100 event templates?
For contact or event search results, the list lenght (number of entries displaying) can be chosen/modified, but not for event templates.

Is there a way to adjust/change the default list lenght for event templates?

# Answer
The event template field in New/Update Event should display more than 100 options in the drop down, provided they need to be active to be listed.
> 2 votes

---
Tags: civievent
---


# Question
Title: What would cause: Error: Class 'HTMLPurifier_Config' not found in CRM_Utils_String::purifyHTML()?
After upgrading to CiviCRM 5.44.0 under Drupal 9.2.10 under Windows/IIS I got the following error when trying to view a report:

```
Error: Class 'HTMLPurifier_Config' not found in CRM_Utils_String::purifyHTML() (line 634 of E:\drupal_test\vendor\civicrm\civicrm-core\CRM\Utils\String.php)

```

in one CiviCRM instance. I have another instance on another machine where the error did not occur. The 'offending' instance is a test environment but I daren't upgrade the live environment until I have an answer to the problem.

# Answer
I got the error on `5.43.2`. A search for `HTMLPurifier_Config` in the code turns up nothing.

When updating CiviCRM via composer make sure to update dependencies as well with:

```
composer update civicrm/civicrm-core --with-dependencies

```

The HTMLPurifier will then be installed this way.
> 0 votes

# Answer
I experienced this problem today (Drupal 9.3, Civi 5.44). For me, it was because I had an extension (advimport) that was causing issues. Even using the latest version, which is supposed to work with Civi 5.44 and even with it uninstalled, it caused problems. I'm guessing there's some part of the Composer autoloader that doesn't like the presence of a `composer.json` that references HTMLPurifier. In fact, the earlier version of advimport doesn't have this issue.

To fix this, I rolled back to a pre-Civi 5.44 commit, ran `composer install`, then moved forward to the commit before advimport. Even checking out the commit with the latest advimport, without `composer install`, replicated the bug for me.

**UPDATE**: The problem returned for me, even after removing `advimport`. However, restarting Apache/PHP/Redis fixed it for me (I did all three at once, so not sure which one worked).
> 0 votes

---
Tags: upgrade, core, drupal-9, 5.44.0
---


# Question
Title: The system has data from both old+new conventions. Please use civicrm.settings.php to set civicrm.files explicitly
trying to debug some other issues post-upgrade i happened to find this warning in the log repeatedly:

```
[warning] The system has data from both old+new conventions. Please use civicrm.settings.php to set civicrm.files explicitly.

```

yes, this installation is running a while now and was upgraded several times, lately with some issues. but as long as i remember i've (actively) never used or changed anything else but civicrm.settings.php

so, **question:** what is this 'old convention'? is it a different place where settings had been put or a different format used? unfortunately there's nothing to find for this error (that's why i put it in the subject)

(fwiw - right now i'm on core 5.44 with wordpress 5.8.2, everything greenlight on the status page of civicrm except for 'Resource URLs: Make them portable' and 'MySQL Emoji Support')

thanks for pointers.

# Answer
You have files under both wp-content/uploads/civicrm/ and wp-content/plugins/files/civicrm (or somewhere other than uploads). Either remove one or set it in civicrm.setting.php with

```
$civicrm_paths['civicrm.files']['path'] = ...
$civicrm_paths['civicrm.files']['url'] = ...

```
> 0 votes

---
Tags: civicrm.settings.php, core, logs
---


# Question
Title: SMS: search v pre-built group (Queue overflow)
I know SMS infrastructure was built off of CiviMail but there is a key difference when building a recipient list from search.

* Email - schedule/send via CiviMail \> creates hidden group
* SMS - schedule/send \> puts contact's phone numbers in an array similar to "send email" to 50 or less option.

Issues:

# Answer
> 1 votes
For sending mass texts to any significant amount of contacts, use Mailings \> New Mass SMS. Create a group ahead of time.

---
Tags: sms
---


# Question
Title: Member Status Rules. Should be simple, but not for this newbie. CiviCRM 5.40.2 on D9
How would I set up Status Rules for what I assume are the simple membership conditions shown below? It seemed straightforward, but I've gotten myself totally confused. Using CiviCRM 5.40.2 on Drupal 9.

Here's what I'm trying to do:

* **New** starts on "start date" and member is "new" for 6 months
* **Current** starts on "start date" and continues until "end date." So both New and Current members are current
* **Grace** starts on "end date" and continues for 3 more months as a grace period; then the member's membership really ends
* **Expired** starts on the end date adjusted by the grace period, and remains expired thereafter

# Answer
It may help you to compare with https://dmaster.demo.civicrm.org/civicrm/admin/member/membershipStatus?reset=1 or one of the other demo sites.

This is the default settings and it could be you just need to set your New back to running off Member Since, not Start Date. And then also tweak the other dates as required.
> 3 votes

---
Tags: civimember, status, rules
---


# Question
Title: Any CiviCRM integrations with Zapier or IFTTT?
There was a forum thread some months back regarding integrations with external tools like Zapier and If This Then That (IFTTT), which automate tasks based on triggers between separate apps.

Has anyone worked on something in this regard? I don't have an immediate project in mind for this but I just got an email from IFTTT which reminded me of this thread and I was curious if anyone had taken it further as it seems like it could unlock a lot of potential.

# Answer
No progress been made on the Zapier integration. The customer in question thought it was nice for testing purposes and as a proof of contact but did not deem Zapiera good solution in the long run. So no funding.
> 3 votes

# Answer
We did some work on Zapier integration but it was only half completed. I believe it would provide a useful start for another developer to progress. Our partially built extension triggers the zap. Zapier integration only has 2 triggers as of now (create contact and update participant).
> 1 votes

---
Tags: developer, integration
---


# Question
Title: What is the cutoff for number of activity targets in the UI, and can it be changed?
Drupal 7, CiviCRM 5.39.1

When I edit an activity with a few contacts, I am given the opportunity to edit those contacts. Once the threshold of somewhere between 50-60 contacts is crossed, however, there is no longer the opportunity to edit the contacts on an activity.

What is driving the difference in behavior of the UI?

# Answer
50 is maximum number of Target contact that can be edited from UI.

More details on CRM-15472

But i think it can be changed by sending a small PR to core or implementing hook to make the field editable.
> 3 votes

---
Tags: activities, ui, edit
---


# Question
Title: Is there any plan to create a Squarespace integration for CiviCRM?
sorry if this info is already available elsewhere but couldn't find it on the CiviCRM website or on here. I'm really hoping to use Squarespace for my organisation's website to make it as simple as possible for other people to make changes without breaking things/making them hideous. I know there is no Squarespace integration at the moment, but am wondering if this is something that might be in the pipeline given their increasing market share. I'm aware that we can do a Wordpress site to sit alongside the public Squarespace site to handle the Civi integration, but I don't have confidence that I could do this myself and we currently have zero (0) funding, so wouldn't be able to pay a Civi partner to do it until well into the future. Thank you for all your incredible work from a long-time Civi fan.

# Answer
SquareSpace integration is not in any pipeline that I am aware of. The most common approach currently would be to set up civicrm on WP or Drupal as the admin access CMS. then use Remote Forms or other methods for embedding forms on external sites.

There are discussions that have reignited recently about civicrm working as a standalone crm which can be seen here
> 1 votes

---
Tags: integration
---


# Question
Title: Sharing household address with individual record no longer builds "member of household" relationship CiviCRM v5.17.0
We noticed after upgrading to CiviCRM v5.17.0 that when you create a new individual record, and add an address and have it shared with another Household record's address, the option to automatically build the "household member of" relationship no longer happens automatically like it used to.

We DID notice that if one shares the address with an ORGANIZATIONAL record, there is a toggle to set that organizational record as the employer, which then updates the "employer" field AND also builds the "employee of" relationship.

Is there any way to restore the automatic relationship linking with the household record when an address is shared with an individual record from a household record? Or at least generate a toggle button to create the relationship on save?

# Answer
> 2 votes
While this question is old - just indicating that this was added as a feature at some point. There's a checkbox to indicate you'd like to also add the household relationship if you choose to share an address from a household.

---
Tags: relationships, addresses, households
---


title: Activity Time Incorrect in Drupal Views

text:
# Question
Title: Activity Time Incorrect in Drupal Views
I just created a Drupal 7 Views report to show the date and time when the user created a case activity. The date is correct. However, I entered this activity at 11:09 am this morning, but Views show the time as 7:08pm. I produced the same report in SearchKit and the time there is correct. Is the problem related to Views? I double checked that the date timezone is correct in "Default site/user timezone".

Drupal, PHP, and MySQL timezones match. The activity\_created\_date table also lists the correct info: 2021-12-24 11:09. Not sure why Views is producing the time as 7:08 pm instead of 11:09 am.

My temporary fix right now is use Global:PHP and subtract 8 hours manually. Although this works, I can't expose this date field for filtering results.

```
<?php
$hoursToSubtract = 8;
$timeToSubtract = ($hoursToSubtract * 60 * 60);
$timeInPast = ($row->created_date - $timeToSubtract);
echo date("m/d/Y g:ia", $timeInPast);
?>

```

# Answer
> 0 votes
I have a bunch of views set up that report on civi activities. I recall having some issues with the created date and ended up swapping to the scheduled activity date. Which I know sounds counter-intuitive but it was more accurate for me (we do a lot of creating scheduled activities and then completing them later). It also allowed me to use just one date field even when showing both complete and scheduled activities!

---
Tags: civicase, activities, drupal-views
---


# Question
Title: Why is event registration "thank you" giving an error?
**setup:**
CiviCRM 5.44.0 with Wordpress 5.8.2 / PHP 7.4.27 (tested 8.0.14 as well fwiw)

**problem:**
since the latest upgrade the "thank you" page after event registration gives the error

```
Could not find valid value for id

```

registration is finished (confirmation mail is sent). there is no payment processor installed or used, all registrations need to choose "pay later".

**Log:**

```
Jan 03 00:23:34  [error]
$Fatal Error Details = array:3 [
  "message" => "Konnte keinen gültigen Wert für id finden."
  "code" => null
  "exception" => CRM_Core_Exception {#5193
    -errorData: array:1 [
      "error_code" => 0
    ]
    #cause: null
    -_trace: null
    #message: "Konnte keinen gültigen Wert für id finden."
    #code: 0
    #file: "/var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Utils/Request.php"
    #line: 98
    trace: {
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Utils/Request.php:98 {
        › if (!isset($value) && $abort) {
        ›   throw new CRM_Core_Exception(ts('Could not find valid value for %1', [1 => $name]));
        › }
      }
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Event/StateMachine/Registration.php:27 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Event/Controller/Registration.php:27 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:308 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:69 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:36 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm.php:1169 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/includes/civicrm.basepage.php:366 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/class-wp-hook.php:303 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/class-wp-hook.php:327 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/plugin.php:518 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/class-wp.php:763 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/functions.php:1291 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-blog-header.php:16 { …}
      /var/www/vhosts/mydomain.net/admin.mydomain.net/index.php:17 { …}
    }
  }
]

Jan 03 00:23:34  [debug] $backTrace = #0 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(433): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(39): CRM_Core_Error::handleUnhandledException(Object(CRM_Core_Exception))
#2 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm.php(1169): CRM_Core_Invoke::invoke((Array:3))
#3 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/includes/civicrm.basepage.php(366): CiviCRM_For_WordPress->invoke()
#4 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/class-wp-hook.php(303): CiviCRM_For_WordPress_Basepage->basepage_handler(Object(WP))
#5 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters("", (Array:1))
#6 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/plugin.php(518): WP_Hook->do_action((Array:1))
#7 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/class-wp.php(763): do_action_ref_array("wp", (Array:1))
#8 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-includes/functions.php(1291): WP->main("")
#9 /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-blog-header.php(16): wp()
#10 /var/www/vhosts/mydomain.net/admin.mydomain.net/index.php(17): require("/var/www/vhosts/mydomain.net/admin.mydomain.net/wp-blog-header.php")
#11 {main}

```

**what i tried:**
having found several Questions with similar issues yet and having tested solutions from there i think i can rule out any url-related/rewrite issues - URLs for Confirm and ThankYou are complete and the ID identical

```
/civicrm/?civiwp=CiviCRM&q=civicrm%2Fevent%2Fregister&_qf_Confirm_display=true&qfKey=CRMEventControllerRegistrationXXXXX

/civicrm/?civiwp=CiviCRM&q=civicrm%2Fevent%2Fregister&_qf_ThankYou_display=true&qfKey=CRMEventControllerRegistrationXXXXX

```

i think i can also rule out caching issues. i turned off cloudflare caching and switched back to apache (instead of nginx with caching. no caching plugins in wordpress installed.

also the base page is set correctly.

trying to get this solved for a couple of weeks now but am a bit lost.
thankful for any hints.

---

---

ruled out by @Demerit in comments:

**what baffles me:**
in the server's log i'm having a lot of errors related to 'open\_basedir restriction in effect' mocking about /CRM/Core/Smarty/plugins/ not being within the allowed paths. right after the error displayed when finishing a registration it's:

```
Got error 'PHP message: PHP Warning: file_exists(): open_basedir restriction in effect. File(/CRM/Core/Smarty/plugins/) is not within the allowed path(s): (/var/www/vhosts/mydomain.net/:/tmp/) in /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Smarty.php on line 108', referer: https://admin.mydomain.net/civicrm/?civiwp=CiviCRM&q=civicrm%2Fevent%2Fregister&_qf_Confirm_display=true&qfKey=CRMEventControllerRegistrationXXXXX

```

i already tried the obvious - adding the path to the allowed ones - but i'm not sure i did it right as i'm getting this afterwards

```
Got error 'PHP message: PHP Warning: file_exists(): open_basedir restriction in effect. File(/CRM/Core/Smarty/plugins/) is not within the allowed path(s): (/var/www/vhosts/mydomain.net/:/tmp/:/var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Smarty/plugins/) in /var/www/vhosts/mydomain.net/admin.mydomain.net/wp-content/plugins/civicrm/civicrm/CRM/Core/Smarty.php on line 108', referer: https://admin.mydomain.net/civicrm/?civiwp=CiviCRM&q=civicrm%2Fevent%2Fregister&_qf_Confirm_display=true&qfKey=CRMEventControllerRegistrationXXXXX

```

and somehow have doubts if this actually would help anything.

# Answer
just discovered that 'Clean URLS' weren't activated ie the code checking for it wasn't in my config as described here: https://docs.civicrm.org/sysadmin/en/latest/integration/wordpress/clean-urls/

so i had to add it manually and everything works fine now.
> 4 votes

---
Tags: wordpress, civievent
---


# Question
Title: CiviCRM Backend Speed, Wordpress Install
So general speed to access the CiviCRM Dashboard takes around 7-10 secs to load, and search function around the same speed, anything from 1 - 10 users on CiviCRM backend at any one time.

Database has around 6000 contacts, with about 200 with activities and the same with notes

CiviCRM Version 5.44.0
WordPress Version 5.8.2
PHP Version 7.4
Using Redis to cache CiviCRM

Server Specs
8 Core Processor
16GB DDR4 Memory

Edited the line to the following:
define('CIVICRM\_TEMPLATE\_COMPILE\_CHECK', FALSE);
Smart group cache timeout: 30mins

CiviCRM Optimisations

What else can be done to get speed down to 1-2 secs?

Cheers

Stuart

# Answer
> 1 votes
The only time I've had a site that slow after applying the optimizations you mention (Redis, etc), it was because of WP plugins.

There's a trick to disable WP plugins on AJAX requests I haven't tried myself, but I recommend setting up a test site where you disable all the WP plugins and see if that dramatically increases Civi speed. If so, then you can turn on a couple at a time and isolate it to 1-2 plugins.

---
Tags: wordpress
---