From 44df1fd9f7425489a6cd0f8db10f29b594f35b56 Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Tue, 30 Jun 2020 18:01:52 -0400 Subject: [PATCH] WP base page system check: use get_page_by_path() like CRM_Utils_System --- CRM/Utils/Check/Component/Cms.php | 79 +++++++++++++++++-------------- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/CRM/Utils/Check/Component/Cms.php b/CRM/Utils/Check/Component/Cms.php index 9b6869c132..578ba73f29 100644 --- a/CRM/Utils/Check/Component/Cms.php +++ b/CRM/Utils/Check/Component/Cms.php @@ -36,14 +36,8 @@ class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component { $messages = []; $slug = $config->wpBasePage; - $pageArgs = [ - 'name' => $slug, - 'post_type' => 'page', - 'post_status' => 'publish', - 'numberposts' => 1, - ]; - $basePage = get_posts($pageArgs); - if (!$basePage) { + $basePage = get_page_by_path($slug); + if (!$basePage || $basePage->post_status != 'publish') { $cmsSettings = CRM_Utils_System::url( 'civicrm/admin/setting', $query = ['reset' => 1], @@ -53,43 +47,56 @@ class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component { 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, - ] - ); + if ($basePage) { + $messageText = [ + ts( + 'CiviCRM relies upon a base page in WordPress, but it is not published.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $slug, + ] + ), + ]; } else { - $pageArgs['name'] = 'civicrm'; - $defaultBasePage = get_posts($pageArgs); - if ($defaultBasePage) { + $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( - 'The default is %1civicrm, which does exist on this site.', - [1 => $config->userFrameworkBaseURL] + '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( - 'The default is %1civicrm, but that does not exist on this site either.', - [1 => $config->userFrameworkBaseURL] + 'You can set the correct base page in the WordPress integration settings.', + [1 => $cmsSettings] ); } - $messageText[] = ts( - 'You can set the correct base page in the WordPress integration settings.', - [1 => $cmsSettings] - ); } $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, -- 2.25.1