Merge pull request #21550 from demeritcowboy/template-missed
[civicrm-core.git] / CRM / Bridge / OG / Utils.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
bc77d7c0 4 | Copyright CiviCRM LLC. All rights reserved. |
6a488035 5 | |
bc77d7c0
TO
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
6a488035 9 +--------------------------------------------------------------------+
d25dd0ee 10 */
6a488035
TO
11
12/**
13 *
14 * @package CRM
ca5cec67 15 * @copyright CiviCRM LLC https://civicrm.org/licensing
6a488035
TO
16 */
17class CRM_Bridge_OG_Utils {
7da04cde 18 const aclEnabled = 1, syncFromCiviCRM = 1;
6a488035 19
e0ef6999
EM
20 /**
21 * @return int
22 */
00be9182 23 public static function aclEnabled() {
6a488035
TO
24 return self::aclEnabled;
25 }
26
27 /**
fe482240 28 * Switch to stop synchronization from CiviCRM.
6a488035
TO
29 * This was always false before, and is always true
30 * now. Most likely, this needs to be a setting.
31 */
00be9182 32 public static function syncFromCiviCRM() {
6a488035
TO
33 // make sure that acls are not enabled
34 //RMT -- the following makes no f**king sense...
35 //return ! self::aclEnabled & self::syncFromCiviCRM;
36 return TRUE;
37 }
38
e0ef6999 39 /**
100fef9d 40 * @param int $ogID
e0ef6999
EM
41 *
42 * @return string
43 */
00be9182 44 public static function ogSyncName($ogID) {
6a488035
TO
45 return "OG Sync Group :{$ogID}:";
46 }
47
e0ef6999 48 /**
100fef9d 49 * @param int $ogID
e0ef6999
EM
50 *
51 * @return string
52 */
00be9182 53 public static function ogSyncACLName($ogID) {
6a488035
TO
54 return "OG Sync Group ACL :{$ogID}:";
55 }
56
e0ef6999 57 /**
100fef9d 58 * @param int $groupID
e0ef6999
EM
59 *
60 * @return int|null|string
61 * @throws Exception
62 */
ba968e38 63 public static function ogID($groupID) {
6a488035
TO
64 $source = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group',
65 $groupID,
66 'source'
67 );
68
69 if (strpos($source, 'OG Sync Group') !== FALSE) {
70 preg_match('/:(\d+):$/', $source, $matches);
71 if (is_numeric($matches[1])) {
72 return $matches[1];
73 }
74 }
6a488035
TO
75 return NULL;
76 }
77
e0ef6999 78 /**
100fef9d 79 * @param int $ufID
e0ef6999
EM
80 *
81 * @return int
82 * @throws Exception
83 */
00be9182 84 public static function contactID($ufID) {
6a488035
TO
85 $contactID = CRM_Core_BAO_UFMatch::getContactId($ufID);
86 if ($contactID) {
87 return $contactID;
88 }
89 // else synchronize contact for this user
90
91 $account = user_load($ufID);
92
93 CRM_Core_BAO_UFMatch::synchronizeUFMatch($account, $ufID, $account->mail, 'Drupal');
94 $contactID = CRM_Core_BAO_UFMatch::getContactId($ufID);
95 if (!$contactID) {
ba968e38 96 throw new CRM_Core_Exception('no contact found');
6a488035
TO
97 }
98 return $contactID;
99 }
100
e0ef6999
EM
101 /**
102 * @param $source
103 * @param null $title
104 * @param bool $abort
105 *
106 * @return null|string
ba968e38 107 * @throws \CRM_Core_Exception
e0ef6999 108 */
00be9182 109 public static function groupID($source, $title = NULL, $abort = FALSE) {
6a488035
TO
110 $query = "
111SELECT id
112 FROM civicrm_group
113 WHERE source = %1";
be2fb01f 114 $params = [1 => [$source, 'String']];
6a488035
TO
115
116 if ($title) {
117 $query .= " OR title = %2";
be2fb01f 118 $params[2] = [$title, 'String'];
6a488035
TO
119 }
120
121 $groupID = CRM_Core_DAO::singleValueQuery($query, $params);
122 if ($abort &&
123 !$groupID
124 ) {
ba968e38 125 throw new CRM_Core_Exception('no group found');
6a488035
TO
126 }
127
128 return $groupID;
129 }
96025800 130
6a488035 131}