<?php
/*
 +--------------------------------------------------------------------+
 | CiviCRM version 5                                                  |
 +--------------------------------------------------------------------+
 | Copyright CiviCRM LLC (c) 2004-2020                                |
 +--------------------------------------------------------------------+
 | This file is a part of CiviCRM.                                    |
 |                                                                    |
 | CiviCRM is free software; you can copy, modify, and distribute it  |
 | under the terms of the GNU Affero General Public License           |
 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
 |                                                                    |
 | CiviCRM is distributed in the hope that it will be useful, but     |
 | WITHOUT ANY WARRANTY; without even the implied warranty of         |
 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
 | See the GNU Affero General Public License for more details.        |
 |                                                                    |
 | You should have received a copy of the GNU Affero General Public   |
 | License and the CiviCRM Licensing Exception along                  |
 | with this program; if not, contact CiviCRM LLC                     |
 | at info[AT]civicrm[DOT]org. If you have questions about the        |
 | GNU Affero General Public License or the licensing of CiviCRM,     |
 | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
 +--------------------------------------------------------------------+
*/

/**
 * CiviCRM Configuration File.
 */
global $civicrm_root, $civicrm_setting, $civicrm_paths;


/**
 * Content Management System (CMS) Host:
 *
 * CiviCRM can be hosted in Backdrop, Drupal 7+, Joomla or WordPress.
 *
 * Settings for Backdrop CMS:
 *      define('CIVICRM_UF', 'Backdrop');
 *
 * Settings for Drupal 7:
 *      define('CIVICRM_UF', 'Drupal');
 *
 * Settings for Drupal 8+:
 *      define('CIVICRM_UF', 'Drupal8');
 *
 * Settings for Joomla:
 *      define('CIVICRM_UF', 'Joomla');
 *
 * Settings for WordPress:
 *      define('CIVICRM_UF', 'WordPress');
 *
 */
if (!defined('CIVICRM_UF')) {
  if (getenv('CIVICRM_UF')) {
    define('CIVICRM_UF', getenv('CIVICRM_UF'));
  }
  else {
    define('CIVICRM_UF', '%%cms%%');
  }
}

/**
 * Content Management System (CMS) Datasource:
 *
 * Update this setting with your CMS (Drupal, Backdrop CMS, or Joomla) database username, password, server and DB name.
 * If any of these contain a single quote or backslash, escape those characters with a backslash: \' and \\, respectively.
 *
 * Datasource (DSN) format:
 *      define('CIVICRM_UF_DSN', 'mysql://cms_db_username:cms_db_password@db_server/cms_database?new_link=true');
 */
if (!defined('CIVICRM_UF_DSN') && CIVICRM_UF !== 'UnitTests') {
  define('CIVICRM_UF_DSN', 'mysql://%%CMSdbUser%%:%%CMSdbPass%%@%%CMSdbHost%%/%%CMSdbName%%?new_link=true%%CMSdbSSL%%');
}

// %%extraSettings%%

/**
 * CiviCRM Database Settings
 *
 * Database URL (CIVICRM_DSN) for CiviCRM Data:
 * Database URL format:
 *      define('CIVICRM_DSN', 'mysql://crm_db_username:crm_db_password@db_server/crm_database?new_link=true');
 *
 * Your CMS and CiviCRM can share the same database, or can be installed into separate databases.
 * See https://docs.civicrm.org/installation/en/latest/general/requirements/#mysql-connection.
 *
 * See https://docs.civicrm.org/installation/en/latest/general/mysql_tls/#dsn-settings for how to append
 * ssl options to the Database URL.
 *
 * If your username, password, server or DB name contain a single quote or backslash, escape those characters
 * with a backslash: \' and \\, respectively.
 *
 */
if (!defined('CIVICRM_DSN')) {
  if (CIVICRM_UF === 'UnitTests') {
    if (isset($GLOBALS['_CV']['TEST_DB_DSN'])) {
      define('CIVICRM_DSN', $GLOBALS['_CV']['TEST_DB_DSN']);
    }
    else {
      throw new \Exception('$GLOBALS["_CV"]["TEST_DB_DSN"] is not set');
    }
  }
  else {
    define('CIVICRM_DSN', 'mysql://%%dbUser%%:%%dbPass%%@%%dbHost%%/%%dbName%%?new_link=true%%dbSSL%%');
  }
}

/**
 * CiviCRM DSN Mode
 * Used to determine if you want CiviCRM to automatically change the dsn to mysqli if its avaliable.
 * Uncomment and edit below as necessary
 */
// define ('DB_DSN_MODE', 'auto');

/**
 * CiviCRM Logging Database
 *
 * Used to point to a different database to use for logging (if desired). If unset defaults to equal CIVICRM_DSN.
 * The CIVICRM_DSN user needs to have the rights to modify the below database schema and be able to write to it.
 */
if (!defined('CIVICRM_LOGGING_DSN')) {
  define('CIVICRM_LOGGING_DSN', CIVICRM_DSN);
}

/**
 * File System Paths:
 *
 * $civicrm_root is the file system path on your server where the civicrm
 * code is installed. Use an ABSOLUTE path (not a RELATIVE path) for this setting.
 *
 * CIVICRM_TEMPLATE_COMPILEDIR is the file system path where compiled templates are stored.
 * These sub-directories and files are temporary caches and will be recreated automatically
 * if deleted.
 *
 * IMPORTANT: The COMPILEDIR directory must exist,
 * and your web server must have read/write access to these directories.
 *
 *
 * EXAMPLE - Drupal:
 * If the path to the Drupal home directory is /var/www/htdocs/drupal
 * the $civicrm_root setting would be:
 *      $civicrm_root = '/var/www/htdocs/drupal/sites/all/modules/civicrm/';
 *
 * the CIVICRM_TEMPLATE_COMPILEDIR would be:
 *      define('CIVICRM_TEMPLATE_COMPILEDIR', '/var/www/htdocs/drupal/sites/default/files/civicrm/templates_c/');
 *
 * EXAMPLE - Backdrop:
 * If the path to the Backdrop home directory is /var/www/htdocs/backdrop
 * the $civicrm_root setting would be:
 *      $civicrm_root = '/var/www/htdocs/backdrop/modules/civicrm/';
 *
 * the CIVICRM_TEMPLATE_COMPILEDIR would be:
 *      define('CIVICRM_TEMPLATE_COMPILEDIR', '/var/www/htdocs/backdrop/files/civicrm/templates_c/');
 *
 * EXAMPLE - Joomla:
 * If the path to the Joomla home directory is /var/www/htdocs/joomla
 * the $civicrm_root setting would be:
 *      $civicrm_root = '/var/www/htdocs/joomla/administrator/components/com_civicrm/civicrm/';
 *
 * the CIVICRM_TEMPLATE_COMPILEDIR would be:
 *      define('CIVICRM_TEMPLATE_COMPILEDIR', '/var/www/htdocs/joomla/media/civicrm/templates_c/');
 *
 * EXAMPLE - WordPress:
 * If the path to the WordPress home directory is /var/www/htdocs/wordpress and the path to the plugin directory is /var/www/htdocs/wordpress/wp-content/plugins
 * the $civicrm_root setting would be:
 *      $civicrm_root = '/var/www/htdocs/wordpress/wp-content/plugins/civicrm/civicrm/';
 *
 * the CIVICRM_TEMPLATE_COMPILEDIR would be:
 *      define('CIVICRM_TEMPLATE_COMPILEDIR', '/var/www/htdocs/wordpress/wp-content/uploads/civicrm/templates_c/');
 *
 */

$civicrm_root = '%%crmRoot%%';
if (!defined('CIVICRM_TEMPLATE_COMPILEDIR')) {
  define('CIVICRM_TEMPLATE_COMPILEDIR', '%%templateCompileDir%%');
}

/**
 * SMARTY Compile Check:
 *
 * This tells Smarty whether to check for recompiling or not. Recompiling
 * does not need to happen unless a template or config file is changed.
 * Typically you enable this during development, and disable for production.
 *
 * Related issue:
 * https://lab.civicrm.org/dev/core/issues/1073
 *
 */
//if (!defined('CIVICRM_TEMPLATE_COMPILE_CHECK')) {
//  define('CIVICRM_TEMPLATE_COMPILE_CHECK', FALSE);
//}

/**
 * Smarty escape on output.
 *
 * This does not currently work if you have a Smarty 3 path defined
 * (see above).
 *
 * This tells smarty to pass all variables through the escape function
 * unless they are marked with nofilter (eg. {$myScript nofilter}
 * At this stage it should only be enabled on development sites.
 * @see https://github.com/civicrm/civicrm-core/pull/21935
 */
//if (!defined('CIVICRM_SMARTY_DEFAULT_ESCAPE')) {
//  define('CIVICRM_SMARTY_DEFAULT_ESCAPE', TRUE);
//}

/**
 * Site URLs:
 *
 * This section defines absolute and relative URLs to access the host CMS resources.
 *
 * IMPORTANT: Trailing slashes should be used on all URL settings.
 *
 *
 * EXAMPLE - Drupal, Backdrop, WordPress:
 * If your site's home url is http://www.example.com/mysite/:
 *
 * The CIVICRM_UF_BASEURL would be:
 *      define('CIVICRM_UF_BASEURL', 'http://www.example.com/mysite/');
 *
 * EXAMPLE - Joomla:
 * If your site's home url is http://www.example.com/joomla/:
 *
 * CIVICRM_UF_BASEURL - home URL for your site:
 * Administration site:
 *      define('CIVICRM_UF_BASEURL', 'http://www.example.com/joomla/administrator/');
 * Front-end site:
 *      define('CIVICRM_UF_BASEURL', 'http://www.example.com/joomla/');
 *
 */
if (!defined('CIVICRM_UF_BASEURL')) {
  define('CIVICRM_UF_BASEURL', '%%baseURL%%');
}

/**
 * Specify a Smarty autoload file.
 *
 * Smarty5 is the version of Smarty we are in the process of adopting. To enable it
 * un-comment the line describing the path. Note that this will become always enabled in
 * the near future - this opt-in setting is transitional.
 */
if (!defined('CIVICRM_SMARTY_AUTOLOAD_PATH') && getenv('CIVICRM_SMARTY_AUTOLOAD_PATH') === FALSE) {
  // If not set we should default the Smarty version to Smarty5 which is our stable version.
  // This will not work for all composer-based installs @todo.
  if (is_dir($civicrm_root . '/packages')) {
    define('CIVICRM_SMARTY_AUTOLOAD_PATH', $civicrm_root . '/packages/smarty5/Smarty.php');
  }
  elseif (is_dir($civicrm_root . '/../civicrm-packages')) {
    define('CIVICRM_SMARTY_AUTOLOAD_PATH', $civicrm_root . '/../civicrm-packages/smarty5/Smarty.php');
  }
}

/**
 * Define any CiviCRM Settings Overrides per https://docs.civicrm.org/sysadmin/en/latest/customize/settings/
 *
 * Uncomment and edit the below as appropriate.
 */

 // Override the Temporary Files directory.
 // $civicrm_setting['domain']['uploadDir'] = '/path/to/upload-dir';

 // Override the custom files upload directory.
 // $civicrm_setting['domain']['customFileUploadDir'] = '/path/to/custom-dir';

 // Override the images directory.
 // $civicrm_setting['domain']['imageUploadDir'] = '/path/to/image-upload-dir';

 // Override the custom templates directory.
 // $civicrm_setting['domain']['customTemplateDir'] = '/path/to/template-dir';

 // Override the Custom php path directory.
 // $civicrm_setting['domain']['customPHPPathDir'] = '/path/to/custom-php-dir';

 // Override the extensions directory.
 // $civicrm_setting['domain']['extensionsDir'] = '/path/to/extensions-dir';

 // Override the resource url
 // $civicrm_setting['domain']['userFrameworkResourceURL'] = 'http://example.com/example-resource-url/';

 // Override the Image Upload URL (System Settings > Resource URLs)
 // $civicrm_setting['domain']['imageUploadURL'] = 'http://example.com/example-image-upload-url';

 // Override the Custom CiviCRM CSS URL
 // $civicrm_setting['domain']['customCSSURL'] = 'http://example.com/example-css-url';

 // Override the extensions resource URL
 // $civicrm_setting['domain']['extensionsURL'] = 'http://example.com/pathtoextensiondir';

 // Disable display of Community Messages on home dashboard
 // $civicrm_setting['domain']['communityMessagesUrl'] = false;

 // Disable automatic download / installation of extensions
 // $civicrm_setting['domain']['ext_repo_url'] = false;

 // set triggers to be managed offline per CRM-18212
 // $civicrm_setting['domain']['logging_no_trigger_permission'] = 1;

 // Override the CMS root path defined by cmsRootPath.
 // define('CIVICRM_CMSDIR', '/path/to/install/root/');

 // Opt-out of announcements by the CiviCRM core team for releases, paid services, events, etc. Separate each preferred optout category with a comma:
 //   "offers": paid service offers
 //   "asks": requests for donations or membership signup/renewal to CiviCRM
 //   "releases": major release announcements
 //   "events": announcements of local/national upcoming events
 // $civicrm_setting['domain']['communityMessagesUrl'] = 'https://alert.civicrm.org/alert?prot=1&ver={ver}&uf={uf}&sid={sid}&lang={lang}&co={co}&optout=offers,asks';

/**
 * Set a 16-32 bit alphanumeric/punctuation key.
 * More info at https://docs.civicrm.org/sysadmin/en/latest/setup/site-key/
 */
if (!defined('CIVICRM_SITE_KEY')) {
  define('CIVICRM_SITE_KEY', '%%siteKey%%');
}

/**
 * If credentials are stored in the database, the CIVICRM_CRED_KEYS will be
 * used to encrypt+decrypt them. This is a space-delimited list of keys (ordered by
 * priority). Put the preferred key first. Any old/deprecated keys may be
 * listed after.
 *
 * Each key is in format "<cipher-suite>:<key-encoding>:<key-content>", as in:
 *
 * Ex: define('CIVICRM_CRED_KEYS', 'aes-cbc:hkdf-sha256:RANDOM_1')
 * Ex: define('CIVICRM_CRED_KEYS', 'aes-ctr-hs:b64:RANDOM_2 aes-ctr-hs:b64:RANDOM_3')
 * Ex: define('CIVICRM_CRED_KEYS', '::MY_NEW_KEY ::MY_OLD_KEY')
 *
 * If cipher-suite or key-encoding is blank, they will use defaults ("aes-cbc"
 * and "hkdf-sha256", respectively).
 *
 * More info at https://docs.civicrm.org/sysadmin/en/latest/setup/cred-key/
 */
if (!defined('CIVICRM_CRED_KEYS')) {
  define('_CIVICRM_CRED_KEYS', '%%credKeys%%');
  define('CIVICRM_CRED_KEYS', _CIVICRM_CRED_KEYS === '%%' . 'credKeys' . '%%' ? '' : _CIVICRM_CRED_KEYS);
  // Some old installers may not set a decent value, and this extra complexity is a failsafe.
  // Feel free to simplify post-install.
}
if (!defined('CIVICRM_DEPLOY_ID')) {
  define('_CIVICRM_DEPLOY_ID', '%%deployID%%');
  define('CIVICRM_DEPLOY_ID', _CIVICRM_DEPLOY_ID === '%%' . 'deployID' . '%%' ? '' : _CIVICRM_DEPLOY_ID);
  // Some old installers may not set a decent value, and this extra complexity is a failsafe.
  // Feel free to simplify post-install.
}

/**
 * The signing key is used to generate and verify shareable tokens.
 *
 * This is a space-delimited list of keys (ordered by priority). Put the preferred
 * key first. Any old/deprecated keys may be listed after.
 *
 * Each key is in format "<cipher-suite>:<key-encoding>:<key-content>", as in:
 *
 * Ex: define('CIVICRM_SIGN_KEYS', 'jwt-hs256:hkdf-sha256:RANDOM_1')
 * Ex: define('CIVICRM_SIGN_KEYS', 'jwt-hs256::RANDOM_2 jwt-hs256::RANDOM_3')
 * Ex: define('CIVICRM_SIGN_KEYS', 'jwt-hs256:b64:RANDOM_4 jwt-hs256:b64:RANDOM_5')
 *
 * If key-encoding is blank, it will default to "hkdf-sha256".
 */
if (!defined('CIVICRM_SIGN_KEYS')) {
  define('_CIVICRM_SIGN_KEYS', '%%signKeys%%');
  define('CIVICRM_SIGN_KEYS', _CIVICRM_SIGN_KEYS === '%%' . 'signKeys' . '%%' ? '' : _CIVICRM_SIGN_KEYS);
  // Some old installers may not set a decent value, and this extra complexity is a failsafe.
  // Feel free to simplify post-install.
}

/**
 * Enable this constant, if you want to send your email through the smarty
 * templating engine(allows you to do conditional and more complex logic)
 *
 */
if (!defined('CIVICRM_MAIL_SMARTY')) {
  define('CIVICRM_MAIL_SMARTY', 0);
}

/**
 * This setting logs all emails to a file. Useful for debugging any mail (or civimail) issues.
 * Enabling this setting will not send any email, ensure this is commented out in production
 * The CIVICRM_MAIL_LOG is a debug option which disables MTA (mail transport agent) interaction.
 * You must disable CIVICRM_MAIL_LOG before CiviCRM will talk to your MTA.
 */
// if (!defined('CIVICRM_MAIL_LOG')) {
// define('CIVICRM_MAIL_LOG', '%%templateCompileDir%%/mail.log');
// }

/**
 * If needed to modify the file nad directory permissions for any LogFiles / directories created by Pear/log package
 */
// if (!defined('CIVICRM_LOG_FILE_PERMISSIONS')) {
//   define('CIVICRM_LOG_FILE_PERMISSIONS', '0664');
// }
// if (!defined('CIVICRM_LOG_FILE_DIR_PERMISSIONS')) {
//   define('CIVICRM_LOG_FILE_DIR_PERMISSIONS', '775');
// }

/**
 * This setting will only work if CIVICRM_MAIL_LOG is defined.  Mail will be logged and then sent.
 */
//if (!defined('CIVICRM_MAIL_LOG_AND_SEND')) {
//  define('CIVICRM_MAIL_LOG_AND_SEND', 1);
//}

if (!defined('CIVICRM_DOMAIN_ID')) {
  define('CIVICRM_DOMAIN_ID', 1);
}

/**
 * Setting to define the environment in which this CiviCRM instance is running.
 * Note the setting here must be value from the option group 'Environment',
 * (see Administration > System Settings > Option Groups, Options beside Environment)
 * which by default has three option values: 'Production', 'Staging', 'Development'.
 * NB: defining a value for environment here prevents it from being set
 * via the browser.
 */
// $civicrm_setting['domain']['environment'] = 'Production';

/**
 * Settings to enable external caching using a cache server.  This is an
 * advanced feature, and you should read and understand the documentation
 * before you turn it on. We cannot store these settings in the DB since the
 * config could potentially also be cached and we need to avoid an infinite
 * recursion scenario.
 *
 * @see http://civicrm.org/node/126
 */

/**
 * If you have a cache server configured and want CiviCRM to make use of it,
 * set the following constant.  You should only set this once you have your cache
 * server up and working, because CiviCRM will not start up if your server is
 * unavailable on the host and port that you specify. By default CiviCRM will use
 * an in-memory array cache.
 *
 * To use the php extension memcache  use a value of 'Memcache'
 * To use the php extension memcached use a value of 'Memcached'
 * To use the php extension apc       use a value of 'APCcache'
 * To use the php extension redis     use a value of 'Redis'
 * To not use any caching (not recommended), use a value of 'NoCache'
 *
 */
if (!defined('CIVICRM_DB_CACHE_CLASS')) {
  define('CIVICRM_DB_CACHE_CLASS', 'ArrayCache');
}

/**
 * Change this to the IP address of your cache server if it is not on the
 * same machine (Unix).
 */
if (!defined('CIVICRM_DB_CACHE_HOST')) {
  define('CIVICRM_DB_CACHE_HOST', 'localhost');
}

/**
 * Change this if you are not using the standard port for your cache server.
 *
 * The standard port for Memcache & APCCache is 11211. For Redis it is 6379.
 */
if (!defined('CIVICRM_DB_CACHE_PORT')) {
  if (CIVICRM_DB_CACHE_CLASS === 'Redis') {
    define('CIVICRM_DB_CACHE_PORT', 6379);
  }
  else {
    define('CIVICRM_DB_CACHE_PORT', 11211);
  }
}

/**
 * Change this if your cache server requires a password (currently only works
 * with Redis)
 */
if (!defined('CIVICRM_DB_CACHE_PASSWORD')) {
  define('CIVICRM_DB_CACHE_PASSWORD', '');
}

/**
 * Items in cache will expire after the number of seconds specified here.
 * Default value is 3600 (i.e., after an hour)
 */
if (!defined('CIVICRM_DB_CACHE_TIMEOUT')) {
  define('CIVICRM_DB_CACHE_TIMEOUT', 3600);
}

/**
 * If you are sharing the same cache instance with more than one CiviCRM
 * database, you will need to set a different value for the following argument
 * so that each copy of CiviCRM will not interfere with other copies.  If you only
 * have one copy of CiviCRM, you may leave this set to ''.  A good value for
 * this if you have two servers might be 'server1_' for the first server, and
 * 'server2_' for the second server.
 */
if (!defined('CIVICRM_DB_CACHE_PREFIX')) {
  define('CIVICRM_DB_CACHE_PREFIX', '');
}

/**
 * The cache system traditionally allowed a wide range of cache-keys, but some
 * cache-keys are prohibited by PSR-16.
 */
if (!defined('CIVICRM_PSR16_STRICT')) {
  define('CIVICRM_PSR16_STRICT', FALSE);
}

/**
 * If you have a multilingual site and you are using the "inherit CMS language"
 * configuration option, but wish to, for example, use fr_CA instead of the
 * default fr_FR (for French), set one or more of the constants below to an
 * appropriate regional value.
 *
 * Note that since 5.26.0 specifically https://github.com/civicrm/civicrm-core/pull/16700
 * This generally doesn't get used by WordPress especially if using the Polylang plugin.
 * The reason is that the WordPress implementation has been changed to get the full locale
 * from the WordPress plugin rather than just the 2 string language code.
 */
// define('CIVICRM_LANGUAGE_MAPPING_FR', 'fr_CA');
// define('CIVICRM_LANGUAGE_MAPPING_EN', 'en_CA');
// define('CIVICRM_LANGUAGE_MAPPING_ES', 'es_MX');
// define('CIVICRM_LANGUAGE_MAPPING_PT', 'pt_BR');
// define('CIVICRM_LANGUAGE_MAPPING_ZH', 'zh_TW');
// define('CIVICRM_LANGUAGE_MAPPING_NL', 'nl_BE');

/**
 * Native gettext improves performance of localized CiviCRM installations
 * significantly. However, your host must enable the locale (language).
 * On most GNU/Linux, Unix or MacOSX systems, you may view them with
 * the command line by typing: "locale -a".
 *
 * On Debian or Ubuntu, you may reconfigure locales with:
 * # dpkg-reconfigure locales
 *
 * For more information:
 * https://lab.civicrm.org/dev/translation/-/wikis/Administrator-Guide#native-gettext
 */
// if (!defined('CIVICRM_GETTEXT_NATIVE')) {
// define('CIVICRM_GETTEXT_NATIVE', 1);
// }

/**
 * Define how many times to retry a transaction when the DB hits a deadlock
 * (ie. the database is locked by another transaction). This is an
 * advanced setting intended for high-traffic databases & experienced developers/admins.
 */
define('CIVICRM_DEADLOCK_RETRIES', 3);

if (CIVICRM_UF === 'UnitTests') {
  if (!defined('CIVICRM_CONTAINER_CACHE')) define('CIVICRM_CONTAINER_CACHE', 'auto');
}

/**
 * Whether to include the hash in config log filenames. Defaults to TRUE.
 * Disable only if you have configured the logfiles to be outside the docroot
 * using the civicrm.log path setting.
 *
 */
// if (!defined('CIVICRM_LOG_HASH'))  {
//   define('CIVICRM_LOG_HASH', FALSE);
// }

/**
 * The maximum size a log file may be before it's rotated, in bytes.
 * Set to 0 to disable rotation (only recommended if you have an
 * external logrotate configuration).
 */
// if (!defined('CIVICRM_LOG_ROTATESIZE')) {
//   define('CIVICRM_LOG_ROTATESIZE', 0);
// }

/**
 * Which directories should we exclude when scanning the codebase for things
 * like extension .info files, or .html partials or .xml files etc. This needs
 * to be a valid preg_match() pattern.
 *
 * If you do not define it, a pattern that excludes dirs starting with a dot is
 * used, e.g. to exclude .git/). Adding suitable patterns here can vastly speed
 * up your container rebuilds and cache flushes. The pattern is matched against
 * the absolute path. Remember to use your system's DIRECTORY_SEPARATOR the
 * examples below assume /
 *
 * The default excludes node_modules (can be huge), various CiviCRM dirs that
 * are unlikely to have anything we need to scan inside, and (what could be
 * your) Drupal's private file storage area. It does not exclude
 * vendor but you are likely to see an improvement by adding it.
 *
 * See https://docs.civicrm.org/sysadmin/en/latest/setup/optimizations/#exclude-dirs-that-do-not-need-to-be-scanned
 * and also discussion on including vendor (excluded) in https://lab.civicrm.org/dev/core/-/issues/2031
 */
if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' && !defined('CIVICRM_EXCLUDE_DIRS_PATTERN')) {
  define('CIVICRM_EXCLUDE_DIRS_PATTERN', '@/(\.|node_modules|js/|css/|bower_components|packages/|sites/default/files/private)@');
}

/**
 *
 * Do not change anything below this line. Keep as is
 *
 */

$include_path = '.'           . PATH_SEPARATOR .
                $civicrm_root . PATH_SEPARATOR .
                $civicrm_root . DIRECTORY_SEPARATOR . 'packages' . PATH_SEPARATOR .
                get_include_path();
if (set_include_path($include_path) === false) {
   echo "Could not set the include path<p>";
   exit();
}

if (!defined('CIVICRM_CLEANURL')) {
  if (function_exists('variable_get') && variable_get('clean_url', '0') != '0') {
    define('CIVICRM_CLEANURL', 1);
  }
  elseif (function_exists('config_get') && config_get('system.core', 'clean_url') != 0) {
    define('CIVICRM_CLEANURL', 1);
  }
  elseif (function_exists('get_option') && get_option('permalink_structure') != '') {
    define('CIVICRM_CLEANURL', 1);
  }
  else {
    define('CIVICRM_CLEANURL', 0);
  }
}

/**
 * Make sure the memory_limit is at least 128 MB.
 */
$memLimitString = trim(ini_get('memory_limit'));
$memLimitUnit   = strtolower(substr($memLimitString, -1));
$memLimit       = (int) $memLimitString;
switch ($memLimitUnit) {
    case 'g': $memLimit *= 1024;
    case 'm': $memLimit *= 1024;
    case 'k': $memLimit *= 1024;
}
if ($memLimit >= 0 and $memLimit < 134217728) {
    ini_set('memory_limit', '128M');
}

require_once 'CRM/Core/ClassLoader.php';
CRM_Core_ClassLoader::singleton()->register();
