[Frameworkspider-svn] spider-commit [60]

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 4月 17日 (金) 11:24:18 JST


Revision: 60
          http://svn.sourceforge.jp/view?root=frameworkspider&view=rev&rev=60
Author:   m_nakashima
Date:     2009-04-17 11:24:17 +0900 (Fri, 17 Apr 2009)

Log Message:
-----------


Modified Paths:
--------------
    current/DATA/define.inc.php
    current/DATA/lib/spider/Controller.class.php
    current/DATA/lib/spider/HttpRequest.class.php
    current/DATA/lib/spider/ModuleBase.class.php


-------------- next part --------------
Modified: current/DATA/define.inc.php
===================================================================
--- current/DATA/define.inc.php	2009-04-16 13:12:19 UTC (rev 59)
+++ current/DATA/define.inc.php	2009-04-17 02:24:17 UTC (rev 60)
@@ -94,8 +94,8 @@
 // ログ出力レベルの定義
 define('SPIDER_LOG_LEVEL_FATAL',	0);
 define('SPIDER_LOG_LEVEL_ERROR',	1);
-define('SPIDER_LOG_LEVEL_INFO',		2);
-define('SPIDER_LOG_LEVEL_REPORT',	3);
+define('SPIDER_LOG_LEVEL_WARNING',	2);
+define('SPIDER_LOG_LEVEL_INFO',		3);
 define('SPIDER_LOG_LEVEL_DEBUG',	4);
 
 // システムメール定義ファイル名

Modified: current/DATA/lib/spider/Controller.class.php
===================================================================
--- current/DATA/lib/spider/Controller.class.php	2009-04-16 13:12:19 UTC (rev 59)
+++ current/DATA/lib/spider/Controller.class.php	2009-04-17 02:24:17 UTC (rev 60)
@@ -98,8 +98,9 @@
 			if( is_null( $module_obj ) ) {
 				// モジュールがスタックにない場合は新規作成して実行
 				$module_obj = new $module_real_name;
-				$module_obj->controller_object	= & $this;
-				$module_obj->http_output_object	= & $this->http_output_object;
+				$module_obj->controller_object		= & $this;
+				$module_obj->http_output_object		= & $this->http_output_object;
+				$module_obj->http_request_object	= & $this->request_object;
 				// 要求モジュールが存在して未実行の場合は先に強制実行する
 				if( is_array( $module_obj->require_module_array ) ) {
 					foreach( $module_obj->require_module_array as $require_module_name ) {

Modified: current/DATA/lib/spider/HttpRequest.class.php
===================================================================
--- current/DATA/lib/spider/HttpRequest.class.php	2009-04-16 13:12:19 UTC (rev 59)
+++ current/DATA/lib/spider/HttpRequest.class.php	2009-04-17 02:24:17 UTC (rev 60)
@@ -47,6 +47,7 @@
 		$reg_key		= $key;
 		$callstack		= debug_backtrace();
 		$caller_file	= $callstack[0]['file'];
+		unset($callstack);
 		if( strpos($caller_file,DIR_PATH_LIB) !== false
 			&& strpos($caller_file,DIR_PATH_LIB.DIRECTORY_SEPARATOR.'spider') === false ) {
 			// 呼び出し元がlib内のファイルの場合
@@ -208,8 +209,202 @@
 			}
 		}
 	}
+	/**
+	 * グローバルセッションキー
+	 */
 	function _getGlobalSessionKey( $key ) {
 		return 'spider_GLOBAL.'.$key;
 	}
+	/**
+	 * ログを出力します
+	 * @param $message ログメッセージ
+	 */
+	function writeLog( $message, $log_level=SPIDER_LOG_LEVEL_INFO ) {
+		$system_log_level	= SPIDER_LOG_LEVEL_INFO;
+		if( defined('SYSTEM_LOG_LEVEL') && is_numeric(SYSTEM_LOG_LEVEL)
+			&& preg_match('/^[0-4]$/',SYSTEM_LOG_LEVEL) > 0 ) {
+			$system_log_level	= SYSTEM_LOG_LEVEL;
+		}
+		// システム設定のログレベルより大きいレベルのログは出力しない
+		if( $log_level > $system_log_level ) {
+			return true;
+		}
+
+		// ログファイル名の決定
+		$log_file_path	= DIR_PATH_LOG.DIRECTORY_SEPARATOR.'spider';
+		if( !file_exists( $log_file_path ) ) {
+			if( @mkdir( $log_file_path, 0777 ) ) {
+				@chmod( $log_file_path, 0777 );
+			}
+		}
+		$log_file_path	= $log_file_path.DIRECTORY_SEPARATOR.date('Y');
+		if( !file_exists( $log_file_path ) ) {
+			if( @mkdir( $log_file_path, 0777 ) ) {
+				@chmod( $log_file_path, 0777 );
+			}
+		}
+		$log_file_path	= $log_file_path.DIRECTORY_SEPARATOR.date('m');
+		if( !file_exists( $log_file_path ) ) {
+			if( @mkdir( $log_file_path, 0777 ) ) {
+				@chmod( $log_file_path, 0777 );
+			}
+		}
+		$log_file_path	= $log_file_path.DIRECTORY_SEPARATOR.'system_'.date('d').'.log';
+		if( !file_exists( $log_file_path ) ) {
+			if(@touch( $log_file_path, 0666 )){
+				@chmod( $log_file_path, 0666 );
+			}
+		}
+		$message	= str_replace( "\r\n", "\n", $message );
+		$message	= str_replace( "\r", "\n", $message );
+		$message	= str_replace( "\n", " ", $message );
+
+		$callstack		= debug_backtrace();
+		$caller_file	= $callstack[0]['file'];
+		$caller_line	= $callstack[0]['line'];
+		unset($callstack);
+
+		error_log(
+			"[". date('Y-m-d H:i:s')."]"
+			. "\t".$message
+			. "\t"."[".$caller_file."] "
+			. "\t"."[".$caller_line."] "
+			. "\t" . $_SERVER['REMOTE_ADDR']
+			. "\t" . $_SERVER['REMOTE_HOST']
+			. "\t" . $_SERVER['HTTP_USER_AGENT']
+			. "\n"
+			, 3, $log_file_path );
+		return true;
+	}
+	/**
+	 * Fatalレベルのログを出力します。
+	 * @param $message ログメッセージ
+	 */
+	function fatal($message){
+		$this->writeLog( $message, SPIDER_LOG_LEVEL_FATAL );
+	}
+	/**
+	 * Errorレベルのログを出力します。
+	 * @param $message ログメッセージ
+	 */
+	function error($message){
+		$this->writeLog( $message, SPIDER_LOG_LEVEL_ERROR );
+	}
+	/**
+	 * Warningレベルのログを出力します。
+	 * @param $message ログメッセージ
+	 */
+	function warn($message){
+		$this->writeLog( $message, SPIDER_LOG_LEVEL_WARNING );
+	}
+	/**
+	 * Infoレベルのログを出力します。
+	 * @param $message ログメッセージ
+	 */
+	function info($message){
+		$this->writeLog( $message, SPIDER_LOG_LEVEL_INFO );
+	}
+	/**
+	 * Debugレベルのログを出力します。
+	 * @param $message ログメッセージ
+	 */
+	function debug($message){
+		$this->writeLog( $message, SPIDER_LOG_LEVEL_DEBUG );
+	}
+	/**
+	 * システム設定された値でメール送信オブジェクトを作成して取得します。
+	 */
+	function getSystemMailer() {
+		if( defined('SYSTEM_MAIL_SEND_METHOD') ) {
+			require_once( dirname(dirname(__FILE__))
+				. DIRECTORY_SEPARATOR . "util"
+				. DIRECTORY_SEPARATOR . "Mail.class.php" );
+			// 送信オプション
+			$params		= array();
+			// 送信方法の決定
+			$class_name	= 'PHP';
+			if( preg_match('/^[sS][mM][tT][pP]$/',SYSTEM_MAIL_SEND_METHOD) > 0 ) {
+				$class_name	= 'SMTP';
+			} else if( preg_match('/^[sS][eE][nN][dD][mM][aA][iI][lL]$/',SYSTEM_MAIL_SEND_METHOD) > 0 ) {
+				$class_name	= 'SendMail';
+			}
+			$params		= $GLOBALS['SYSTEM_MAIL_SEND_METHOD_OPTIONS'];
+			// 送信オブジェクト作成
+			$send_object	= util_Mail::get_instance( $class_name, $params );
+			if( $send_object === false ) {
+				return false;
+			} else {
+				return $send_object;
+			}
+		} else {
+			return false;
+		}
+	}
+	/**
+	 * メールを送信します。
+	 * @param $subject メール件名
+	 * @param $message メール本文
+	 * @param $mailto 宛て先メールアドレス
+	 */
+	function mailTo($subject,$message,$mailto=null,$from=null,$reply=null,$return=null) {
+		$mailto_addresses	= array();
+		if( isset($GLOBALS['SYSTEM_MAIL_REPORT_TO_ADDRESSES'])
+		&& is_array($GLOBALS['SYSTEM_MAIL_REPORT_TO_ADDRESSES']) ) {
+			$mailto_addresses	= $GLOBALS['SYSTEM_MAIL_REPORT_TO_ADDRESSES'];
+		}
+		$mailto	= trim($mailto);
+		if(!is_null($mailto) && strlen($mailto) > 0 ) {
+			array_push($mailto_addresses, $mailto);
+		}
+		if(count($mailto_addresses)==0){
+			$this->warn('HttpRequest->MailTo: derivery mail address is required!: '.$subject.':'.$message);
+			return false;
+		}
+		if(defined('SYSTEM_MAIL_SUBJECT_PREFIX')){
+			$subject	= SYSTEM_MAIL_SUBJECT_PREFIX.$subject;
+		}
+		if( is_null($from) || strlen($from) == 0 ) {
+			if(defined('SYSTEM_MAIL_FROM_ADDRESS') && strlen(SYSTEM_MAIL_FROM_ADDRESS)>0 ) {
+				if(defined('SYSTEM_MAIL_FROM_NAME') && strlen(SYSTEM_MAIL_FROM_NAME)>0 ) {
+					$from	= SYSTEM_MAIL_FROM_NAME.' <'.SYSTEM_MAIL_FROM_ADDRESS.'>';
+				} else {
+					$from	= SYSTEM_MAIL_FROM_ADDRESS;
+				}
+			} else {
+				$this->warn('HttpRequest->MailTo: from address is required!: '.$subject.':'.$message);
+				return false;
+			}
+		}
+		if( is_null($reply) || strlen($reply) == 0 ) {
+			if(defined('SYSTEM_MAIL_REPLY_ADDRESS') && strlen(SYSTEM_MAIL_REPLY_ADDRESS)>0 ) {
+				$reply	= SYSTEM_MAIL_REPLY_ADDRESS;
+			} else {
+				$reply	= $from;
+			}
+		}
+		if( is_null($return) || strlen($return) == 0 ) {
+			if(defined('SYSTEM_MAIL_RETURN_ADDRESS') && strlen(SYSTEM_MAIL_RETURN_ADDRESS)>0 ) {
+				$return	= SYSTEM_MAIL_RETURN_ADDRESS;
+			} else {
+				$return	= $from;
+			}
+		}
+		
+		if( $send_object = $this->getSystemMailer() ) {
+			foreach( $mailto_addresses as $address ) {
+				$result	= $send_object->send( $address, $subject, $message, $from, $reply, $return );
+				if( $result ) {
+					$this->info( 'HttpRequest->MailTo: '.$address.':'.$subject.':'.$message );
+					return true;
+				} else {
+					$this->warn('HttpRequest->MailTo: delivey error: '.$subject.':'.$message);
+					return false;
+				}
+			}
+		} else {
+			$this->warning( 'HttpRequest->MailTo: can\'t create mailer instance!: '.$mailto.':'.$subject.':'.$message );
+			return false;
+		}
+	}
 }
 ?>

Modified: current/DATA/lib/spider/ModuleBase.class.php
===================================================================
--- current/DATA/lib/spider/ModuleBase.class.php	2009-04-16 13:12:19 UTC (rev 59)
+++ current/DATA/lib/spider/ModuleBase.class.php	2009-04-17 02:24:17 UTC (rev 60)
@@ -10,9 +10,15 @@
  * @since PHP 4.3
  */
 class spider_ModuleBase {
+	/** Controllerクラスオブジェクトへの参照	*/
 	var $controller_object;
+	/** HttpOutputクラスオブジェクトへの参照	*/
 	var $http_output_object;
+	/** HttpRequestクラスオブジェクトへの参照	*/
+	var $http_request_object;
+	/** 要求モジュール配列	*/
 	var $require_module_array	= array();
+	/** 後実行モジュール配列	*/
 	var $post_module_array		= array();
 	/**
 	 * コンストラクタ
@@ -47,150 +53,87 @@
 	}
 	/**
 	 * メールレポートを送信します。
+	 * @param $subject
+	 * @param $message
+	 * @param $maito
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのmailToメソッドを利用してください。
 	 */
 	function report_mailto($subject,$message,$mailto=null) {
-		$mailto_addresses	= array();
-		if( is_null( $mailto ) || strlen(trim($mailto)) == 0 ) {
-			if( !is_array( $GLOBALS['SYSTEM_MAIL_REPORT_TO_ADDRESSES'] ) ) {
-				$this->error( "mailto:no defined:" . $subject . ":" . $message );
-				return false;
-			} else {
-				$mailto_addresses	= $GLOBALS['SYSTEM_MAIL_REPORT_TO_ADDRESSES'];
-			}
-		} else {
-			array_push($mailto_addresses, $mailto);
+		if(is_object($this->http_request_object)){
+			return $this->http_request_object->mailTo($subject,$message,$mailto);
 		}
-		if( $send_object = $this->get_system_mailer() ) {
-			// 送信
-			foreach( $mailto_addresses as $address ) {
-				$result	= $send_object->send( $address, SYSTEM_MAIL_SUBJECT_PREFIX.$subject, $message,
-					SYSTEM_MAIL_FROM_NAME.' <'.SYSTEM_MAIL_FROM_ADDRESS.'>', SYSTEM_MAIL_REPLY_ADDRESS, SYSTEM_MAIL_RETURN_ADDRESS );
-				if( $result ) {
-					$this->report( "mailto:" . $address . ":" . $subject . ":" . $message );
-				}
-			}
-			return true;
-		}
-		$this->error( "mailto:" . $mailto . ":" . $subject . ":" . $message );
 		return false;
 	}
 	/**
 	 * システム設定された値でメール送信オブジェクトを作成して取得します。
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのmailToメソッドを利用してください。
 	 */
 	function get_system_mailer() {
-		if( defined('SYSTEM_MAIL_SEND_METHOD') ) {
-			require_once( dirname(dirname(__FILE__))
-				. DIRECTORY_SEPARATOR . "util"
-				. DIRECTORY_SEPARATOR . "Mail.class.php" );
-			// 送信オプション
-			$params		= array();
-			// 送信方法の決定
-			$class_name	= 'PHP';
-			if( preg_match('/^[sS][mM][tT][pP]$/',SYSTEM_MAIL_SEND_METHOD) > 0 ) {
-				$class_name	= 'SMTP';
-			} else if( preg_match('/^[sS][eE][nN][dD][mM][aA][iI][lL]$/',SYSTEM_MAIL_SEND_METHOD) > 0 ) {
-				$class_name	= 'SendMail';
-			}
-			$params		= $GLOBALS['SYSTEM_MAIL_SEND_METHOD_OPTIONS'];
-			// 送信オブジェクト作成
-			$send_object	= util_Mail::get_instance( $class_name, $params );
-			if( $send_object === false ) {
-				return false;
-			} else {
-				return $send_object;
-			}
-		} else {
-			return false;
+		if(is_object($this->http_request_object)){
+			return $this->http_request_object->getSystemMailer();
 		}
+		return false;
 	}
 	/**
 	 * ログを出力します。
 	 * @param $message ログメッセージ
 	 * @param $log_level 出力するログのレベル
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのwriteLogメソッドを利用してください。
 	 */
 	function write_log( $message, $log_level=SPIDER_LOG_LEVEL_INFO ) {
-		$system_log_level	= SPIDER_LOG_LEVEL_INFO;
-		if( defined('SYSTEM_LOG_LEVEL') && is_numeric(SYSTEM_LOG_LEVEL)
-			&& preg_match('/^[0-4]$/',SYSTEM_LOG_LEVEL) > 0 ) {
-			$system_log_level	= SYSTEM_LOG_LEVEL;
+		if(is_object($this->http_request_object)){
+			$this->http_request_object->writeLog($message,$log_level);
 		}
-		// システム設定のログレベルより大きいレベルのログは出力しない
-		if( $log_level > $system_log_level ) {
-			return true;
-		}
-		// ログファイル名の決定
-		$log_file_path	= DIR_PATH_LOG.DIRECTORY_SEPARATOR.'spider';
-		if( !file_exists( $log_file_path ) ) {
-			if( @mkdir( $log_file_path, 0777 ) ) {
-				@chmod( $log_file_path, 0777 );
-			}
-		}
-		$log_file_path	= $log_file_path.DIRECTORY_SEPARATOR.date('Y');
-		if( !file_exists( $log_file_path ) ) {
-			if( @mkdir( $log_file_path, 0777 ) ) {
-				@chmod( $log_file_path, 0777 );
-			}
-		}
-		$log_file_path	= $log_file_path.DIRECTORY_SEPARATOR.date('m');
-		if( !file_exists( $log_file_path ) ) {
-			if( @mkdir( $log_file_path, 0777 ) ) {
-				@chmod( $log_file_path, 0777 );
-			}
-		}
-		$log_file_path	= $log_file_path.DIRECTORY_SEPARATOR.'system_'.date('d').'.log';
-		if( !file_exists( $log_file_path ) ) {
-			if(@touch( $log_file_path, 0666 )){
-				@chmod( $log_file_path, 0666 );
-			}
-		}
-		$message	= str_replace( "\r\n", "\n", $message );
-		$message	= str_replace( "\r", "\n", $message );
-		$message	= str_replace( "\n", " ", $message );
-		error_log(
-			"[". date('Y-m-d H:i:s')."]"
-			."[".get_class($this)."] "
-			.$message
-			. "\t" . $_SERVER['REMOTE_ADDR']
-			. "\t" . $_SERVER['REMOTE_HOST']
-			. "\t" . $_SERVER['HTTP_USER_AGENT']
-			. "\n"
-			, 3, $log_file_path );
-		return true;
 	}
 	/**
-	 * Infoレベルのログを出力します。
+	 * Fatalレベルのログを出力します。
 	 * @param $message ログメッセージ
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのfatalメソッドを利用してください。
 	 */
-	function info($message){
-		$this->write_log( $message, SPIDER_LOG_LEVEL_INFO );
+	function fatal($message){
+		if(is_object($this->http_request_object)){
+			$this->http_request_object->writeLog($message,SPIDER_LOG_LEVEL_FATAL);
+		}
 	}
 	/**
-	 * Reportレベルのログを出力します。
+	 * Errorレベルのログを出力します。
 	 * @param $message ログメッセージ
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのerrorメソッドを利用してください。
 	 */
-	function report($message){
-		$this->write_log( $message, SPIDER_LOG_LEVEL_REPORT );
+	function error($message){
+		if(is_object($this->http_request_object)){
+			$this->http_request_object->writeLog($message,SPIDER_LOG_LEVEL_ERROR);
+		}
 	}
 	/**
-	 * Errorレベルのログを出力します。
+	 * Warningレベルのログを出力します。
 	 * @param $message ログメッセージ
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのwarnメソッドを利用してください。
 	 */
-	function error($message){
-		$this->write_log( $message, SPIDER_LOG_LEVEL_ERROR );
+	function warn($message){
+		if(is_object($this->http_request_object)){
+			$this->http_request_object->writeLog($message,SPIDER_LOG_LEVEL_WARNING);
+		}
 	}
 	/**
-	 * Fatalレベルのログを出力します。
+	 * Infoレベルのログを出力します。
 	 * @param $message ログメッセージ
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのinfoメソッドを利用してください。
 	 */
-	function fatal($message){
-		$this->write_log( $message, SPIDER_LOG_LEVEL_FATAL );
+	function info($message){
+		if(is_object($this->http_request_object)){
+			$this->http_request_object->writeLog($message,SPIDER_LOG_LEVEL_INFO);
+		}
 	}
 	/**
 	 * Debugレベルのログを出力します。
 	 * @param $message ログメッセージ
+	 * @deprecated v1.0.00 - 2009/04/17 正式リリース前の仕様です。HttpRequestクラスオブジェクトのdebugメソッドを利用してください。
 	 */
 	function debug($message){
-		$this->write_log( $message, SPIDER_LOG_LEVEL_DEBUG );
+		if(is_object($this->http_request_object)){
+			$this->http_request_object->writeLog($message,SPIDER_LOG_LEVEL_DEBUG);
+		}
 	}
 }
 ?>



Frameworkspider-svn メーリングリストの案内
Back to archive index