From 2586fbb0e7d51f30bceca75d78f5bd1f94eb0cce Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Thu, 25 Jun 2020 11:51:19 -0400 Subject: [PATCH] Add system check to ensure WP base page exists --- CRM/Utils/Check/Component/Cms.php | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 CRM/Utils/Check/Component/Cms.php diff --git a/CRM/Utils/Check/Component/Cms.php b/CRM/Utils/Check/Component/Cms.php new file mode 100644 index 0000000000..99cff8e16a --- /dev/null +++ b/CRM/Utils/Check/Component/Cms.php @@ -0,0 +1,100 @@ +userFramework != 'WordPress') { + return []; + } + $messages = []; + + $slug = $config->wpBasePage; + $pageArgs = [ + 'name' => $slug, + 'post_type' => 'page', + 'post_status' => 'publish', + 'numberposts' => 1, + ]; + $basePage = get_posts($pageArgs); + if (!$basePage) { + $cmsSettings = CRM_Utils_System::url( + 'civicrm/admin/setting', + $query = ['reset' => 1], + FALSE, + NULL, + TRUE, + FALSE, + TRUE + ); + $messageText = [ + ts( + 'CiviCRM relies upon a base page in WordPress at %1%2, but it is missing.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $slug, + ] + ), + ]; + if ($slug == 'civicrm') { + $messageText[] = ts( + 'If you have an alternative base page, it can be set in the WordPress integration settings.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $cmsSettings, + ] + ); + } + else { + $pageArgs['name'] = 'civicrm'; + $defaultBasePage = get_posts($pageArgs); + if ($defaultBasePage) { + $messageText[] = ts( + 'The default is %1civicrm, which does exist on this site.', + [1 => $config->userFrameworkBaseURL] + ); + } + else { + $messageText[] = ts( + 'The default is %1civicrm, but that does not exist on this site either.', + [1 => $config->userFrameworkBaseURL] + ); + } + $messageText[] = ts( + 'You can set the correct base page in the WordPress integration settings.', + [1 => $cmsSettings] + ); + } + $messages[] = new CRM_Utils_Check_Message( + __FUNCTION__, + implode(' ', $messageText), + ts('WordPress Base Page Missing'), + \Psr\Log\LogLevel::ERROR, + 'fa-wordpress' + ); + } + + return $messages; + } + +} -- 2.25.1