/** * @param array $usedFor * @param bool $buildSelect * @param bool $all * @param int $parentId * * @return array */ public static function getTagsUsedFor($usedFor = array('civicrm_contact'), $buildSelect = TRUE, $all = FALSE, $parentId = NULL) { $tags = array(); if (empty($usedFor)) { return $tags; } if (!is_array($usedFor)) { $usedFor = array($usedFor); } if ($parentId === NULL) { $parentClause = " parent_id IS NULL AND "; } else { $parentClause = " parent_id = {$parentId} AND "; } foreach ($usedFor as $entityTable) { $tag = new CRM_Core_DAO_Tag(); $tag->fields(); $tag->orderBy('parent_id'); if ($buildSelect) { $tag->whereAdd("is_tagset = 0 AND {$parentClause} used_for LIKE '%{$entityTable}%'"); } else { $tag->whereAdd("used_for LIKE '%{$entityTable}%'"); } if (!$all) { $tag->is_tagset = 0; } $tag->find(); while ($tag->fetch()) { if ($buildSelect) { $tags[$tag->id] = $tag->name; } else { $tags[$tag->id]['name'] = $tag->name; $tags[$tag->id]['parent_id'] = $tag->parent_id; $tags[$tag->id]['is_tagset'] = $tag->is_tagset; $tags[$tag->id]['used_for'] = $tag->used_for; } } $tag->free(); } return $tags; }