///////////////////////////////////////////////////////////////////////////////////////
// Auto Attendance Block v2.1
//										by Fumi.Iseki  2013/04/14
//										mailto:iseki@solar-system.tuis.ac.jp
//										http://www.nsl.tuis.ac.jp
// 
//	This block/module are modified from Attendance block/module v1.0.8
//								by Dmitry Pupinin, Novosibirsk, Russia.
Sorry. Japanes text only.

注意：
　Version 2.x は 1.x のデータベースと互換性がありません．Version 1.x からアップ
グレードは可能ですが，1.xでの出欠データは 2.xでは正しく表示されません．


概要：
　このブロックとモジュールは Dmitry Pupinin 氏の Attendance block/module を改造
したものです．元々の手動で出席をとるモードに加えて，自動・半自動モードが追加
されています．また手動モードとも組み合わせて，かなり柔軟に出席を取る事が可能です．


機能：
　出席を取るためのブロックとモジュールです．出席の取り方は，手動，自動，半自動の
3種類があります．それぞれ利点と欠点がありますので，用途・環境によって使い分けて
ください．

　自動：ユーザがコースにアクセスした場合に自動で出席が取られます．
		cronなどによりアクセスログをみて出席の確認を取るため，最新の情報を得たい
　　　　場合などにはタイムラグが生じます．ただし，手動でリフレッシュボタンを
　　　　クリックすれば最新の情報を得ることも可能です．
　　　　IPアドレスによる制限を追加できます．
　　　　ログさえ残っていれば，いつでも出席を取り直せます．

　半自動：ユーザが出欠モジュールをクリックすることにより出欠を取ります．
        学生が意識して出欠リンクをクリックする必要があります．
　　　　リアルタイムで出席を確認できます．
　　　　IPアドレス，キーワードによる制限を追加できます．
　　　　同一のマシンからの出席を禁止することもできます．

　手動：教師が手動で点呼を取って記録します．融通が利きますが面倒です．コンピュータ
　　　　を使わない授業や自動・半自動で取った後の修正で使用すると便利でしょう．


　ブロックのみでも作動しますが，モジュールを追加すると，以下の機能が追加されます．
　　１．出席点が評定に加算される．
　　２．自動モードの場合に cronで最新の状態に更新できる．
　　３．半自動モードで出席エントリのリンクとして使用できる





----------------------------------------------------------------------------------------
紛らわしい用語：

	点呼：ユーザが授業に出席しているか確認すること．出欠も同じ意味で使用される場合がある．

	授業（または授業の出欠）：英語では Session. 点呼を取る単位．基本的に，1回の授業で1回の点呼が行われる．
		同一日に同じコース内で複数の授業があっても構わない．ただし，授業の開始時間が重なってはならない．


	点呼方法：
		全体の出欠表での点呼方法： 授業のデフォルトの点呼方法．実際には違う方法（主に手動）で点呼が
		取られる場合もある．種類には，自動，半自動，手動がある．

			自動(Auto)：自動点呼．ユーザがコースにアクセスした場合に自動で出席が取られるモード．
				ただし，確認にタイムラグが生じる

			半自動(Semi-Auto)：ユーザが出欠モジュールをクリックすることにより出欠を取るモード．
				細かい制限を加える事が可能（キーワードなど）

			手動(Manual)：教師が手動で点呼を取って記録するモード．何でも可能．融通が利くが面倒．
				コンピュータを使わない授業や自動・半自動で取った後の修正で使用するのが一番まとも
				な使い方？

		授業の出欠表，または個人の出欠表での点呼方法：実際に点呼を取った方法．種類には，自動，半自動，
		手動，未点呼(Disenable) がある．	

			自動(Auto)：自動点呼で出席が取られた．

			半自動(Semi-Auto)：半自動点呼で出席が取られた．

			手動(Manual)：手動で出席が取られた．

			未点呼(Yet)：まだユーザの点呼が行われていない（ユーザ視点）．省略文字は '未'



  ------
	点呼状態：授業の状態．未点呼，点呼中，完了 がある．
	
　　	未点呼(Not Started)：授業の状態を示す．点呼が未だ開始されていない状態．省略文字は '未'
			同じ言葉を違う意味で使用しているので注意（こちらは授業視点）
			これは的確な用語を思いつけなかったためで，その他の候補としては 未開始，未開講があった．

		点呼中(Open)：授業の状態を示す．点呼が行われている状態．省略文字は '続'
			自動・半自動モードでは授業時間に基づいて自動手に移行するが，手動で
			一人でも設定すると強制的にこの状態（の表示）になる（表示になるだけ）．

　　	完了(Close)：授業の状態を示す．点呼が終了した事を表す．省略文字は '了'
			ただし，前の状態に戻す事も可能（取り直しとか延長も可能）

  -----
	未了(Yet)：ユーザの状態を示す．そのユーザの点呼が行われていない．すなわち出欠がまだ確定
		してない状態．授業の出欠が完了した時点でまだこの状態の場合は，自動的に'欠席'状態へ
　　　　移行する．省略文字は '未'





------------------------------------------------------------------------------
資料（または自分用メモ）

ユーザ	status		called
------------------------------
		P,X,L,E,Y	A,S,M,D

status: 出席状態
	P 出席
	X 欠席
	L 遅刻
	E 早退
	Y 他のユーザは点呼（出欠）が取られているのに，このユーザはまだ点呼（出欠）が取られていない．
	  または，コースに登録した時点で既に点呼が終了している．
	- 授業の点呼（出欠）がまだ開始されていない．プログラム的にはユーザデータのレコードがまだ存在しない．
	

called: 出席を取った方法
	A 自動
	S 半自動
	M 手動
	D 出席が取られていない

特殊な状態
	Y  			D   	出席が取られていない．
	Y  			M   	手動で，出席が取られていない状態に戻された．
	P|X|L|E 	D   	ありえない．起ったとしたらプログラムのバグ．
	Y  			A|S   	ありえない．起ったとしたらプログラムのバグ．
	E			A|S		ありえない．（現バージョンでは）自動，半自動モード時に早退は扱えない



授業	state		method
------------------------------
		C,O,N		A,S,M

method: デフォルトの点呼方法．実際に行われた点呼方法とは違う場合がある．
	実際の点呼方法はユーザの called を参照．
	A 自動
	S 半自動
	M 手動

state: 授業の点呼状態
	C 点呼終了．Closed この状態になったら手動以外では出欠を変更できない
	O 点呼中．Opend
	N まだ点呼が始まっていない．Not Started



クラス	classid
------------------------------
見出し：
	0		"全クラス"		講義を表示指定する場合の見出し．

講義：
	0		"全学生用" 		"出欠から除外"の学生以外の全ての学生に対して出欠が取られる．

学生：
	0		"クラスなし"	"全学生用"の講義のみ出欠が表示される．
	-1		"出欠から除外"	全ての出欠の表示から除外する．



--------------------------------------------------------------------------
