Beispiel #1
0
 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;
             */
 }
Beispiel #2
0
 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);
    }
}