id = CRM_Core_Config::domainID(); if (!$domain->find(TRUE)) { CRM_Core_Error::fatal(); } } return $domain; } /** * @param bool $skipUsingCache * * @return null|string */ public static function version($skipUsingCache = FALSE) { return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'version', 'id', $skipUsingCache ); } /** * Get the location values of a domain. * * @return array * Location::getValues */ public function &getLocationValues() { if ($this->_location == NULL) { $domain = self::getDomain(NULL); $params = array( 'contact_id' => $domain->contact_id, ); $this->_location = CRM_Core_BAO_Location::getValues($params, TRUE); if (empty($this->_location)) { $this->_location = NULL; } } return $this->_location; } /** * Save the values of a domain. * * @param array $params * @param int $id * * @return array * domain */ public static function edit(&$params, &$id) { $domain = new CRM_Core_DAO_Domain(); $domain->id = $id; $domain->copyValues($params); $domain->save(); return $domain; } /** * Create a new domain. * * @param array $params * * @return array * domain */ public static function create($params) { $domain = new CRM_Core_DAO_Domain(); $domain->copyValues($params); $domain->save(); return $domain; } /** * @return bool */ public static function multipleDomains() { $session = CRM_Core_Session::singleton(); $numberDomains = $session->get('numberDomains'); if (!$numberDomains) { $query = "SELECT count(*) from civicrm_domain"; $numberDomains = CRM_Core_DAO::singleValueQuery($query); $session->set('numberDomains', $numberDomains); } return $numberDomains > 1 ? TRUE : FALSE; } /** * @param bool $skipFatal * * @return array * name & email for domain * @throws Exception */ public static function getNameAndEmail($skipFatal = FALSE) { $fromEmailAddress = CRM_Core_OptionGroup::values('from_email_address', NULL, NULL, NULL, ' AND is_default = 1'); if (!empty($fromEmailAddress)) { foreach ($fromEmailAddress as $key => $value) { $email = CRM_Utils_Mail::pluckEmailFromHeader($value); $fromArray = explode('"', $value); $fromName = CRM_Utils_Array::value(1, $fromArray); break; } return array($fromName, $email); } elseif ($skipFatal) { return array('', ''); } $url = CRM_Utils_System::url('civicrm/admin/domain', 'action=update&reset=1' ); $status = ts("There is no valid default from email address configured for the domain. You can configure here Configure From Email Address.", array(1 => $url)); CRM_Core_Error::fatal($status); } /** * @param int $contactID * * @return bool|null|object|string */ public static function addContactToDomainGroup($contactID) { $groupID = self::getGroupId(); if ($groupID) { $contactIDs = array($contactID); CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIDs, $groupID); return $groupID; } return FALSE; } /** * @return bool|null|object|string */ public static function getGroupId() { static $groupID = NULL; if ($groupID) { return $groupID; } $domainGroupID = Civi::settings()->get('domain_group_id'); $multisite = Civi::settings()->get('is_enabled'); if ($domainGroupID) { $groupID = $domainGroupID; } elseif ($multisite) { // create a group with that of domain name $title = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'name' ); $groupID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $title, 'id', 'title', TRUE ); } return $groupID ? $groupID : FALSE; } /** * @param int $groupId * * @return bool */ public static function isDomainGroup($groupId) { $domainGroupID = self::getGroupId(); return $domainGroupID == $groupId ? TRUE : FALSE; } /** * @return array */ public static function getChildGroupIds() { $domainGroupID = self::getGroupId(); $childGrps = array(); if ($domainGroupID) { $childGrps = CRM_Contact_BAO_GroupNesting::getChildGroupIds($domainGroupID); $childGrps[] = $domainGroupID; } return $childGrps; } /** * Retrieve a list of contact-ids that belongs to current domain/site. * * @return array */ public static function getContactList() { $siteGroups = CRM_Core_BAO_Domain::getChildGroupIds(); $siteContacts = array(); if (!empty($siteGroups)) { $query = " SELECT cc.id FROM civicrm_contact cc INNER JOIN civicrm_group_contact gc ON (gc.contact_id = cc.id AND gc.status = 'Added' AND gc.group_id IN (" . implode(',', $siteGroups) . "))"; $dao = CRM_Core_DAO::executeQuery($query); while ($dao->fetch()) { $siteContacts[] = $dao->id; } } return $siteContacts; } }