public function fetch_objecttags($args) { $id_list = ''; if (isset($args['tag_id'])) { $id_list = implode(',', $args['tag_id']); } if (empty($id_list)) { return; } $blog_filter = $this->include_exclude_blogs($args); if ($blog_filter != '') { $blog_filter = 'and objecttag_blog_id' . $blog_filter; } $extras = array(); if (isset($args['datasource']) && strtolower($args['datasource']) == 'asset') { $datasource = $args['datasource']; $extras['join'] = array('mt_asset' => array('condition' => 'asset_id = objecttag_object_id')); } else { $datasource = 'entry'; $extras['join'] = array('mt_entry' => array('condition' => 'entry_id = objecttag_object_id')); $object_filter = 'and entry_status = 2'; } require_once 'class.mt_objecttag.php'; $otag = new ObjectTag(); $where = "objecttag_object_datasource ='{$datasource}'\n and objecttag_tag_id in ({$id_list})\n {$blog_filter}\n {$object_filter}"; return $otag->Find($where, false, false, $extras); }
public function addTagByTriple($namespace, $predicate, $value, $visible = true) { $object = $this->getInvoker(); //check for existing Tag $tag = LsQuery::getByModelAndFieldsQuery('Tag', array('triple_namespace' => $namespace, 'triple_predicate' => $predicate, 'triple_value' => $value))->fetchOne(); $db = Doctrine_Manager::connection(); try { $db->beginTransaction(); if ($tag) { if ($this->hasObjectTag($tag)) { return false; } } else { $tag = new Tag(); $tag->triple_namespace = $namespace; $tag->triple_predicate = $predicate; $tag->triple_value = $value; $tag->is_visible = $visible; $tag->save(); } //link object to Tag $objectTag = new ObjectTag(); $objectTag->object_model = get_class($object); $objectTag->object_id = $object->id; $objectTag->Tag = $tag; $objectTag->save(); $db->commit(); } catch (Exception $e) { $db->rollback(); throw $e; } return $objectTag; }