<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
public $_entityTagValues;
/**
- * Function to build tag widget if correct parent is passed
+ * Build tag widget if correct parent is passed
*
* @param CRM_Core_Form $form form object
* @param string $parentNames parent name ( tag name)
* @param boolean $skipEntityAction true if need to add entry in entry table via ajax
* @param string $tagsetElementName if you need to create tagsetlist with specific name
*
- * @internal param bool $searchMode true if widget is used in search eg: advanced search
* @return void
* @access public
* @static
}
/**
- * Function to save entity tags when it is not save used AJAX
+ * Save entity tags when it is not save used AJAX
*
* @param array $params associated array
* @param int $entityId entity id, eg: contact id, activity id, case id, file id
* @param string $entityTable entity table
- * @param object $form form object
+ * @param CRM_Core_Form $form form object
*
* @return void
* @access public
// in that case we create empty tagset params so that below logic works and tagset are
// deleted correctly
foreach ($form->_tagsetInfo as $tagsetName => $tagsetInfo) {
- $tagsetId = substr($tagsetName, strlen('parentId_'));
+ $tagsetId = explode('parentId_', $tagsetName);
+ $tagsetId = $tagsetId[1];
if (empty($params[$tagsetId])) {
$params[$tagsetId] = '';
}
// are deleted we will have to set $params[tagset id] = '' which is done by above logic
foreach ($params as $parentId => $value) {
$newTagIds = array();
- $realTagIds = array();
+ $tagIds = array();
if ($value) {
- $tagsIDs = explode(',', $value);
- foreach ($tagsIDs as $tagId) {
- if (!is_numeric($tagId)) {
- // check if user has selected existing tag or is creating new tag
- // this is done to allow numeric tags etc.
- $tagValue = explode(':::', $tagId);
-
- if (isset($tagValue[1]) && $tagValue[1] == 'value') {
- $tagParams = array(
- 'name' => $tagValue[0],
- 'parent_id' => $parentId,
- );
- $tagObject = CRM_Core_BAO_Tag::add($tagParams, CRM_Core_DAO::$_nullArray);
- $tagId = $tagObject->id;
- }
- }
-
- $realTagIds[] = $tagId;
- if ($form && $form->_action != CRM_Core_Action::UPDATE) {
- $newTagIds[] = $tagId;
- }
- elseif (!array_key_exists($tagId, $existingTags)) {
+ $tagIds = explode(',', $value);
+ foreach ($tagIds as $tagId) {
+ if ($form && $form->_action != CRM_Core_Action::UPDATE || !array_key_exists($tagId, $existingTags)) {
$newTagIds[] = $tagId;
}
}
WHERE civicrm_tag.id=civicrm_entity_tag.tag_id
AND civicrm_entity_tag.entity_table='{$entityTable}'
AND entity_id={$entityId} AND parent_id={$parentId}";
- if (!empty($realTagIds)) {
- $deleteSQL .= " AND tag_id NOT IN (" . implode(', ', $realTagIds) . ");";
+ if (!empty($tagIds)) {
+ $deleteSQL .= " AND tag_id NOT IN (" . implode(', ', $tagIds) . ");";
}
CRM_Core_DAO::executeQuery($deleteSQL);