+--------------------------------------------------------------------+
| CiviCRM version 4.6 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014 |
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
-*/
+ */
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2014
+ * @copyright CiviCRM LLC (c) 2004-2015
* $Id$
*
*/
}
/**
- * this is a very drupal specific function for now
+ * this is a very drupal specific function for now.
*/
public static function updateCategories() {
$config = CRM_Core_Config::singleton();
}
/**
- * Determine the post URL for a form
+ * Determine the post URL for a form.
*
* @param $action
* The default action if one is pre-specified.
* We typically call authenticate only when we need to bootstrap the CMS
* directly via Civi and hence bypass the normal CMS auth and bootstrap
* process typically done in CLI and cron scripts. See: CRM-12648
+ *
+ * Q: Can we move this to the userSystem class so that it can be tuned
+ * per-CMS? For example, when dealing with UnitTests UF, there's no
+ * userFrameworkDSN.
*/
$session = CRM_Core_Session::singleton();
$session->set('civicrmInitSession', TRUE);
- $dbDrupal = DB::connect($config->userFrameworkDSN);
+ if ($config->userFrameworkDSN) {
+ $dbDrupal = DB::connect($config->userFrameworkDSN);
+ }
return $config->userSystem->authenticate($name, $password, $loadCMSBootstrap, $realPath);
}
public static function redirectToSSL($abort = FALSE) {
$config = CRM_Core_Config::singleton();
$req_headers = self::getRequestHeaders();
+ // FIXME: Shouldn't the X-Forwarded-Proto check be part of CRM_Utils_System::isSSL()?
if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'enableSSL') &&
!self::isSSL() &&
strtolower(CRM_Utils_Array::value('X_FORWARDED_PROTO', $req_headers)) != 'https'
* @param array $params
* An array of parameters (see CRM_Utils_System::docURL2 method for names)
*
- * @return string|void
+ * @return void|string
* URL or link to documentation page, based on provided parameters.
*/
public static function docURL($params) {
if (!isset($params['page'])) {
- return;
+ return NULL;
}
if (CRM_Utils_Array::value('resource', $params) == 'wiki') {
}
/**
- * Get the locale set in the hosting CMS
+ * Get the locale set in the hosting CMS.
*
* @return string
* The used locale or null for none.
CRM_ACL_BAO_Cache::resetCache();
// reset various static arrays used here
- CRM_Contact_BAO_Contact::$_importableFields
- = CRM_Contact_BAO_Contact::$_exportableFields
+ CRM_Contact_BAO_Contact::$_importableFields = CRM_Contact_BAO_Contact::$_exportableFields
= CRM_Contribute_BAO_Contribution::$_importableFields
- = CRM_Contribute_BAO_Contribution::$_exportableFields
- = CRM_Pledge_BAO_Pledge::$_exportableFields
- = CRM_Contribute_BAO_Query::$_contributionFields
- = CRM_Core_BAO_CustomField::$_importFields
- = CRM_Core_BAO_Cache::$_cache
- = CRM_Core_DAO::$_dbColumnValueCache
- = NULL;
+ = CRM_Contribute_BAO_Contribution::$_exportableFields
+ = CRM_Pledge_BAO_Pledge::$_exportableFields = CRM_Contribute_BAO_Query::$_contributionFields
+ = CRM_Core_BAO_CustomField::$_importFields
+ = CRM_Core_BAO_Cache::$_cache = CRM_Core_DAO::$_dbColumnValueCache = NULL;
CRM_Core_OptionGroup::flushAll();
CRM_Utils_PseudoConstant::flushAll();
* @return string|FALSE
*/
public static function evalUrl($url) {
- if ($url === FALSE) {
- return FALSE;
+ if (!$url || strpos($url, '{') === FALSE) {
+ return $url;
}
else {
$config = CRM_Core_Config::singleton();
'{ver}' => CRM_Utils_System::version(),
'{uf}' => $config->userFramework,
'{php}' => phpversion(),
- '{sid}' => md5('sid_' . (defined('CIVICRM_SITE_KEY') ? CIVICRM_SITE_KEY : '') . '_' . $config->userFrameworkBaseURL),
+ '{sid}' => self::getSiteID(),
'{baseUrl}' => $config->userFrameworkBaseURL,
'{lang}' => $config->lcMessages,
'{co}' => $config->defaultContactCountry,
);
- foreach (array_keys($vars) as $k) {
- $vars[$k] = urlencode($vars[$k]);
- }
- return strtr($url, $vars);
+ return strtr($url, array_map('urlencode', $vars));
}
}
+ /**
+ * Returns the unique identifier for this site, as used by community messages.
+ *
+ * SiteID will be generated if it is not already stored in the settings table.
+ *
+ * @return string
+ */
+ public static function getSiteID() {
+ $sid = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'site_id');
+ if (!$sid) {
+ $config = CRM_Core_Config::singleton();
+ $sid = md5('sid_' . (defined('CIVICRM_SITE_KEY') ? CIVICRM_SITE_KEY : '') . '_' . $config->userFrameworkBaseURL);
+ civicrm_api3('Setting', 'create', array('domain_id' => 'all', 'site_id' => $sid));
+ }
+ return $sid;
+ }
/**
* Determine whether this is a developmental system.
}
/**
- * Determine the standard URL for viewing or editing the specified link
+ * Determine the standard URL for viewing or editing the specified link.
*
* This function delegates the decision-making to (a) the hook system and
* (b) the BAO system.
return NULL;
}
+
}