OSDN Git Service

BugTrack2/171: 'get_source' can return flat value.
[pukiwiki/pukiwiki.git] / lib / link.php
index 42cffba..cdcf345 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 // PukiWiki - Yet another WikiWikiWeb clone
-// $Id: link.php,v 1.5 2005/04/23 00:13:00 henoheno Exp $
+// $Id: link.php,v 1.11 2006/04/06 03:00:00 teanan Exp $
+// Copyright (C) 2003-2006 PukiWiki Developers Team
+// License: GPL v2 or (at your option) any later version
 //
 // Backlinks / AutoLinks related functions
 
@@ -140,10 +142,8 @@ function links_init()
        foreach (get_existfiles(CACHE_DIR, '.rel') as $cache)
                unlink($cache);
 
-       $pages = get_existpages();
        $ref   = array(); // »²¾È¸µ
-       $ref_notauto = array();
-       foreach ($pages as $page) {
+       foreach (get_existpages() as $page) {
                if ($page == $whatsnew) continue;
 
                $rel   = array(); // »²¾ÈÀè
@@ -154,10 +154,10 @@ function links_init()
                                continue;
 
                        $rel[] = $_obj->name;
-                       if (! is_a($_obj, 'Link_autolink')) {
-                               $ref_notauto[$_obj->name][$page] = TRUE;
-                       }
-                       $ref[$_obj->name][] = $page;
+                       if (! isset($ref[$_obj->name][$page]))
+                               $ref[$_obj->name][$page] = 1;
+                       if (! is_a($_obj, 'Link_autolink'))
+                               $ref[$_obj->name][$page] = 0;
                }
                $rel = array_unique($rel);
                if (! empty($rel)) {
@@ -169,16 +169,10 @@ function links_init()
        }
 
        foreach ($ref as $page=>$arr) {
-               if (empty($arr)) continue;
-
-               $arr = array_unique($arr);
                $fp  = fopen(CACHE_DIR . encode($page) . '.ref', 'w')
                        or die_message('cannot write ' . htmlspecialchars(CACHE_DIR . encode($page) . '.ref'));
-               foreach ($arr as $ref_page) {
-                       $ref_auto = (isset($ref_notauto[$page])
-                               && isset($ref_notauto[$page][$ref_page])) ? 0 : 1;
-                       fputs($fp, "$ref_page\t$ref_auto\n");
-               }
+               foreach ($arr as $ref_page=>$ref_auto)
+                       fputs($fp, $ref_page . "\t" . $ref_auto . "\n");
                fclose($fp);
        }
 }
@@ -232,7 +226,7 @@ function links_delete($page, $del)
                        }
                }
                unlink($ref_file);
-               if ($is_page && ! $all_auto && $ref != '') {
+               if (($is_page || ! $all_auto) && $ref != '') {
                        $fp = fopen($ref_file, 'w')
                                or die_message('cannot write ' . htmlspecialchars($ref_file));
                        fputs($fp, $ref);
@@ -248,6 +242,7 @@ function & links_get_objects($page, $refresh = FALSE)
        if (! isset($obj) || $refresh)
                $obj = & new InlineConverter(NULL, array('note'));
 
-       return $obj->get_objects(join('', preg_grep('/^(?!\/\/|\s)./', get_source($page))), $page);
+       $result = $obj->get_objects(join('', preg_grep('/^(?!\/\/|\s)./', get_source($page))), $page);
+       return $result;
 }
 ?>