Skip to content

mfakane/Megalopolis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Megalopolis

概要
====

点数評価とコメントが可能な、小説投稿用の掲示板スクリプトです。

主な機能
--------

* 投稿、コメント、点数による評価
* 本文のページ分け可、HTML 可
* 評価の平均点または 5 を基準にした Rate を算出 (5 を基準にした Rate は、((合計得点 + 25) / ((評価数 + 1) * 50)) * 10 で算出されます)
* 投稿者による分類タグ付けでのカテゴライズ
* ランダム作品表示とランダムタグ表示
* 全タグの一覧、全作者の一覧
* 作者を指定した作品一覧
* それなりの検索
* 横書き / 縦書きの切り替え
* ある程度の Megalith 形式ログと URL のサポート
* RSS 2.0 と Atom 形式でのフィード出力

作品集とは
----------

作品が一定数投稿されると一覧のページを分割します。このページ単位を作品集と呼称します。
単純なページ分割ではなく、一度作品に割り当てられた作品集番号は不変です。
そのため、例えば投稿された作品より前の作品集で作品の削除が起こったとしても、他の作品の所属作品集は変化しません。

評価とコメント
--------------

作品に対して閲覧者は簡易評価を使用した得点評価、得点を使用しないコメント、得点とコメント両方を付与するコメント付き評価ができます。
同じ作品に対しコメントは何度でも可能ですが、評価は簡易評価、コメント付き評価いずれか一回しか行えません。
作品の評価数の数値は コメント付き評価/総評価 で表されます。

想定された環境
==============

サーバ側
--------

* PHP 5.2.5 以上

クライアント側
--------------

* HTML5 および CSS2 を正常に解釈するモダンブラウザ
  IE6 および 7 は対象外となります
* iPhone および iPod touch については専用の出力となります
* 一般的な携帯電話については簡易出力となります

環境設定
========

設置
----

以下のファイルおよびディレクトリは、書き換えを許可してください。(パーミッション 666 や 777 など)

* store/
* .htaccess

設定項目
--------

config.php を編集することにより設定します。
管理者用パスワードは必ず設定してください。

前バージョンからの更新
----------------------

store/, .htaccess および config.php 以外を上書きすることでアップデートが可能です。
設定項目の追加がある場合、config.php を新しいものから再設定する必要があります。
再設定せずに使用した場合、新しい設定項目についてはデフォルトの設定が使用されます。

URL と .htaccess の設定
-----------------------

PATH_INFO が使用可能な環境の場合、/index.php/2 などでアクセス可能になります。
使用不能な場合、同じ URL へは /index.php?path=/2 でアクセスすることになります。

.htaccess および mod_rewrite が使用可能な環境の場合、付属の .htaccess を使用し URL の index.php を省略できます。 
たとえば /index.php/2 や /index.php?path=/2 となるところを /2 などでアクセス可能にできます。

使わない場合は、.htaccess を削除してしまってもかまいません。

管理者パスワードの設定
----------------------

環境設定 $config->adminHash に正しくハッシュを設定するには、以下の手順を実行します。

1. $config->utilEnabled を true にする
2. 設置されたスクリプトの /util/hash にアクセスする
3. ボックスに設定したい任意のパスワードを入力し、[算出] をクリックする
4. 表示されたハッシュを $config->adminHash に書く

管理用設定ツール
----------------

設置後の設定等を支援するためのモードです。
環境設定 $config->utilEnabled が true の場合のみ使用可能です。
不要な場合は無効化することを推奨します。

以下のツールは、管理者パスワードなしで使用可能です。

* パスワード用ハッシュ算出 (/util/hash)

以下のツールは、使用に管理者パスワードの入力を求められます。

* Megalith 形式のログの変換ツール (/util/convert)
* Megalith 形式のタグ順のインポートツール (/util/convert/tags)
* 検索インデックスの再生成ツール (/util/reindex)

管理者権限
==========

管理者ログイン
--------------

ページフッタに存在するログインメニューより管理者ログインが可能です。
管理者ログインにより、以下の行動が可能になります。

* 作品や名前、評価数、コメントなどを表示設定に関わらず表示
* 投稿元ホストの表示
* 作品、評価、コメントの一括削除
* 禁止ワードの使用
* 管理用ツールまたは管理者用設定ツールの使用 (/util またはフッタの 管理用ツール より)

管理者による編集
----------------

管理者ログイン中であるか、編集や削除画面にて編集キーを求められた際管理者パスワードを使用することで
元の編集キーによらず作品の編集やコメントの削除などが可能です。

データストア
============

通常、store/ 以下に *.sqlite の SQLite データベースファイルが作成され、そこにログが記録されます。

データストアに SQLite ファイルではなく MySQL データベースを使用する
-------------------------------------------------------------------

Megalopolis は通常 store/ 以下に SQLite データベースファイルを作成しデータを記録しますが、
規模が大きいなどの理由で通常の DBMS を用いたい場合、MySQL を使用できます。
MySQL にデータベースを作成し、レコードやテーブルが操作可能なように権限設定したユーザを追加した後、環境設定の $config->dataStore を以下のいずれかに設定します。

1. new MySQLDataStore("データベース名", array("ホスト名", ポート), "ユーザ名", "パスワード")
2. new MySQLDataStore("データベース名", "UNIX ソケットパス", "ユーザ名", "パスワード");

ポート番号は通常 3306 です。UNIX ソケットパスは通常 /tmp/mysql.sock です。
ホスト名にローカルホストを指定する場合、localhost よりも 127.0.0.1 と指定したほうが接続が速い場合があります。


Megalith からの移行
===================

Megalith http://9.dotpp.net/software/megalith/ からのログ変換機能を有しています。
二種類の方法があります。

Megalith のログを一括変換する
-----------------------------

Megalith 形式のログの変換ツール を使用し Megalopolis へログを一括変換します。
ログの容量によっては長い時間がかかることがありますが、Megalith で何らかの原因で作品集から外れてしまった作品も
再度作品集に登録できる可能性があります。

1. Megalith/ ディレクトリを作成し以下に dat/ com/ aft/ sub/ ログディレクトリをコピーします。
2. 管理者用パスワードを使用し、スクリプトの /util/convert へログインします。
3. 変換を開始します。
   変換中に失敗する場合は、環境設定の $config->convertDivision の値を変更してみるか、諦めてみてください。

なおすでに変換済みである作品は変換スキップされますが、変換中にエラーが発生した作品が存在し、残骸が残っている場合、
既に存在する作品であると判定されてスキップされる可能性もあります。
変換中にエラーが発生した場合はエラーメッセージの作品番号 id: および作品集番号 subject: を持つ作品を確認し、一度削除するなどしてください。
(作品ページにアクセスできない場合、作品集の作品一覧の管理者ログインによる一括削除機能をご利用ください)

一括変換にはいくつかのオプションがあります。

* 更新日時が変換前と同一の作品の再変換を許可する
  通常変換済みの作品はスキップされますが、このオプションを有効にすることで変換済みであるが、
  変換してから一度も編集されてない作品に対して再度変換を実行することができます。
  更新日時の制限は、変換後に作品が一度でも編集されていた場合、再変換により編集内容が巻き戻ることを防ぐためのものです。
* 改行変換フラグが存在しない古いログのみ処理する
  Megalopolis 第14版 以前の変換処理において、Megalith 第8版 以前で作られたログの改行を倍増させるバグがあったため、
  該当するログを再度変換処理するためのオプションです。
* Windows 拡張文字を含むログのみ処理する
  Megalopolis 第15版 以前の変換処理において、Windows 拡張文字 (まるきゅー、たちざき、ナンバー、ローマ数字など) が正しく変換されず "?" になるバグがあったため、
  該当するログを再度変換処理するためのオプションです。

Megalith ログを必要に応じて読み込みその場で変換する
---------------------------------------------------

Megalopolis から必要になったときに Megalith のログを読み込み使用します。
作品へアクセスされたときにその作品を変換し、更新されたデータは Megalopolis ログに記録されます。
一括変換である必要性がない場合、基本的にこちらの方法を推奨いたします。

1. Megalith/ ディレクトリを作成し以下に dat/ com/ aft/ sub/ ログディレクトリをコピーします。
2. 環境設定の $config->convertOnDemand を true にします。

その他
------

* Megalith 形式の ?log=* や ?mode=read&key=*&log=* へアクセスすると Megalopolis 形式の URL へリダイレクトされます。
* Megalopolis 第16版にてタグの順番が保存されるようになりましたが、
  その際Megalith のログのタグの順番をインポートしたい場合、Megalith 形式のタグ順のインポートツール をご利用ください。
  既存のタグに順番が適用されます。

検索インデックスについて
========================

Megalopolis は検索のために文章を分解したインデックスを作成します。
通常これは作品内外に含まれる全テキストの約二倍、または各テキストに対して最大容量制限の約二倍になります。環境設定 $config->registerBodyToSearchIndex を false にし、
本文をインデックスに記録しないことで容量を削減することができますが、その場合本文への検索は使用できません。
また、環境設定 $config->maximumSearchIndexLength を変更することで最大容量制限を調整できます。

検索インデックスの再生成
------------------------

環境設定 $config->registerBodyToSearchIndex を変更した時などは [既存の検索インデックスをクリアしてから再生成する] の
オプションを付けて検索インデックスを再生成することで過去の作品に対しても反映できます。
また、検索インデックスの破損など、何らかの原因で検索に異常に時間がかかる場合や、検索ができない場合などにも
[既存の検索インデックスをクリアしてから再生成する] 付きの再生成は有効です。

検索インデックスの再生成は長い時間がかかることがあります。注意してください。
[既存の検索インデックスをクリアしてから再生成する] が指定されていない場合、すでに検索インデックスに登録されている作品は処理しません。

検索インデックスのアップグレード
--------------------------------

Megalopolis 第14版より、データベースの全文検索機能を使用する、より効率的な新しい検索システムを追加しました。
以前の形式の検索インデックスが存在する場合は以前と同等の検索システムが使用されます。
[既存の検索インデックスをクリアしてから再生成する] のオプションを付けてインデックスを再生成することで、新しい形式にアップグレードできます。

新しい形式を利用するには、サーバにインストールされている PHP で使用されている SQLite が全文検索 FTS3 または FTS4 をサポートするものであるか、
データストアに MySQL を使用している必要があります。全文検索が利用不可能な場合は新しい形式は使用できず、以前の形式が使用されます。
どちらの形式が使用されていて、利用可能であるかは管理者ログイン後、設定情報の [currentSearch] および [availableSearch] から確認できます。
[currentSearch] が classic のとき、[availableSearch] が classic でないときはアップグレードが可能です。

その他
======

RSS, Atom, CSV 出力
-------------------

作品集は RSS, Atom, CSV 出力に対応しています。
0.rss にアクセスすれば最新作品集の RSS が取得できます。
15.csv であれば作品集 15 の CSV 形式の一覧がダウンロードできます。

任意の HTML 文章を Megalopolis のコンテンツとして表示する
---------------------------------------------------------

store/notice/ 以下に任意の .txt ファイルを置くことで、スクリプトの /notice/ から表示できます。
例えば、store/notice/sample.txt はスクリプトの /notice/sample から表示できます。
また、HTML タグが使用できます。

キャッシュ
----------

Megalopolis は作品集や作品閲覧など一部のページで Last-Modified および ETag ヘッダを発行することでブラウザにデータをキャッシュさせます。
これによって再表示に必要な時間が削減されますが、config.php を含む Megalopolis を構成するファイルの一部を書き換えると既存のキャッシュが無効になります。
これはアップデートや設定の変更を反映させるためのものです。

注意
----

* 縦書き表示は IE もしくは Mac 上の Safari において一番きれいに表示されます。
* .htaccess などでアクセスの制限が可能な環境の場合、セキュリティなどの理由により
  store/ や req/、Megalith/ 以下へのアクセスを制限することを推奨します。
  付属の .htaccess では既定で *.sqlite ファイルへのアクセスを制限する設定がなされています。

更新履歴
--------

changelog.txt をご覧ください。

ライセンス
----------

本プログラムはフリーウェアです。完全に無保証で提供されるものであり
これを使用したことにより発生した、または発生させた、あるいは
発生させられたなどしたいかなる問題に関して製作者は一切の責任を負いません。
別途ライセンスが明記されている場所またはファイルを除き、使用者は本プログラムを
Do What The Fuck You Want To Public License, Version 2 (WTFPL) および自らの責任において
自由に複製、改変、再配布、などが可能です。WTFPL についての詳細は次の URL か、
以下の条文を参照してください。http://sam.zoy.org/wtfpl/

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 

  0. You just DO WHAT THE FUCK YOU WANT TO.

ライブラリ
----------

* jQuery http://jquery.com/ および jQuery Mobile http://jquerymobile.com/ を使用しています。
* Simple HTML Parser http://sourceforge.net/projects/simplehtmldom/ を使用しています。
* 一部の PC 向けに縦書きエンジンとして 竹取 JS http://taketori.org/js.html を使用しています。
* 携帯向けに ChocolateChip-UI http://www.chocolatechip-ui.com/ のアイコンを使用しています。

連絡先
------

* 製作: COAH96KoxU <queue@glasscore.net> http://github.com/mfakane/Megalopolis