[freo] 閲覧制限の扱いをフィルタリングとその他で分ける
「本体設定」の「閲覧制限」の項目で「制限された記事の表示」を「一覧に表示しない」に設定すると、デフォルトではユーザー登録及びグループによる制限がかかっている記事のほか、フィルタリングされた記事も存在が隠蔽されるようになります。
これを、フィルタリングされた記事とその他の制限で、扱いを別々に設定できるようにする方法です。
なお、プログラム本体を書き換えますので、取り扱いには十分気をつけて下さい。
少しでも疑問や不安を感じる時は、この改造は行わない事をお勧めします。
(1)準備
必ず、本体の設置とプラグインの追加が全て終わってから実行してください。
(2)設定ファイルの編集
configs/view.ini
の11行目辺り、
;restricted_display bool "一覧に表示する|一覧に表示しない"
の直後に、
;filtered_display bool "一覧に表示する|一覧に表示しない"
を追加します。
次に、 configs/view.ini
の最後の行、
;exit
の直前に
;フィルタリングされた記事の表示
filtered_display = Off
を追加します。
これで、フィルタリングされた記事用の設定項目ができました。
(3)プログラム本体の編集
全てのphpファイルを対象に、キーワード「$freo->config['view']['restricted_display']
」で文字列検索を行います。
発見箇所の全てが制限された記事の表示に関わる部分で、変更の対象となります。
後日プラグインを追加するなどして新たに閲覧制限を扱う箇所が増えた時には、その都度、該当する部分に下記変更を行って下さい。
※※※
見つかった部分をエディタで開いてみると、以下のような感じになっているはずです。
(※エントリを扱っている例です。ページを扱う場合は変数名が $entry_~
ではなく $page_~
になります。)
//制限されたエントリーを一覧に表示しない
if (!$freo->config['view']['restricted_display'] and ($freo->user['authority'] != 'root' and $freo->user['authority'] != 'author')) {
$entry_filters = ~
(フィルターが設定されている記事の扱い)
$entry_securities = ~
(ユーザー登録やグループで制限されている記事の扱い)
}
上記の1~2行目をユーザー登録やグループで制限されている記事を扱う部分の前にコピー&ペーストし、上側の if ~の最後を } で閉じます。
//制限されたエントリーを一覧に表示しない
if (!$freo->config['view']['restricted_display'] and ($freo->user['authority'] != 'root' and $freo->user['authority'] != 'author')) {
$entry_filters = ~
(フィルターが設定されている記事の扱い)
}
//制限されたエントリーを一覧に表示しない
if (!$freo->config['view']['restricted_display'] and ($freo->user['authority'] != 'root' and $freo->user['authority'] != 'author')) {
$entry_securities = ~
(ユーザー登録やグループで制限されている記事の扱い)
}
これで、元々1つだった条件文が2つになりました。
次に、上の if 行中の「restricted_display」を「filtered_display」に書き換えます。
コメントの解説も、分かり易く変えておいても良いかもしれません。
//フィルタリングされたエントリーを一覧に表示しない
if (!$freo->config['view']['filtered_display'] and ($freo->user['authority'] != 'root' and $freo->user['authority'] != 'author')) {
$entry_filters = ~
(フィルターが設定されている記事の扱い)
}
//制限されたエントリーを一覧に表示しない
if (!$freo->config['view']['restricted_display'] and ($freo->user['authority'] != 'root' and $freo->user['authority'] != 'author')) {
$entry_securities = ~
(ユーザー登録やグループで制限されている記事の扱い)
}
この変更を、検索で発見した全ての箇所に施します。
(4)設定の変更と反映
設定の変更は、本体設定>閲覧制限 で行います。
設定を変えた後、適当なエントリとページを各1つずつ更新すると、タグの集計など一部設定変更だけでは情報が更新されない部分にも設定内容が反映されます。