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 = SemanticScuttle_Service_Factory::get('Tag2Tag'); $tagstatservice = SemanticScuttle_Service_Factory::get('TagStat'); // link '>' if ($level > 1) { if ($editingMode) { $link = '<small><a href="' . createURL('tag2tagedit', $precedentTag . '/' . $tag) . '" title="' . _('Edit link') . '">></a> </small>'; } else { $link = '> '; } } 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 (isset($displayLinkedTags) && is_array($displayLinkedTags['stopList'])) { $stopList = array_merge($stopList, $displayLinkedTags['stopList']); $stopList = array_unique($stopList); } } } return array('output' => $output, 'stopList' => $stopList); }
<div id="related"> <table> <?php if ($editingMode) { echo '<tr><td></td><td>'; echo ' (<a href="' . createURL('tag2tagadd', 'menu') . '" rel="tag">' . T_('Add new link') . '</a>) '; echo ' (<a href="' . createURL('tag2tagdelete', 'menu') . '" rel="tag">' . T_('Delete link') . '</a>)'; echo '</td></tr>'; } $stopList = array(); foreach ($menuTags as $menuTag) { $tag = $menuTag['tag']; if (!in_array($tag, $stopList)) { $displayLinkedTags = displayLinkedTags($tag, '>', $userid, $cat_url, $user, $editingMode, null, 1); echo $displayLinkedTags['output']; if (is_array($displayLinkedTags['stopList'])) { $stopList = array_merge($stopList, $displayLinkedTags['stopList']); } } } ?> </table> <?php $cUser = $userservice->getUser($userid); if ($userid > 0) { if ($userid == $logged_on_userid) { ?> <p style="text-align:right"><a href="<?php