152 lines
4.2 KiB
PHP
152 lines
4.2 KiB
PHP
|
<?php
|
||
|
/*
|
||
|
+--------------------------------------------------------------------+
|
||
|
| CiviCRM version 4.7 |
|
||
|
+--------------------------------------------------------------------+
|
||
|
| Copyright CiviCRM LLC (c) 2004-2017 |
|
||
|
+--------------------------------------------------------------------+
|
||
|
| 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 |
|
||
|
+--------------------------------------------------------------------+
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @package CRM
|
||
|
* @copyright CiviCRM LLC (c) 2004-2017
|
||
|
*/
|
||
|
class CRM_Bridge_OG_Utils {
|
||
|
const aclEnabled = 1, syncFromCiviCRM = 1;
|
||
|
|
||
|
/**
|
||
|
* @return int
|
||
|
*/
|
||
|
public static function aclEnabled() {
|
||
|
return self::aclEnabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Switch to stop synchronization from CiviCRM.
|
||
|
* This was always false before, and is always true
|
||
|
* now. Most likely, this needs to be a setting.
|
||
|
*/
|
||
|
public static function syncFromCiviCRM() {
|
||
|
// make sure that acls are not enabled
|
||
|
//RMT -- the following makes no f**king sense...
|
||
|
//return ! self::aclEnabled & self::syncFromCiviCRM;
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param int $ogID
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function ogSyncName($ogID) {
|
||
|
return "OG Sync Group :{$ogID}:";
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param int $ogID
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function ogSyncACLName($ogID) {
|
||
|
return "OG Sync Group ACL :{$ogID}:";
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param int $groupID
|
||
|
* @param bool $abort
|
||
|
*
|
||
|
* @return int|null|string
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
public static function ogID($groupID, $abort = TRUE) {
|
||
|
$source = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group',
|
||
|
$groupID,
|
||
|
'source'
|
||
|
);
|
||
|
|
||
|
if (strpos($source, 'OG Sync Group') !== FALSE) {
|
||
|
preg_match('/:(\d+):$/', $source, $matches);
|
||
|
if (is_numeric($matches[1])) {
|
||
|
return $matches[1];
|
||
|
}
|
||
|
}
|
||
|
if ($abort) {
|
||
|
CRM_Core_Error::fatal();
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param int $ufID
|
||
|
*
|
||
|
* @return int
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
public static function contactID($ufID) {
|
||
|
$contactID = CRM_Core_BAO_UFMatch::getContactId($ufID);
|
||
|
if ($contactID) {
|
||
|
return $contactID;
|
||
|
}
|
||
|
// else synchronize contact for this user
|
||
|
|
||
|
$account = user_load($ufID);
|
||
|
|
||
|
CRM_Core_BAO_UFMatch::synchronizeUFMatch($account, $ufID, $account->mail, 'Drupal');
|
||
|
$contactID = CRM_Core_BAO_UFMatch::getContactId($ufID);
|
||
|
if (!$contactID) {
|
||
|
CRM_Core_Error::fatal();
|
||
|
}
|
||
|
return $contactID;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $source
|
||
|
* @param null $title
|
||
|
* @param bool $abort
|
||
|
*
|
||
|
* @return null|string
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
public static function groupID($source, $title = NULL, $abort = FALSE) {
|
||
|
$query = "
|
||
|
SELECT id
|
||
|
FROM civicrm_group
|
||
|
WHERE source = %1";
|
||
|
$params = array(1 => array($source, 'String'));
|
||
|
|
||
|
if ($title) {
|
||
|
$query .= " OR title = %2";
|
||
|
$params[2] = array($title, 'String');
|
||
|
}
|
||
|
|
||
|
$groupID = CRM_Core_DAO::singleValueQuery($query, $params);
|
||
|
if ($abort &&
|
||
|
!$groupID
|
||
|
) {
|
||
|
CRM_Core_Error::fatal();
|
||
|
}
|
||
|
|
||
|
return $groupID;
|
||
|
}
|
||
|
|
||
|
}
|