| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
-*/
+ */
/**
* This class contains functions for managing Tag(tag) for a contact
* Given a contact id, it returns an array of tag id's the
* contact belongs to.
*
- * @param int $entityID id of the entity usually the contactID.
- * @param string $entityTable name of the entity table usually 'civicrm_contact'
+ * @param int $entityID
+ * Id of the entity usually the contactID.
+ * @param string $entityTable
+ * Name of the entity table usually 'civicrm_contact'.
*
- * @return array(
- ) reference $tag array of category id's the contact belongs to.
+ * @return array
+ * reference $tag array of category id's the contact belongs to.
*
- * @static
*/
public static function &getTag($entityID, $entityTable = 'civicrm_contact') {
$tags = array();
}
/**
- * Takes an associative array and creates a entityTag object
+ * Takes an associative array and creates a entityTag object.
*
* the function extract all the params it needs to initialize the create a
* group object. the params array could contain additional unused name/value
* pairs
*
- * @param array $params (reference ) an assoc array of name/value pairs
+ * @param array $params
+ * (reference ) an assoc array of name/value pairs.
*
- * @return CRM_Core_BAO_EntityTag object
- * @static
+ * @return CRM_Core_BAO_EntityTag
*/
public static function add(&$params) {
$dataExists = self::dataExists($params);
}
/**
- * Check if there is data to create the object
+ * Check if there is data to create the object.
*
- * @param array $params an assoc array of name/value pairs
+ * @param array $params
+ * An assoc array of name/value pairs.
*
- * @return boolean
- * @static
+ * @return bool
*/
public static function dataExists($params) {
return !($params['tag_id'] == 0);
}
/**
- * Delete the tag for a contact
- *
- * @param array $params (reference ) an assoc array of name/value pairs
- *
- * @return CRM_Core_BAO_EntityTag object
- * @static
+ * Delete the tag for a contact.
*
+ * @param array $params
+ * (reference ) an assoc array of name/value pairs.
*/
public static function del(&$params) {
$entityTag = new CRM_Core_BAO_EntityTag();
/**
* Given an array of entity ids and entity table, add all the entity to the tags
*
- * @param array $entityIds (reference ) the array of entity ids to be added
- * @param int $tagId the id of the tag
- * @param string $entityTable name of entity table default:civicrm_contact
+ * @param array $entityIds
+ * (reference ) the array of entity ids to be added.
+ * @param int $tagId
+ * The id of the tag.
+ * @param string $entityTable
+ * Name of entity table default:civicrm_contact.
*
- * @return array (total, added, notAdded) count of enities added to tag
- * @static
+ * @return array
+ * (total, added, notAdded) count of enities added to tag
*/
public static function addEntitiesToTag(&$entityIds, $tagId, $entityTable = 'civicrm_contact') {
- $numEntitiesAdded = 0;
+ $numEntitiesAdded = 0;
$numEntitiesNotAdded = 0;
- $entityIdsAdded = array();
+ $entityIdsAdded = array();
foreach ($entityIds as $entityId) {
$tag = new CRM_Core_DAO_EntityTag();
- $tag->entity_id = $entityId;
- $tag->tag_id = $tagId;
+ $tag->entity_id = $entityId;
+ $tag->tag_id = $tagId;
$tag->entity_table = $entityTable;
if (!$tag->find()) {
$tag->save();
/**
* Given an array of entity ids and entity table, remove entity(s) tags
*
- * @param array $entityIds (reference ) the array of entity ids to be removed
- * @param int $tagId the id of the tag
- * @param string $entityTable name of entity table default:civicrm_contact
+ * @param array $entityIds
+ * (reference ) the array of entity ids to be removed.
+ * @param int $tagId
+ * The id of the tag.
+ * @param string $entityTable
+ * Name of entity table default:civicrm_contact.
*
- * @return array (total, removed, notRemoved) count of entities removed from tags
- * @static
+ * @return array
+ * (total, removed, notRemoved) count of entities removed from tags
*/
public static function removeEntitiesFromTag(&$entityIds, $tagId, $entityTable = 'civicrm_contact') {
$numEntitiesRemoved = 0;
foreach ($entityIds as $entityId) {
$tag = new CRM_Core_DAO_EntityTag();
- $tag->entity_id = $entityId;
- $tag->tag_id = $tagId;
+ $tag->entity_id = $entityId;
+ $tag->tag_id = $tagId;
$tag->entity_table = $entityTable;
if ($tag->find()) {
$tag->delete();
}
/**
- * Takes an associative array and creates tag entity record for all tag entities
+ * Takes an associative array and creates tag entity record for all tag entities.
*
- * @param array $params (reference) an assoc array of name/value pairs
+ * @param array $params
+ * (reference) an assoc array of name/value pairs.
* @param $entityTable
* @param int $entityID
*
* @return void
- * @static
*/
public static function create(&$params, $entityTable, $entityID) {
// get categories for the entity id
}
/**
- * This function returns all entities assigned to a specific tag
+ * This function returns all entities assigned to a specific tag.
*
- * @param object $tag an object of a tag.
+ * @param object $tag
+ * An object of a tag.
*
- * @return array $entityIds array of entity ids
+ * @return array
+ * array of entity ids
*/
public function getEntitiesByTag($tag) {
$entityIds = array();
}
/**
- * Get contact tags
+ * Get contact tags.
*/
public static function getContactTags($contactID, $count = FALSE) {
$contactTags = array();
}
/**
- * Get child contact tags given parentId
+ * Get child contact tags given parentId.
*/
public static function getChildEntityTags($parentId, $entityId, $entityTable = 'civicrm_contact') {
$entityTags = array();
* Merge two tags: tag B into tag A.
*/
public function mergeTags($tagAId, $tagBId) {
- $queryParams = array(1 => array($tagBId, 'Integer'),
+ $queryParams = array(
+ 1 => array($tagBId, 'Integer'),
2 => array($tagAId, 'Integer'),
);
// re-compute used_for field
$query = "SELECT id, name, used_for FROM civicrm_tag WHERE id IN (%1, %2)";
- $dao = CRM_Core_DAO::executeQuery($query, $queryParams);
- $tags = array();
+ $dao = CRM_Core_DAO::executeQuery($query, $queryParams);
+ $tags = array();
while ($dao->fetch()) {
$label = ($dao->id == $tagAId) ? 'tagA' : 'tagB';
$tags[$label] = $dao->name;
/**
* Get options for a given field.
+ *
* @see CRM_Core_DAO::buildOptions
+ * @see CRM_Core_DAO::buildOptionsContext
*
- * @param String $fieldName
- * @param String $context : @see CRM_Core_DAO::buildOptionsContext
- * @param Array $props : whatever is known about this dao object
+ * @param string $fieldName
+ * @param string $context
+ * As per CRM_Core_DAO::buildOptionsContext.
+ * @param array $props
+ * whatever is known about this dao object.
*
- * @return Array|bool
+ * @return array|bool
*/
public static function buildOptions($fieldName, $context = NULL, $props = array()) {
$params = array();
- $options = CRM_Core_PseudoConstant::get(__CLASS__, $fieldName, $params, $context);
+ if ($fieldName == 'tag' || $fieldName == 'tag_id') {
+ if (!empty($props['entity_table'])) {
+ $entity = CRM_Utils_Type::escape($props['entity_table'], 'String');
+ $params[] = "used_for LIKE '%$entity%'";
+ }
- // Output tag list as nested hierarchy
- // TODO: This will only work when api.entity is "entity_tag". What about others?
- if (($fieldName == 'tag' || $fieldName == 'tag_id') && ($context == 'search' || $context == 'create')) {
- $options = CRM_Core_BAO_Tag::getTags('civicrm_contact', CRM_Core_DAO::$_nullArray, CRM_Utils_Array::value('parent_id', $params), '- ');
+ // Output tag list as nested hierarchy
+ // TODO: This will only work when api.entity is "entity_tag". What about others?
+ if ($context == 'search' || $context == 'create') {
+ return CRM_Core_BAO_Tag::getTags(CRM_Utils_Array::value('entity_table', $props, 'civicrm_contact'), CRM_Core_DAO::$_nullArray, CRM_Utils_Array::value('parent_id', $params), '- ');
+ }
}
+ $options = CRM_Core_PseudoConstant::get(__CLASS__, $fieldName, $params, $context);
+
return $options;
}
+
}