/** * Delete the tag. * * @param int $id * Tag id. * * @return bool */ public static function del($id) { // since this is a destructive operation, lets make sure // id is a positive number CRM_Utils_Type::validate($id, 'Positive'); // delete all crm_entity_tag records with the selected tag id $entityTag = new CRM_Core_DAO_EntityTag(); $entityTag->tag_id = $id; $entityTag->delete(); // delete from tag table $tag = new CRM_Core_DAO_Tag(); $tag->id = $id; CRM_Utils_Hook::pre('delete', 'Tag', $id, $tag); if ($tag->delete()) { CRM_Utils_Hook::post('delete', 'Tag', $id, $tag); return TRUE; } return FALSE; }
/** * 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. * * @return array * (total, removed, notRemoved) count of entities removed from tags */ public static function removeEntitiesFromTag(&$entityIds, $tagId, $entityTable = 'civicrm_contact') { $numEntitiesRemoved = 0; $numEntitiesNotRemoved = 0; $entityIdsRemoved = array(); foreach ($entityIds as $entityId) { $tag = new CRM_Core_DAO_EntityTag(); $tag->entity_id = $entityId; $tag->tag_id = $tagId; $tag->entity_table = $entityTable; if ($tag->find()) { $tag->delete(); $entityIdsRemoved[] = $entityId; $numEntitiesRemoved++; } else { $numEntitiesNotRemoved++; } } //invoke post hook on entityTag $object = array($entityIdsRemoved, $entityTable); CRM_Utils_Hook::post('delete', 'EntityTag', $tagId, $object); // reset the group contact cache for all groups // if tags are being used in a smart group CRM_Contact_BAO_GroupContactCache::remove(); return array(count($entityIds), $numEntitiesRemoved, $numEntitiesNotRemoved); }
/** * Function to delete the tag * * @param int $id tag id * * @return boolean * @access public * @static * */ static function del($id) { // delete all crm_entity_tag records with the selected tag id require_once 'CRM/Core/DAO/EntityTag.php'; $entityTag = new CRM_Core_DAO_EntityTag(); $entityTag->tag_id = $id; if ($entityTag->find()) { while ($entityTag->fetch()) { $entityTag->delete(); } } // delete from tag table $tag = new CRM_Core_DAO_Tag(); $tag->id = $id; require_once 'CRM/Utils/Hook.php'; CRM_Utils_Hook::pre('delete', 'Tag', $id, $tag); if ($tag->delete()) { CRM_Utils_Hook::post('delete', 'Tag', $id, $tag); CRM_Core_Session::setStatus(ts('Selected Tag has been Deleted Successfuly.')); return true; } return false; }
/** * 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 bool $applyPermissions * Should permissions be applied in this function. * * @return array * (total, removed, notRemoved) count of entities removed from tags */ public static function removeEntitiesFromTag(&$entityIds, $tagId, $entityTable, $applyPermissions) { $numEntitiesRemoved = 0; $numEntitiesNotRemoved = 0; $entityIdsRemoved = array(); foreach ($entityIds as $entityId) { // CRM-17350 - check if we have permission to edit the contact // that this tag belongs to. if ($applyPermissions && !self::checkPermissionOnEntityTag($entityId, $entityTable)) { $numEntitiesNotRemoved++; continue; } $tag = new CRM_Core_DAO_EntityTag(); $tag->entity_id = $entityId; $tag->tag_id = $tagId; $tag->entity_table = $entityTable; if ($tag->find()) { $tag->delete(); $entityIdsRemoved[] = $entityId; $numEntitiesRemoved++; } else { $numEntitiesNotRemoved++; } } //invoke post hook on entityTag $object = array($entityIdsRemoved, $entityTable); CRM_Utils_Hook::post('delete', 'EntityTag', $tagId, $object); CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush(); return array(count($entityIds), $numEntitiesRemoved, $numEntitiesNotRemoved); }
/** * Function to delete the tag * * @param int $id tag id * * @return boolean * @access public * @static * */ static function del($id) { // delete all crm_entity_tag records with the selected tag id $entityTag = new CRM_Core_DAO_EntityTag(); $entityTag->tag_id = $id; if ($entityTag->find()) { while ($entityTag->fetch()) { $entityTag->delete(); } } // delete from tag table $tag = new CRM_Core_DAO_Tag(); $tag->id = $id; CRM_Utils_Hook::pre('delete', 'Tag', $id, $tag); if ($tag->delete()) { CRM_Utils_Hook::post('delete', 'Tag', $id, $tag); CRM_Core_Session::setStatus(ts('Selected tag has been deleted successfully.')); return TRUE; } return FALSE; }