質問箱/2036

カテゴリ
サマリリンク情報は公開?
バージョン1.4.2
投稿者コチ
状態完了
投稿日2004-02-14 (SAT) 21:18:01

質問

#relatedを使用した際に、閲覧権限のないページからのリンク情報も表示されるようです。被リンク情報はリンク元ページの内容の一部もしくは全部だと思いますが、あるページが「どのページへのリンクを含んでいるか」という情報も、ページ名や更新日時と同様に公開情報と扱ってよいということでしょうか?

現在#relatedに似た機能のプラグインを作っているのですが、閲覧制限がかかっている場合のリンク情報の扱いが微妙だったので質問させていただきます。

回答

  • reimy 2004-02-14 (SAT) 22:01:23

    質問箱/269、質問箱/231?参照。#relatedで表示されるページ名は、閲覧権限の有無とは無関係です。関係するのは$non_listだけです。

    • reimy 2004-02-14 (SAT) 22:11:44

      (ちょっと脱線しますが)じゃあ、$non_listのページは非公開情報なのか…と言われると、実際はcmd=filelistで表示されるので不完全な非公開情報でしかありません(list.inc.phpを見ると、わざとそうしているようです)。

      list.inc.phpの一部を下記のように変更すれば、cmd=filelistでも$non_listは表示されなくなります。

      // 一覧の取得
      function get_list($withfilename)
      {
      	global $non_list,$whatsnew;
      	
      	$pages = array_diff(get_existpages(),array($whatsnew));
      -	if (!$withfilename)
      -	{
      		$pages = array_diff($pages,preg_grep("/$non_list/",$pages));
      -	}
      	if (count($pages) == 0)
  • reimy 2004-02-14 (SAT) 22:33:28

    ということで、閲覧規制したページを#relatedで表示しないようにするには、$non_listにも指定しておく必要があるということです。

  • コチ 2004-02-14 (SAT) 23:00:17

    ありがとうございます。つまり、閲覧制限を設定しただけではそのページの内容の一部が#ralatedなどで外に漏れることがあり*1、それを防ぐためには$non_listでページの存在自体を隠す必要がある*2ということでしょうか。個人的には上記の理由で#relatedでの表示の有無は$non_listよりも閲覧権限の方に依存するべきかと思いましたが、仕様という事で了解いたしました。製作中のプラグインもそれに従って作製することにします。

    • 「$non_listと閲覧権限の双方に依存すべき」に訂正いたします。--コチ
  • reimy 2004-02-14 (SAT) 23:07:46

    #relatedを閲覧制限に依存させにくいのは、閲覧制限はユーザーグループ($auth_users)によって複数存在しうるからです。Aというグループにとっては閲覧制限ページであっても、Bというグループにとっては閲覧制限ページでない場合もあるわけで…

       foreach ($links as $page=>$lastmod)
       {
           if (preg_match("/$non_list/",$page))
           {
               continue;
           }
    +      if (read_auth($page) == FALSE)
    +      {
    +          continue;
    +       }
           $r_page = rawurlencode($page);

    まあ、やるとすればこうなるでしょうけど、この場合、AまたはBいずれかの閲覧制限になっている場合、表示されなくなります。Aの人にとっては閲覧できるはずのページが#relatedで表示されない、Bの人にとっては閲覧できるはずのページが#relatedで表示されない、ということが起こります。

    #relatedで表示されないようにしても、RecentChangesや一覧で表示されてしまうから意味ないと思うんだけどなあ…。$non_listなら#related、RecentChanges、一覧のいずれでも表示されません。

  • コチ 2004-02-15 (SUN) 13:49:52

    うーん…では表現を変えます。例えばFrontPageに#ralatedと書いて表示される内容は、単語検索で”FrontPage”を検索した結果の大部分を含んでいますよね?これは$search_authを無視し得ることに当たらないでしょうか?*3

  • reimy 2004-02-15 (SUN) 14:44:42

    上に書いたように、「Aの人にとっては閲覧できるはずのページが#relatedで表示されない、Bの人にとっては閲覧できるはずのページが#relatedで表示されない」ことが起こってしまいます。そのほうがはるかに不便です。

    検索については、$non_listに対しては$search_non_listで、閲覧制限ページについては$search_authで設定できるので、何の問題もありません。

    閲覧制限ページを$non_listと同じ扱いにしたければ、$non_listに閲覧制限ページも指定しておけば済むことです*4

    • コチ 2004-02-15 (SUN) 14:55:03

      了解しました。ありがとうございます。



*1 autolinkをonにしている場合は特に
*2 あるいはカスタマイズするか←make_related()で$non_listにマッチさせるのと同時にread_auth()で判定…ではダメ?
*3 仕様という事でご解答いただいていますが、RecentChangesや一覧と#relatedの違いを明らかにするために例をあげさせていただきます。
*4 AutoLinkについても、:config/AutoLinkで制御できます。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-08-21 (土) 01:00:33
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.365 sec.

OSDN