1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
<?php
/*
To be inserted into blocks where structured tags must be displayed in a tree format.
*/
function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode =false, $precedentTag =null, $level=0, $stopList=array()) {
if(in_array($tag, $stopList)) {
return array('output' => '', 'stoplist' => $stopList);
}
$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
$tagstatservice =& ServiceFactory::getServiceInstance('TagStatService');
// link '>'
if($level>1) {
if($editingMode) {
$link = '<small><a href="'.createURL('tag2tagedit', $precedentTag.'/'.$tag).'" title="'._('Edit link').'">></a> </small>';
} else {
$link = '> ';
}
}
$output = '';
$output.= '<tr>';
$output.= '<td></td>';
$output.= '<td>';
$output.= $level == 1?'<b>':'';
$output.= str_repeat(' ', $level*2) .$link.'<a href="'. sprintf($cat_url, filter($user, 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>';
$output.= $level == 1?'</b>':'';
//$output.= ' - '. $tagstatservice->getMaxDepth($tag, $linkType, $uId);
$synonymTags = $tag2tagservice->getAllLinkedTags($tag, '=', $uId);
$synonymTags = is_array($synonymTags)?$synonymTags:array($synonymTags);
sort($synonymTags);
$synonymList = '';
foreach($synonymTags as $synonymTag) {
//$output.= ", ".$synonymTag;
$synonymList.= $synonymTag.' ';
}
if(count($synonymTags)>0) {
$output.= ', '.$synonymTags[0];
}
if(count($synonymTags)>1) {
$output.= '<span title="'.T_('Synonyms:').' '.$synonymList.'">, etc</span>';
}
/*if($editingMode) {
$output.= ' (';
$output.= '<a href="'.createURL('tag2tagadd', $tag).'" title="'._('Add a subtag').'">+</a>';
if(1) {
$output.= ' - ';
$output.= '<a href="'.createURL('tag2tagdelete', $tag).'">-</a>';
}
$output.= ')';
}*/
$output.= '</td>';
$output.= '</tr>';
$tags = array($tag);
$tags = array_merge($tags, $synonymTags);
foreach($tags as $tag) {
if(!in_array($tag, $stopList)) {
$linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId);
$precedentTag = $tag;
$stopList[] = $tag;
foreach($linkedTags as $linkedTag) {
$displayLinkedTags = displayLinkedTags($linkedTag, $linkType, $uId, $cat_url, $user, $editingMode, $precedentTag, $level + 1, $stopList);
$output.= $displayLinkedTags['output'];
}
if(is_array($displayLinkedTags['stopList'])) {
$stopList = array_merge($stopList, $displayLinkedTags['stopList']);
$stopList = array_unique($stopList);
}
}
}
return array('output' => $output, 'stopList' => $stopList);
}
?>
|