Spendenbescheinigungen im CivicCRM mit WordPress

Ein Fehler und Hinweis den ich mal mit teilen wollte mit allen ehrenamtlichen da draußen, die nicht in PHP fit sind, der im CivicCRM, einem OpenSource CRM speziell für gemeinnützige Organisationen bzw. Non-Profit Organisationen und Stiftungen auftritt. Leider ist das CRM trotz seines großen Potentials per default Installation noch nicht 100% reif für Deutschland. Besonders  Spendenbescheinigungen und Lastschrifteinzüge sind Sachen die noch fehlen. Doch erfreut sich das CRM einer fleißigen Gemeinschaft die Lösungen in Form von Extensions dafür bereitstellt.

Für die Spendenbescheinigungen gibt es eine tolle Erweiterung der Software für Engagierte e.V. die sowohl Einzel- wie auch Sammelspendenbescheinigungen leicht erstellen lässt die auch konform mit der deutschen Rechtsprechung sind. CivicCRM-Erweiterungen können unabhängig des benutzten CMS installiert werden.
Doch unter bestimmten Umständen erhält man bei der Installation der „Spendenbescheinigung-Erweiterung“ folgenden Error: PHP Fatal error: Cannot redeclare get_template() (previously declared in …/www/wp-includes/theme.php:285) in …/www/wp-content/plugins/files/civicrm/custom_ext/sfe.donationreceipts/backend.php on line 276

Bei welchen (System-)Umgebung tritt der Fehler auf?

CivicCRM lässt sich mit Drupal, Joomla und WordPress benutzen, wobei mit Drupal das maximale Potential des CivicCRMs genutzt werden kann. In diesem Fall wurde aber CivicCRM mit WordPress, da ich WordPress einfach angenehmer finde. Benutzt wurde WordPress 4.1 , aber getestet wurde auch mit vorherigen Versionen bis 3.8. Sonst sind hier PHP 5.3 und MySQL 5.1 im Einsatz. Die Fehlermeldung betrifft somit WordPress und CivicCRM in Kombination mit der Spendenbescheinigung-Extension, wobei hier auch mit den Versionen ….

Was bedeutet dieser Fehler?

Der Fehler sagt aus das die Funktion get_template() aus der backend.php Datei des Spendenbescheinigungsmoduls versucht wird aufzurufen, aber diese schon woanders deklariert wurde, nämlich von WordPress selber in der Datei theme.php.

Wie bringe ich es zum funktionieren?

Der einfachste Weg diesen Fehler zu beseitigen besteht darin einfach in der Datei backend.php (Pfad ist aus der Fehlermeldung zu entnehmen) die Funktion umzubenennen, da wo sie deklariert wird und wo sie aufgerufen wird. In diesem Fall klappt aber auch einfach „get_template“ überall zu ersetzen durch z.B. mit einem Suffix „get_templateSP“.

Hier wird die Funktion deklariert: get_template() -> get_templateSP()

[php firstline=“252″ highlight=“1″]
function get_templateSP()
{
$messageTemplateBAOClass = getMessageTemplateBAOClass();

$result = civicrm_api(
‚OptionGroup‘,
‚get‘,
array(
‚version‘ => 3,
’name‘ => OPTION_GROUP_NAME,
‚api.OptionValue.get‘ => array(    /* Chained API call, using option_group_id retrieved by outer call. */
’name‘ => ‚donationreceipt‘,
)
)
);
if (!$result[‚count‘])
CRM_Core_Error::fatal("Template ‚donationreceipt‘ nicht gefunden");

$workflow_id = $result[‚values‘][$result[‚id‘]][‚api.OptionValue.get‘][‚id‘];

$params = array(‚workflow_id‘ => $workflow_id);
$template = $messageTemplateBAOClass::retrieve($params, $_);

return array($template->msg_html, $template->pdf_format_id);
}
[/php]

und noch wo die Funktion aufgerufen wird

[php firstline=“478″ highlight=“1″]
list($html, $page_format) = get_templatere();
[/php]

PS: Die Änderung der Funktion in der theme.php Datei von WordPress empfiehlt sich nicht, da diese von anderen Erweiterungen etc. benutzt wird und so diese nicht mehr funktionieren würden.

Mit diesen wenigen Schritten sollte es dann auch laufen. Wenn nicht könnt ihr hier gerne Kommentieren und euch wir geholfen. Bald folgt auch eine Anleitung wie man CivicCRM installiert samt Erweiterungen!