/** * Show project objects tagged with specific tag * * @access public * @param void * @return null */ function project_tag() { $tag = array_var($_GET, 'tag'); if (trim($tag) == '') { flash_error(lang('tag dnx')); $this->redirectTo('project', 'tags'); } // if $tagged_objects = active_or_personal_project()->getObjectsByTag($tag); $total_tagged_objects = Tags::countObjectsByTag($tag); if (is_array($tagged_objects)) { foreach ($tagged_objects as $type => $objects) { if (is_array($objects)) { $total_tagged_objects += count($objects); } } // foreach } // if tpl_assign('tag', $tag); tpl_assign('tagged_objects', $tagged_objects); tpl_assign('total_tagged_objects', $total_tagged_objects); }
/** * Add tags for an object * * @access public * @param string $tag_name tag to be added * @param ProjectDataObject $obj * @return null */ function addObjectTag($tag_name, ApplicationDataObject $obj) { $tag_name = trim($tag_name); if (!(isset($obj) && $obj && $obj instanceof ApplicationDataObject)) { return true; } $prevTags = Tags::getTagNamesByObject($obj); if ($prevTags) { foreach ($prevTags as $tag_iter) { if (strcmp($tag_name, $tag_iter) == 0) { return true; } //tag already added } } if (strcmp($tag_name, '')) { $exists = true; if (Tags::countObjectsByTag($tag_name) <= 0) { $exists = false; } $tag = new Tag(); $tag->setTag($tag_name); $tag->setRelObjectId($obj->getId()); $tag->setRelObjectManager(get_class($obj->manager())); $tag->setIsPrivate(false); $tag->save(); if (!$exists) { $real_tag = self::findById($tag->getId()); evt_add("tag added", array("name" => $real_tag->getTag())); } } // if return true; }
/** * Return number of project objects tagged with $tag * * @param string $tag * @return integer */ function countObjectsByTag($tag) { $exclude_private = !logged_user()->isMemberOfOwnerCompany(); return Tags::countObjectsByTag($tag, $exclude_private); }