**
** README
**
** このファイルにはコミットごとに変更点とファイル名を記述します。
**
-- 2010-03-29
1) グローバルエラー機能を使えるように実装しました。
   spider_HttpRequestクラスのaddGlobalError($message)メソッドで追加したエラーメッセージは次回
   リクエスト時までセッションに保存されて復元されます。
   再リクエスト時にセッションからは削除されます。
2) util_Mailのreturn_path不具合を修正しました。
  return_pathが未設定の場合にfromのメールアドレス部分だけがアドレスが設定されるように修正しました。

-- 2010-03-26
1) リバースプロキシ経由の場合のリダイレクト不具合を修正しました。
2) テンプレート内でのXML宣言をechoしなくても記述できるように自動置換機能を追加しました。
   テンプレートの拡張子はなんでも構いませんので開発上の都合からphpから一般的なtplに変更することにしました。
3) ダイナミックウィジェットに関する機能の変更
   ページダイレクト指定のウィジェットをウィジェット名.ページ名のファイルとするように変更しました。
4) 時流に従って配布版のドキュメントルート用フォルダ名をhtdocsに変更しました

-- 2010-01-20
1) GETパラメータによるデバッグコマンドを実装しました
   spiderdebugcmd=viewmoduletime
   モジュール実行時間がダンプされます。
2) binファイルの起点パスを設置上位フォルダからに変更しました。
  define.inc.phpのSPIDER_USE_ABSOLUTE_BIN_PATHをtrueにするとこれまでどおりの動作となります。
3) movaサービスの終了に伴い配布版からDoCoMo1.0分岐の記述を削除しました。
4) php.iniのbase_dirで読み込み階層が制限されていた場合の対策として
  spiderフォルダ検索をspider.inc.php設置の上位ディレクトリまでとしました。
5) spider_HttpRequestのwriteLogメソッドでログURIを記述できるように引数追加しました。
6) RewriteDocumentRootの実装不具合を修正しました。
7) setタグの記述方法でオブジェクトのメンバ指定子を許可するよう変更しました。

-- 2009-07-01
1) PHP5.1.6でDoCoMoのxhtmlヘッダが正しく送信されない問題の修正
   PHP5.1.6だと、ob_get_clean()呼び出し時に勝手にContent-Type: text/html;がセットされ、
   以降の行にheader関数でContent-Typeを指定する記述をしても上書きできていなかった為
   DoCoMoのxhtml指定ヘッダを送信する行をビルドファイル冒頭に移動するよう修正
   【変更ファイル】
   lib/spider/Builder.class.php
   lib/spider/tags/Charset.class.php
-- 2009-06-29
1) util_Mailクラスの添付ファイル名のエンコーディングが正しく行われていなかった問題の修正

-- 2009-06-25
1) suPHPなどの特殊環境に対応する為、spiderが動的に作成する一時ファイルや一時フォルダのパーミッションを
   define.inc.phpで定義できるようにしました。
2) DATAフォルダをspiderに名称変更しました。これまで通りDATAでも動作します

-- 2009-04-22
1) spiderのDATAフォルダをspider.inc.php配置フォルダからさかのぼって自動認識するようにしました。
2) HttpRequestのセッションの適正化メソッドで、セッションスコープの判断をREQUEST_URIで行っており
   ディレクトリインデックスにファイル名なしでアクセスした場合のセッション挙動が同フォルダ内にも関わらずひとつ
   上の階層と判断されてしまい問題が発生する為PHP_SELFで判断するよう修正しました。

-- 2009-04-21
1) HttpRequestにてセッション取得メソッドで無限ループが発生する不具合を修正しました。
   併せてセッション変数を削除するメソッドを追加しました。

-- 2009-04-17
バージョン番号を1.0.00とし正式リリースとします。
以降の機能追加・変更はマイナーバージョンアップとしバグフィックス対応をメジャー・マイナーバージョンをあげない
メンテナンスフェーズに入ります。

-- 2009-04-17
1) ログ出力周りの整理を行いました。ModuleBaseにあったログ出力機能をHttpRequestに移しました。
2) ログ出力レベルの定義を追加・変更しました。
   併せてsyslogdへのログ出力にも対応しました。定数SYSTEM_LOG_TYPEを定義してSPIDER_LOG_TYPE_SYSLOGを設定すれば
   システムログへのログ送出へ切り替わります。unique_setting.inc.php内もしくは他ファイルを読み込ませて定義してください。
   本バージョンではsyslogdへのident文字列はspiderで固定です。

-- 2009-04-16
1) 公開フォルダ直下に配置した.defaultファイルが有効にならない問題の修正
   lib/spider/Builder.class.phpを修正しました。
   
-- 2009-04-15
1) コアのエラーメッセージをDATA/messages.inc.phpにハッシュで定義しました。

-- 2009-04-14
1) spider_HttpRequestクラスにセッション制御メソッドを追加しました
   リクエストURIの階層ごとにセッションの有効無効を自動で制御できます。
   フォルダ階層を抜けた場合はセッションを無効化します。
   これによりモジュールで利用するセッション記憶域の無制限な増大を避けることができます。

-- 2009-04-13
1) setタグでハッシュ、メンバの値がクォートされていた場合に正しく判別できていなかった問題を修正しました。
   lib/spider/tags/SetAttribute.class.php
   
-- 2009-04-10
1) 本体とはあまり関係ありませんがphp5でフォーム名からハッシュを入力できていない問題があるため
   lib/util/Mail.class.php
   lib/util/mail/PHP.class.php
   lib/util/mail/Sendmail.class.php
   lib/util/mail/SMTP.class.php
   を変更しました。

2) 本体とはあまり関係ありませんが
   lib/spider/module/AutoEncode.class.phpで配列入力をエンコード出来ていなかった問題を修正しました。
   lib/spider/module/AutoFormat.class.phpを追加しました。

3) ModuleBase.class.phpのログ出力をdefineで定義して整えました。

-- 2009-04-07
1) ModuleBaseクラスの名称をspider_ModuleBaseクラスに変更しました。

-- 2009-04-06
1) spider.inc.phpでユーザー公開ディレクトリに設置した場合にドキュメントルートの判別を
   ホストのドキュメントルートにしていた為設置URIを正しく認識できなかった問題の修正
   
-- 2009-03-31
1) .defaultファイルのタイムスタンプ比較及び存在確認がホットビルドから漏れていたので追加
   DATA/lib/spider/Builder.class.php

2) presetタグをSetAttribute.class.phpに追加
   モジュール実行前処理として、固定文字列、固定数値をrequest属性に設定してページを実行できます。
   例） {preset:database.name 'framework spider !'}
   固定文字列はシングルクォーテーションで囲ってください。

3) TagBase.class.phpのsplitOptionBySpaceメソッドでクォート文字列内の文字列連結時にスペースを
   復元していなかった問題の修正

-- 2009-03-30
1) ページ内で$request->setAttributeメソッドで値をセットした場合に$GLOBALSに設定しない為
   if/foreach/writeで問題が発生する不具合を修正

2) Noticeの修正
   PHP5のerror_reportingをE_ALLで実行した際にNoticeやWarningが出る箇所を修正

-- 2009-03-27
1)この機会しかないと思ったのでクラス名の変更を行いました。
   ・ExecutableFileCreator.class.php   ->  Builder.class.php
   ・Conttoller   -> spider_Controller
   ・HttpOutput   -> spider_HttpOutput
   ・HttpRequest  -> spider_HttpRequest

   内部的な変更なのでコアなプログラム変更を行っているユーザ以外には影響ありません。

2) TagBaseクラスでタグコードをネイティブコードに変更するメソッドを修正しました。

3) writeタグの修正をおこないました。::で配列要素やオブジェクトメンバを指定する場合をは旧ロジックで
   呼び出しを->メンバ名、['添え字']で指定する場合は、階層に関係なくPHPネイティブコードの許す限り記述できる
   ように機能を変更しました。

-- 2009-03-26
1) OutputHtmlタグで出力するファイルパスがWindowsで不具合を起こす問題の修正

2) TagBaseクラスのリファクタリング
   今後に備え、デフォルト動作のシングルタグ用ロジックを別メソッドに切り分け
   オプション文字列をスペース区切りクォート配慮して配列に分割するユーティリティメソッドsplitOptionBySpaceを追加

3) ifタグのリファクタリングと機能強化
   ifタグに新しい解析ロジックを導入。これにより{else-if:}機能を実装
   新しいロジックでは[オブジェクト]::[メンバ名]もしくは[ハッシュ]::[要素名]での変数指定が行えない。
   オブジェクトの場合は->メンバ指定子で、ハッシュや配列の場合は[添え字]で指定する必要がある。
   この為、下位互換目的で::が条件文字列に含まれていると旧ロジックで解析するようにしてあります。
   
   ::で要素やメンバ指定を行わない書式であれば

   ・ グローバル関数及びオブジェクトメソッド、オブジェクトメンバは自由に呼び出せます。
      ただし、オブジェクトメンバ変数を明示的に呼び出す場合は[オブジェクト]->'メンバ名'のように
      メンバ変数名をシングルクォーテーションで囲む必要があります。
   ・ and,orの記述を、 &&,||に変更しました。and,orも使えますが推奨しません。
   ・ 一致の比較演算子=ひとつでOKでしたが、==で比較するよう変更することを推奨とします。
   ・ 固定文字列は''シングルクォートする必要があります。クォートしていないものは文字列として扱わず
     request属性に登録されている属性名とみなします。

-- 2009-03-25
1)ビルドファイル作成前に行いたい処理スクリプトを指定する機能を追加しました。
   グローバル変数として配列$GLOBALS['SPIDER_PREVIOUS_SCRIPT_FILE_PATH_ARRAY']を定義し、
   スクリプトファイルの絶対パスを記述すれば、常にスクリプトを実行します。
   
   この配列宣言はアプリケーションごとの指定の為、define.inc.phpではなく、unique_setting.inc.php内で記述してください。
   
   スクリプトファイルの中で標準出力を行ってはいけません。
   ページ表示イベントに対するフックスクリプトのようなイメージで利用してください。

2)1)に伴い、Controller.class.phpのコンストラクタに引数を追加し、リクエストとアウトプットオブジェクトを渡せるようにしました。
  フックスクリプトでControllerクラスのloadModuleメソッドを呼ぶことができます。
  コントローラオブジェクトは$GLOBALS['controller']で宣言されています。

3)utilライブラリにファイルシステム用ユーティリティメソッドクラスであるutil_Fileクラスを追加しました。
   クラスコードはDATA/util/File.class.phpに記述しています。

4)新しいforeachタグの作成する実行ファイルがPHP5.1.6にて動作不具合を起こす問題を修正

-- 2009-03-24
1)   モジュール呼び出しタグでGET/POST値の一時上書き指定があった場合に、同じモジュールでも複数回
   呼び出しを行うよう修正しました。
   【修正ファイル】
   DATA/lib/spider/BuildInformation.class.php
   DATA/lib/spider/ExecutableFileCreator.class.php

2)モジュールタグクラスを新TagBaseの書式に合わせてスリム化しました。
   【修正ファイル】
   DATA/lib/spider/tags/Module.class.php

3)ページタイトルタグクラスで不要コードを削除しコメントを適正化
   【修正ファイル】
   DATA/lib/spider/tags/PageTitle.class.php

4) タグベースクラスのメソッドgetConvertedStringsの第4引数に$valiable_counterを追加
   標準で、何回目に発見したタグかの回数を0からスタートして渡します。
   これに伴いModuleタグとWidgetタグに記述されていた該当メソッドも引数追加しました。
   ・オプションの複数連続スペースをひとつにするよう処理を追加しました。
   【修正ファイル】
   DATA/lib/spider/tags/TagBase.class.php
   DATA/lib/spider/tags/Module.class.php
   DATA/lib/spider/tags/Widget.class.php

5) foreachタグをリファクタリングし、機能を強化しました
  ループ対象として従来の::指定で配列属性値の要素やオブジェクト属性値のメンバにアクセスできた機能はそのままに
  対象がオブジェクトとわかっている場合は->指定子で
  対象が配列やハッシュとわかっている場合には[添え字]で
  要素やメンバに指定することができるようになりました。
  ::によるアクセスは一階層まででしたが、この記述を行えばアクセス可能な階層に制限はありません。
   【修正ファイル】
   DATA/lib/spider/tags/Foreach.class.php

6) writeタグの機能追加
   writeタグでタグ内に記述された$から始まるPHP変数は変換対象としないように変更しました。
   これにより、ページ内で宣言・初期化された変数をwriteタグ内で利用できます。
   【修正ファイル】
   DATA/lib/spider/tags/Write.class.php

7) setタグにて属性だけでなく$GLOBALSにも同じ名前で登録するよう追加
   【修正ファイル】
   DATA/lib/spider/tags/SetAttribute.class.php

8) ウィジェットタグにリンク機能を追加しました。
   ウィジェットファイル内に{widget-link:参照したいウィジェットファイル名}のみ記述することで
   ウィジェットファイル名のファイルを参照します。
   これにより、複数同じウィジェットを階層ごとに作成するようなケースを避けることができます。

