function save($data) { $tag_names = false; $selected_tags = false; if (isset($data['tag_add_text']) && $data['tag_add_text']) { $tag_names = $data['tag_add_text']; } if (isset($data['tag_add']) && $data['tag_add']) { $selected_tags = split(", ", $data['tag_add']); } AMP_update_tags($selected_tags, $tag_names, $this->udm->uid, AMP_SYSTEM_ITEM_TYPE_FORM); return true; /* older method $item_data = array( ); if ( defined( 'AMP_SYSTEM_USER_ID')) { $item_data['user_id'] = AMP_SYSTEM_USER_ID; } $item_data['item_type'] = AMP_SYSTEM_ITEM_TYPE_FORM; $item_data['item_id'] = $this->udm->uid; if ( $this->_active ) $this->_clear_saved_tags( ); if ( !isset( $data['tag_add']) || !( $data['tag_add'])) { return true; } $selected_tags = split( ", ", $data['tag_add'] ); require_once( 'AMP/System/Data/Set.inc.php'); $save_table = new AMPSystem_Data_Set( $this->dbcon ); $save_table->setSource( 'tags_items' ); foreach( $selected_tags as $tag_id ) { $tag_save_set = array( 'tag_id' => $tag_id ) + $item_data; $save_table->insertData( $tag_save_set ); } return true; */ }
function _save_tags() { if ($this->isVersion()) { return; } return AMP_update_tags($this->_getTagsBase(), false, $this->id, AMP_SYSTEM_ITEM_TYPE_ARTICLE); }
function AMP_update_tags($tag_ids = false, $tag_names = false, $item_id, $item_type) { if ($tag_names) { require_once 'AMP/Content/Tag/Tag.php'; $new_tag_set = AMP_Content_Tag::create_many($tag_names); if ($tag_ids) { $complete_tags = array_merge($tag_ids, $new_tag_set); } else { $complete_tags = $new_tag_set; } return AMP_update_tags($complete_tags, false, $item_id, $item_type); } $tag_lookup = 'tagsBy' . ucfirst($item_type); $existing_tags = AMPSystem_Lookup::instance($tag_lookup, $item_id); if ((!$tag_ids || empty($tag_ids)) && !$existing_tags) { return true; } if (!$existing_tags) { $existing_tags = array(); } if (!$tag_ids) { $tag_ids = array(); } $existing_tag_ids = array_keys($existing_tags); if ($existing_tag_ids) { $deleted_items = array_diff($existing_tag_ids, $tag_ids); $new_items = array_diff($tag_ids, $existing_tag_ids); } else { $deleted_items = array(); $new_items = $tag_ids; } if (empty($deleted_items) && empty($new_items)) { return false; } require_once 'AMP/Content/Tag/Item/Item.php'; $action_item = new AMP_Content_Tag_Item(AMP_Registry::getDbcon()); //remove existing tags if (!empty($deleted_items)) { foreach ($deleted_items as $tag_item_id) { $action_item->deleteByCriteria(array('tag_id' => $tag_item_id, 'item' => $item_id, 'itemtype' => $item_type)); } } //add new tag designations if (!empty($new_items)) { $create_values = array('item_type' => $item_type, 'item_id' => $item_id, 'user_id' => AMP_SYSTEM_USER_ID); foreach ($new_items as $tag_id) { $action_item->dropID(); $tag_values = $create_values + array('tag_id' => $tag_id); $action_item->setData($tag_values); $action_item->save(); } } //clear tags lookups AMP_lookup_clear_cached('tags_totals_articles_live'); AMP_lookup_clear_cached('tags_totals'); AMP_lookup_clear_cached('tags_simple'); AMP_lookup_clear_cached('tags_live'); AMP_lookup_clear_cached('tags'); if ($item_type == AMP_SYSTEM_ITEM_TYPE_ARTICLE) { AMP_lookup_clear_cached('tags_by_article', $item_id); } }