svnno****@sourc*****
svnno****@sourc*****
2009年 3月 25日 (水) 13:23:45 JST
Revision: 8 http://svn.sourceforge.jp/view?root=frameworkspider&view=rev&rev=8 Author: m_nakashima Date: 2009-03-25 13:23:44 +0900 (Wed, 25 Mar 2009) Log Message: ----------- Modified Paths: -------------- current/DATA/define.inc.php current/DATA/lib/spider/Controller.class.php current/DATA/spider_main.inc.php current/DATA/unique_setting.inc.php current/README.txt Added Paths: ----------- current/DATA/lib/util/File.class.php -------------- next part -------------- Modified: current/DATA/define.inc.php =================================================================== --- current/DATA/define.inc.php 2009-03-25 01:44:36 UTC (rev 7) +++ current/DATA/define.inc.php 2009-03-25 04:23:44 UTC (rev 8) @@ -62,7 +62,7 @@ * 基本定義 */ // ライブラリフォルダの絶対パス -define ( 'DIR_PATH_LIB', DIR_PATH_SPIDER_DATA.DIRECTORY_SEPARATOR.DIR_NAME_LIB ); +define( 'DIR_PATH_LIB', DIR_PATH_SPIDER_DATA.DIRECTORY_SEPARATOR.DIR_NAME_LIB ); // テンプレートディレクトリパス define( 'DIR_PATH_TEMPLATES', DIR_PATH_SPIDER_DATA.DIRECTORY_SEPARATOR.DIR_NAME_TEMPLATES ); // ウィジェットディレクトリパス Modified: current/DATA/lib/spider/Controller.class.php =================================================================== --- current/DATA/lib/spider/Controller.class.php 2009-03-25 01:44:36 UTC (rev 7) +++ current/DATA/lib/spider/Controller.class.php 2009-03-25 04:23:44 UTC (rev 8) @@ -25,11 +25,13 @@ /** * コンストラクタ */ - function Controller() { + function Controller( & $request_object, & $http_output_obj ) { $this->executed_module_info_array = array(); $this->executed_module_object_array = array(); $this->post_hash = $_POST; $this->get_hash = $_GET; + $this->request_object = & $request_object; + $this->http_output_object = & $http_output_obj; } /** @@ -39,8 +41,13 @@ */ function execute( & $request_object, & $http_output_obj ) { - $this->request_object = & $request_object; - $this->http_output_object = & $http_output_obj; + if( is_null($request_object) ) { + $this->request_object = & $request_object; + } + if( is_null($http_output_obj) ) { + $this->http_output_object = & $http_output_obj; + } + // グローバルエラーが存在したらエラーに追加 $global_errors = unserialize( $_SESSION['spider.global_errors'] ); if( is_array( $global_errors ) ) { Added: current/DATA/lib/util/File.class.php =================================================================== --- current/DATA/lib/util/File.class.php (rev 0) +++ current/DATA/lib/util/File.class.php 2009-03-25 04:23:44 UTC (rev 8) @@ -0,0 +1,52 @@ +<?php +/** + * ファイルシステムに関するユーティリティ関数群を提供する静的メソッドクラス + */ +class util_File { + /** + * 指定フォルダ以下のフォルダとファイルを指定フォルダ化にコピーします + * @param $resource_dir コピー元フォルダパス + * @param $destination_dir コピー先フォルダパス + */ + function copyDirFiles( $resource_dir, $destination_dir, $force=false ) { + if( is_dir( $resource_dir ) && is_dir($destination_dir) ) { + if ($dh = opendir($resource_dir)) { + while (($file_name = readdir($dh)) !== false) { + if( preg_match('/^\\./',$file_name) == 0 ) { + $file_absolute_path = $resource_dir.DIRECTORY_SEPARATOR.$file_name; + $file_type = filetype($file_absolute_path); + $destination_path = $destination_dir.DIRECTORY_SEPARATOR.$file_name; + if( preg_match('/^[dD][iI][rR]/', filetype($file_absolute_path) ) ) { + // フォルダの場合なければ作成する + if( !file_exists($destination_path) ) { + if( @mkdir( $destination_path, 0777 ) ) { + @chmod( $destination_path, 0777 ); + } else { + return false; + } + } + // 再帰呼び出し + if( !util_File::copyDirFiles( $file_absolute_path, $destination_path ) ) { + return false; + } + } else if( preg_match('/^[fF][iI][lL][eE]/', filetype($file_absolute_path) ) ) { + // 対象がファイルの場合なければコピー + if( $force || !file_exists($destination_path) ) { + if( @copy( $file_absolute_path, $destination_path ) ) { + @chmod( $destination_path, 0777 ); + } else { + return false; + } + } + } + } + } + @closedir( $dh ); + } + } else { + return false; + } + return true; + } +} +?> \ No newline at end of file Modified: current/DATA/spider_main.inc.php =================================================================== --- current/DATA/spider_main.inc.php 2009-03-25 01:44:36 UTC (rev 7) +++ current/DATA/spider_main.inc.php 2009-03-25 04:23:44 UTC (rev 8) @@ -83,8 +83,19 @@ $base_path = APPLICATION_BASE_PATH; $GLOBALS['request_object']->setAttribute( 'spider.base_path', $base_path ); -// メイン処理 -$GLOBALS['controller'] = new Controller(); +// コントローラー +$GLOBALS['controller'] = new Controller( $GLOBALS['request_object'], $GLOBALS['output_object'] ); +// 前処理スクリプトの指定があるなら読み込む +if( is_array($GLOBALS['SPIDER_PREVIOUS_SCRIPT_FILE_PATH_ARRAY']) + && count($GLOBALS['SPIDER_PREVIOUS_SCRIPT_FILE_PATH_ARRAY']) > 0 ) { + foreach( $GLOBALS['SPIDER_PREVIOUS_SCRIPT_FILE_PATH_ARRAY'] as $script_path ) { + $script_path = trim( $script_path ); + if( strlen($script_path) > 0 && file_exists( $script_path) ) { + include_once( $script_path ); + } + } +} +// メイン処理実行 $GLOBALS['controller']->execute( $GLOBALS['request_object'], $GLOBALS['output_object'] ); die; Modified: current/DATA/unique_setting.inc.php =================================================================== --- current/DATA/unique_setting.inc.php 2009-03-25 01:44:36 UTC (rev 7) +++ current/DATA/unique_setting.inc.php 2009-03-25 04:23:44 UTC (rev 8) @@ -2,6 +2,17 @@ /* * framework-spider: アプリケーション固有のグローバル変数の定義用ファイル */ +/** + * 前処理スクリプトファイルパス配列 + * + * ビルドファイルを作成する前に処理したいプログラムを記述したスクリプトファイルを用意して + * 実行させることができます。このスクリプト読み込み実行はコマンドラインからの実行でない + * 限りビルドファイルのあるなしに関わらず事前に必ず実行されます。 + * スクリプトファイルの中で標準出力を行ってはいけません。 + * ページ表示というイベントに対するフックスクリプトのようなイメージで利用してください。 + */ +$GLOBALS['SPIDER_PREVIOUS_SCRIPT_FILE_PATH_ARRAY'] = array(); + /** 都道府県ハッシュ */ $GLOBALS['PREFECTURE_HASH'] = array( 1=>'北海道', Modified: current/README.txt =================================================================== --- current/README.txt 2009-03-25 01:44:36 UTC (rev 7) +++ current/README.txt 2009-03-25 04:23:44 UTC (rev 8) @@ -3,7 +3,23 @@ ** ** このファイルにはコミットごとに変更点とファイル名を記述します。 ** +-- 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に記述しています。 + -- 2009-03-24 1) モジュール呼び出しタグでGET/POST値の一時上書き指定があった場合に、同じモジュールでも複数回 呼び出しを行うよう修正しました。