return ($count) ? TRUE : FALSE;
}
- /**
- * Build a join and where part for a query
- *
- * @param int $contactId
- * @return array - the first key is join part of the query and the second key is the where part of the query
- */
- public static function buildAcl($contactId) {
- // If there is no $contactId passed return empty ACL join and where clause
- if (empty($contactId)) {
- return array('', '');
- }
-
- $tables = array();
- $whereTables = array();
- $whereClause = CRM_ACL_BAO_ACL::whereClause(CRM_Core_Permission::VIEW, $tables, $whereTables, $contactId, TRUE);
- if (strlen($whereClause)) {
- $whereClause = " AND (" . $whereClause . ")";
- }
-
- $join = "";
- foreach ($whereTables as $name => $value) {
- if (!$value) {
- continue;
- }
- if ($value != 1) {
- // if there is already a join statement in value, use value itself
- if (strpos($value, 'JOIN')) {
- $join .= " $value ";
- }
- continue;
- }
- }
-
- return array(
- $join,
- $whereClause,
- );
- }
-
/**
* @param $type
* @param $tables
* @param $whereTables
* @param int $contactID
- * @param bool $strictReturn If there is no where clause build for ACL
*
* @return null|string
*/
- public static function whereClause($type, &$tables, &$whereTables, $contactID = NULL, $strictReturn = FALSE) {
+ public static function whereClause($type, &$tables, &$whereTables, $contactID = NULL) {
$acls = CRM_ACL_BAO_Cache::build($contactID);
$whereClause = NULL;
// call the hook to get additional whereClauses
CRM_Utils_Hook::aclWhereClause($type, $tables, $whereTables, $contactID, $whereClause);
- if (empty($whereClause) && !$strictReturn) {
+ if (empty($whereClause)) {
$whereClause = ' ( 0 ) ';
}
* @return void
*/
public function getTestRecipients($testParams) {
- $session = CRM_Core_Session::singleton();
- $senderId = $session->get('userID');
- list($aclJoin, $aclWhere) = CRM_ACL_BAO_ACL::buildAcl($senderId);
-
- if (!empty($testParams['test_group']) && array_key_exists($testParams['test_group'], CRM_Core_PseudoConstant::group())) {
+ if (array_key_exists($testParams['test_group'], CRM_Core_PseudoConstant::group())) {
$contacts = civicrm_api('contact', 'get', array(
'version' => 3,
'group' => $testParams['test_group'],
civicrm_email.is_primary as is_primary,
civicrm_email.is_bulkmail as is_bulkmail
FROM civicrm_email
-INNER JOIN civicrm_contact contact_a ON civicrm_email.contact_id = contact_a.id
-{$aclJoin}
+INNER JOIN civicrm_contact ON civicrm_email.contact_id = civicrm_contact.id
WHERE (civicrm_email.is_bulkmail = 1 OR civicrm_email.is_primary = 1)
-AND contact_a.id = {$groupContact}
-AND contact_a.do_not_email = 0
-AND contact_a.is_deceased <> 1
+AND civicrm_contact.id = {$groupContact}
+AND civicrm_contact.do_not_email = 0
+AND civicrm_contact.is_deceased <> 1
AND civicrm_email.on_hold = 0
-AND contact_a.is_opt_out = 0
-{$aclWhere}
+AND civicrm_contact.is_opt_out = 0
GROUP BY civicrm_email.id
ORDER BY civicrm_email.is_bulkmail DESC
";
$edTable = CRM_Mailing_Event_BAO_Delivered::getTableName();
$ebTable = CRM_Mailing_Event_BAO_Bounce::getTableName();
- list($aclJoin, $aclWhere) = CRM_ACL_BAO_ACL::buildAcl($mailing->created_id);
-
$query = " SELECT $eqTable.id,
$emailTable.email as email,
$eqTable.contact_id,
FROM $eqTable
INNER JOIN $emailTable
ON $eqTable.email_id = $emailTable.id
- INNER JOIN $contactTable contact_a
- ON contact_a.id = $emailTable.contact_id
+ INNER JOIN $contactTable
+ ON $contactTable.id = $emailTable.contact_id
LEFT JOIN $edTable
ON $eqTable.id = $edTable.event_queue_id
LEFT JOIN $ebTable
ON $eqTable.id = $ebTable.event_queue_id
- $aclJoin
WHERE $eqTable.job_id = " . $this->id . "
AND $edTable.id IS null
AND $ebTable.id IS null
- AND contact_a.is_opt_out = 0
- $aclWhere";
+ AND $contactTable.is_opt_out = 0";
if ($mailing->sms_provider_id) {
$query = "
FROM $eqTable
INNER JOIN $phoneTable
ON $eqTable.phone_id = $phoneTable.id
- INNER JOIN $contactTable contact_a
- ON contact_a.id = $phoneTable.contact_id
+ INNER JOIN $contactTable
+ ON $contactTable.id = $phoneTable.contact_id
LEFT JOIN $edTable
ON $eqTable.id = $edTable.event_queue_id
LEFT JOIN $ebTable
ON $eqTable.id = $ebTable.event_queue_id
- $aclJoin
WHERE $eqTable.job_id = " . $this->id . "
AND $edTable.id IS null
AND $ebTable.id IS null
- AND ( contact_a.is_opt_out = 0
- OR contact_a.do_not_sms = 0 )
- $aclWhere";
+ AND ( $contactTable.is_opt_out = 0
+ OR $contactTable.do_not_sms = 0 )";
}
$eq->query($query);