fatal('You need to define CIVICRM_DSN in civicrm.settings.php'); } $this->dsn = defined('CIVICRM_DSN') ? CIVICRM_DSN : NULL; if (!defined('CIVICRM_UF')) { $this->fatal('You need to define CIVICRM_UF in civicrm.settings.php'); } $this->userFramework = CIVICRM_UF; $this->userFrameworkClass = 'CRM_Utils_System_' . CIVICRM_UF; $this->userHookClass = 'CRM_Utils_Hook_' . CIVICRM_UF; if (CIVICRM_UF == 'Joomla') { $this->userFrameworkURLVar = 'task'; } if (defined('CIVICRM_UF_DSN')) { $this->userFrameworkDSN = CIVICRM_UF_DSN; } // this is dynamically figured out in the civicrm.settings.php file if (defined('CIVICRM_CLEANURL')) { $this->cleanURL = CIVICRM_CLEANURL; } else { $this->cleanURL = 0; } $this->templateDir = [dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR]; $this->initialized = 1; } /** * Exit processing after a fatal event, outputting the message. * * @param string $message */ private function fatal($message) { echo $message; exit(); } /** * Include custom PHP and template paths */ public function includeCustomPath() { $customProprtyName = ['customPHPPathDir', 'customTemplateDir']; foreach ($customProprtyName as $property) { $value = $this->getSettings()->get($property); if (!empty($value)) { $customPath = Civi::paths()->getPath($value); set_include_path($customPath . PATH_SEPARATOR . get_include_path()); } } } /** * Create a unique identification code for this runtime. * * If two requests involve a different hostname, different * port, different DSN, etc., then they should also have a * different runtime ID. * * @return mixed */ public static function getId() { if (!isset(Civi::$statics[__CLASS__]['id'])) { Civi::$statics[__CLASS__]['id'] = md5(implode(\CRM_Core_DAO::VALUE_SEPARATOR, [ // e.g. one database, multi URL defined('CIVICRM_DOMAIN_ID') ? CIVICRM_DOMAIN_ID : 1, // e.g. one codebase, multi database parse_url(CIVICRM_DSN, PHP_URL_PATH), // e.g. CMS vs extern vs installer \CRM_Utils_Array::value('SCRIPT_FILENAME', $_SERVER, ''), // e.g. name-based vhosts \CRM_Utils_Array::value('HTTP_HOST', $_SERVER, ''), // e.g. port-based vhosts \CRM_Utils_Array::value('SERVER_PORT', $_SERVER, ''), // Depending on deployment arch, these signals *could* be redundant, but who cares? ])); } return Civi::$statics[__CLASS__]['id']; } }