diff options
Diffstat (limited to 'services')
-rw-r--r-- | services/tag2tagservice.php | 18 | ||||
-rw-r--r-- | services/tagservice.php | 43 |
2 files changed, 38 insertions, 23 deletions
diff --git a/services/tag2tagservice.php b/services/tag2tagservice.php index f46ef7c..d37ab8b 100644 --- a/services/tag2tagservice.php +++ b/services/tag2tagservice.php @@ -59,7 +59,7 @@ class Tag2TagService { if($uId != null) { $query.= " AND uId = '".$uId."'"; } - +//die($query); if (! ($dbresult =& $this->db->sql_query_limit($query, $limit)) ){ message_die(GENERAL_ERROR, 'Could not get related tags', '', __LINE__, __FILE__, $query, $this->db); return false; @@ -69,6 +69,7 @@ class Tag2TagService { $output = array(); foreach($rowset as $row) { if(!in_array($row['tag'], $stopList)) { + $output[] = $row['tag']; } } @@ -89,19 +90,18 @@ class Tag2TagService { $asFlatList = true; //we disable the tree list parameter for the moment if(in_array($tag1, $stopList)) { - return $tag1; + return array(); } - $stopList2 = $stopList; - $stopList2[] = $tag1; - $linkedTags = $this->getLinkedTags($tag1, $relationType, $uId, false, $stopList2); + $stopList[] = $tag1; + $linkedTags = $this->getLinkedTags($tag1, $relationType, $uId, false, $stopList); if($relationType != '=') { - $linkedTags = array_merge($linkedTags, $this->getLinkedTags($tag1, '=', $uId, false, $stopList2)); + $linkedTags = array_merge($linkedTags, $this->getLinkedTags($tag1, '=', $uId, false, $stopList)); } if(count($linkedTags) == 0) { - return $tag1; + return array(); } else { $output = array(); if($asFlatList == true) { @@ -110,13 +110,13 @@ class Tag2TagService { $output = array('node'=>$tag1); } - $stopList[] = $tag1; foreach($linkedTags as $linkedTag) { $allLinkedTags = $this->getAllLinkedTags($linkedTag, $relationType, $uId, $asFlatList, $stopList); if($asFlatList == true) { + $output[] = $linkedTag; if(is_array($allLinkedTags)) { - $output[] = $linkedTag; + $output = array_merge($output, $allLinkedTags); } else { $output[] = $allLinkedTags; diff --git a/services/tagservice.php b/services/tagservice.php index 509e575..bbf3574 100644 --- a/services/tagservice.php +++ b/services/tagservice.php @@ -86,22 +86,37 @@ class TagService { } } + $bs =& ServiceFactory::getServiceInstance('BookmarkService'); + $tts =& ServiceFactory::getServiceInstance('Tag2TagService'); + // Create links between tags foreach($tags as $key => $tag) { - // case ">" - $pieces = explode('>', $tag); - $nbPieces = count($pieces); - if($nbPieces > 1) { - for($i = 0; $i < $nbPieces-1; $i++) { - $bs =& ServiceFactory::getServiceInstance('BookmarkService'); - $tts =& ServiceFactory::getServiceInstance('Tag2TagService'); - - $bookmark = $bs->getBookmark($bookmarkid); - $uId = $bookmark['uId']; - $tts->addLinkedTags($pieces[$i], $pieces[$i+1], '>', $uId); - } - $tags[$key] = $pieces[$nbPieces-1]; // Attach just the last tag to the bookmark - } + if(strpos($tag, '=')) { + // case "=" + $pieces = explode('=', $tag); + $nbPieces = count($pieces); + if($nbPieces > 1) { + for($i = 0; $i < $nbPieces-1; $i++) { + $bookmark = $bs->getBookmark($bookmarkid); + $uId = $bookmark['uId']; + $tts->addLinkedTags($pieces[$i], $pieces[$i+1], '=', $uId); + } + $tags[$key] = $pieces[0]; // Attach just the last tag to the bookmark + } + } else { + // case ">" + $pieces = explode('>', $tag); + $nbPieces = count($pieces); + if($nbPieces > 1) { + for($i = 0; $i < $nbPieces-1; $i++) { + $bookmark = $bs->getBookmark($bookmarkid); + $uId = $bookmark['uId']; + $tts->addLinkedTags($pieces[$i], $pieces[$i+1], '>', $uId); + } + $tags[$key] = $pieces[$nbPieces-1]; // Attach just the last tag to the bookmark + } + } + } |