예제 #1
0
function plugin_related_action()
{
    global $vars, $defaultpage, $_related_messages;
    $_page = isset($vars['page']) ? $vars['page'] : null;
    if (empty($_page)) {
        $_page = $defaultpage;
    }
    if (!IS_AJAX) {
        // Result
        $retval[] = '<a href="' . get_page_uri($_page) . '">' . sprintf($_related_messages['msg_return'], Utility::htmlsc($_page)) . '</a><br />' . "\n";
    }
    // Get related from cache
    $links = new Relational($_page);
    $data = $links->getRelated();
    if (empty($data)) {
        $retval[] = '<ul><li>' . $_related_messages['msg_nomatch'] . '</li></ul>' . "\n";
    } else {
        // Hide by array keys (not values)
        foreach (array_keys($data) as $page) {
            $wiki = Factory::Wiki($page);
            if (!$wiki->isEditable() || $wiki->isHidden()) {
                unset($data[$page]);
            }
        }
        unset($wiki);
        // Show count($data)?
        ksort($data, SORT_STRING);
        $retval[] = '<ul class="list_pages">' . "\n";
        foreach ($data as $page => $time) {
            $wiki = Factory::Wiki($page);
            $retval[] = ' <li><a href="' . $wiki->uri() . '">' . Utility::htmlsc($page) . '</a> ' . $wiki->passage(true, true) . '</li>';
        }
        $retval[] .= '</ul>' . "\n";
    }
    return array('msg' => sprintf($_related_messages['msg'], Utility::htmlsc($_page)), 'body' => join("\n", $retval));
}
예제 #2
0
파일: Wiki.php 프로젝트: logue/pukiwiki_adv
 /**
  * 関連リンクを取得
  * @return array
  */
 public function related()
 {
     global $related;
     // Get repated pages from DB
     $link = new Relational($this->page);
     $ret = $related + $link->getRelated();
     ksort($ret, SORT_NATURAL);
     return $ret;
 }
예제 #3
0
 /**
  * Returns a list of backlinks of a Wiki page.
  * このページにリンクしているページの配列を返す。
  * @param string $pagename ページ名
  * @return array
  */
 public function getBackLinks($pagename)
 {
     $links = new Relational($pagename);
     return $links->getRelated();
 }