CRM 16421 CRM 17633 - update CRM_Utils_System_WordPress to allow for common install configurations
CRM-16421 - Convert constants to `$civicrm_paths`
Following up on the discussion from
[#10513](https://github.com/civicrm/civicrm-core/pull/10513), this converts
the proposed constants `CIVICRM_UF_WP_BASEURL` and `CIVICRM_UF_ADMINURL` to
variables in the `Paths` system.
A few benefits:
* Reduces code duplication between `civicrm.php` and `WordPress.php`.
* Can construct sub-paths with prettier notation (`Civi::paths()->getUrl('[wp.frontend]/foo.txt')`)
* Has options to output relative or absolute URLs
* Can expand on `Paths` to provide more inspection/validation
Notes:
* `CIVICRM_UF_WP_BASEURL` => `wp.frontend.base`
* `CIVICRM_UF_ADMINURL` => `wp.backend.base`
----------------------------------------
* CRM-16421: Work to get CiviCRM for WordPress in WordPress' official Repository
https://issues.civicrm.org/jira/browse/CRM-16421
CRM-16421 - Assimilate `civicrm.settings.extra.php` into `civicrm.settings.php`
----------------------------------------
* CRM-16421: Work to get CiviCRM for WordPress in WordPress' official Repository
https://issues.civicrm.org/jira/browse/CRM-16421
CRM-17633 merge current master changes to civicrm.settings.php.template
}
/**
+ * 27-09-2016
+ * CRM-16421 CRM-17633 WIP Changes to support WP in it's own directory
+ * https://wiki.civicrm.org/confluence/display/CRM/WordPress+installed+in+its+own+directory+issues
+ * For now leave hard coded wp-admin references.
+ * TODO: remove wp-admin references and replace with admin_url() in the future. Look at best way to get path to admin_url
+ *
* @param $absolute
* @param $frontend
* @param $forceBackend
*/
private function getBaseUrl($absolute, $frontend, $forceBackend) {
$config = CRM_Core_Config::singleton();
-
- $base = $absolute ? $config->userFrameworkBaseURL : $config->useFrameworkRelativeBase;
-
if ((is_admin() && !$frontend) || $forceBackend) {
- $base .= 'wp-admin/admin.php';
- return $base;
+ return Civi::paths()->getUrl('[wp.backend]/.', $absolute ? 'absolute' : 'relative');
}
- elseif (defined('CIVICRM_UF_WP_BASEPAGE')) {
- $base .= CIVICRM_UF_WP_BASEPAGE;
- return $base;
- }
- elseif (isset($config->wpBasePage)) {
- $base .= $config->wpBasePage;
- return $base;
+ else {
+ return Civi::paths()->getUrl('[wp.frontend]/.', $absolute ? 'absolute' : 'relative');
}
- return $base;
}
/**
* Class constructor.
*/
public function __construct() {
+ $paths = $this;
$this
->register('civicrm.root', function () {
return \CRM_Core_Config::singleton()->userSystem->getCiviSourceStorage();
->register('civicrm.files', function () {
return \CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage();
})
+ ->register('wp.frontend.base', function () {
+ return array('url' => CIVICRM_UF_BASEURL);
+ })
+ ->register('wp.frontend', function () use ($paths) {
+ $config = \CRM_Core_Config::singleton();
+ $suffix = defined('CIVICRM_UF_WP_BASEPAGE') ? CIVICRM_UF_WP_BASEPAGE : $config->wpBasePage;
+ return array(
+ 'url' => $paths->getVariable('wp.frontend.base', 'url') . $suffix,
+ );
+ })
+ ->register('wp.backend.base', function () {
+ return array('url' => CIVICRM_UF_BASEURL . 'wp-admin/');
+ })
+ ->register('wp.backend', function () use ($paths) {
+ return array(
+ 'url' => $paths->getVariable('wp.backend.base', 'url') . 'admin.php',
+ );
+ })
->register('cms', function () {
return array(
'path' => \CRM_Core_Config::singleton()->userSystem->cmsRootPath(),
if ($installType == 'drupal') {
$siteDir = isset($config['site_dir']) ? $config['site_dir'] : getSiteDir($cmsPath, $_SERVER['SCRIPT_FILENAME']);
- civicrm_setup($cmsPath . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR .
- $siteDir . DIRECTORY_SEPARATOR . 'files'
+ civicrm_setup($cmsPath . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . $siteDir . DIRECTORY_SEPARATOR . 'files'
);
}
elseif ($installType == 'backdrop') {
civicrm_write_file($configFile,
$string
);
-
}
/**
global $compileDir;
global $tplPath, $installType;
+ // Ex: $extraSettings[] = '$civicrm_settings["domain"]["foo"] = "bar";';
+ $extraSettings = array();
+
$params = array(
'crmRoot' => $crmPath,
'templateCompileDir' => $compileDir,
// CRM-12386
$params['crmRoot'] = addslashes($params['crmRoot']);
+ //CRM-16421
+
+ $extraSettings[] = sprintf('$civicrm_paths[\'wp.frontend.base\'][\'url\'] = %s;', var_export(home_url() . '/', 1));
+ $extraSettings[] = sprintf('$civicrm_paths[\'wp.backend.base\'][\'url\'] = %s;', var_export(admin_url(), 1));
+ $extraSettings[] = sprintf('$civicrm_setting[\'URL Preferences\'][\'userFrameworkResourceURL\'] = %s;', var_export(plugin_dir_url(CIVICRM_PLUGIN_FILE) . 'civicrm', 1));
+ }
+
+ if ($extraSettings) {
+ $params['extraSettings'] = "Additional settings generated by installer:\n" . implode("\n", $extraSettings);
+ }
+ else {
+ $params['extraSettings'] = "";
}
$params['siteKey'] = md5(rand() . mt_rand() . rand() . uniqid('', TRUE) . $params['baseURL']);
/**
* CiviCRM Configuration File.
*/
-global $civicrm_setting;
+global $civicrm_root, $civicrm_setting, $civicrm_paths;
/**
* Content Management System (CMS) Host:
define( 'CIVICRM_UF_DSN' , 'mysql://%%CMSdbUser%%:%%CMSdbPass%%@%%CMSdbHost%%/%%CMSdbName%%?new_link=true');
}
+// %%extraSettings%%
+
/**
* CiviCRM Database Settings
*