summaryrefslogtreecommitdiff
path: root/templates/sidebar.block.linked.php
blob: 101e0de60a9dbb8d93d313e1681e299c71c90e09 (plain)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
$userservice =& ServiceFactory::getServiceInstance('UserService');

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('&nbsp;', $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);
}

$logged_on_userid = $userservice->getCurrentUserId();
if ($logged_on_userid === false) {
    $logged_on_userid = NULL;
}

$explodedTags = array();
if ($currenttag) {
    $explodedTags = explode('+', $currenttag);
} else {
    if($summarizeLinkedTags == true) {
	$orphewTags = $tag2tagservice->getOrphewTags('>', $userid, 4, "nb");
    } else {
        $orphewTags = $tag2tagservice->getOrphewTags('>', $userid);
    }

    foreach($orphewTags as $orphewTag) {
	$explodedTags[] = $orphewTag['tag'];
    }
}

?>

<h2>
<?php
    echo T_('Linked Tags').' ';
    //if($userid != null) {
	$cUser = $userservice->getUser($userid);
	echo '<a href="'.createURL('alltags', $cUser['username']).'">('.T_('plus').')</a>';
    //}
?>
</h2>

<?php if(count($explodedTags)>0):?>

<div id="linked">
    <table>
    <?php
	if(($logged_on_userid != null) && ($userid === $logged_on_userid)) {
	    $editingMode = true;
	} else {
	    $editingMode = false;
	}

	if($editingMode) {
	    echo '<tr><td></td><td>';
	    echo ' (<a href="'. createURL('tag2tagadd','') .'" rel="tag">'.T_('Add new link').'</a>) ';
	    echo ' (<a href="'. createURL('tag2tagdelete','') .'" rel="tag">'.T_('Delete link').'</a>)';
	    echo '</td></tr>';
	}

	if(strlen($user)==0) {
	    $cat_url = createURL('tags', '%2$s');
	}

	$stopList = array();
	foreach($explodedTags as $explodedTag) {
	    if(!in_array($explodedTag, $stopList)) {
		// fathers tag
		$fatherTags = $tag2tagservice->getLinkedTags($explodedTag, '>', $userid, true);
		if(count($fatherTags)>0) {
		    foreach($fatherTags as $fatherTag) {
			echo '<tr><td></td><td>';
			echo '<a href="'. sprintf($cat_url, filter($user, 'url'), filter($fatherTag, 'url')) .'" rel="tag">('. filter($fatherTag) .')</a>';
			echo '</td></tr>';
		    }
		}

		$displayLinkedTags = displayLinkedTags($explodedTag, '>', $userid, $cat_url, $user, $editingMode, null, 1);
		echo $displayLinkedTags['output'];
		if(is_array($displayLinkedTags['stopList'])) {
	    	    $stopList = array_merge($stopList, $displayLinkedTags['stopList']);
		}
	    }

	}
    ?>
    </table>
</div>

<?php endif?>