schedule_alarm.php 6.07 KB
<?php 
//*****************************************************************************
//* 
//* プログラム名:アラームメール送信
//* プログラムID:schedule_alarm.php
//* 機能        :LinuxCronより定期的に実行するメール送信スクリプト
//* 作成者      :山本
//* 
//*****************************************************************************

header("Content-type: text/html; charset=EUC-JP");
include("./include/dbcon_group.inc");
include("./include/STRING.inc");
include("./inc/mime.php");
include("./include/jcode.phps");

$strSQL="Select db_name From mst_group where stop_flg = 0";
$objDbSet = pg_exec($strSQL);
if($objDbSet==false){
	echo("SQL実行に失敗しました");
	exit;
}

$ilp=pg_numrows($objDbSet);
for($i=0;$i<$ilp;$i++){

	$objDbSetRec = pg_fetch_object($objDbSet, $i);
	$DB_NAME = $objDbSetRec->db_name;
	$hostname="172.31.18.14";
	$database=$DB_NAME;

	echo $database."<br />";

	//if( !$pg_con=pg_connect("host=$hostname dbname=$database user=nobody") ) {
	if( !$pg_con=pg_connect("host=$hostname port=5433 dbname=$database user=pgsqladmin password=pgsqladmin") ) {
		print "Error : connect to ${hostname}<br>";
		exit;
	}

	
	//	$strSQL = "Select * FROM alarm_tbl,mst_alarm Where alarm_tbl.syain_cd = mst_alarm.syain_cd and alarm_tbl.send_time <= '".date( "YmdHi", time() )."'";
	//	$strSQL = "Select * FROM mst_alarm RIGHT OUTER JOIN alarm_tbl USING(syain_cd) Where alarm_tbl.send_time <= '".date( "YmdHi", time() )."'";
	//	$strSQL = "Select * FROM alarm_tbl Where syain_cd = syain_cd and alarm_tbl.send_time <= '".date( "YmdHi", time() )."'";

	//SQL条件 ALARM_TBLにMST_ALARMを社員コード(SYAIN_CD)で結合し、
	//Where 1.送信予定日(SEND_TIME)が現日時より過去、かつ
	//Where 2-1.送信禁止時間(NO_ALARM_TIME)がNULL(未設定)、もしくは
	//Where 2-2-1.送信禁止時間(NO_ALARM_TIME)がNULL以外(設定)、かつ
	//Where 2-2-2.現時刻が送信禁止時間(NO_ALARM_TIME)の範囲外
	$strSQL ="SELECT ".
		        "* ".
		"FROM ".
	        	"MST_ALARM RIGHT OUTER JOIN ALARM_TBL USING ( SYAIN_CD ) ".
		"WHERE ".
	        	"ALARM_TBL.SEND_TIME <= '".date( "YmdHi", time() )."' ".
	        	"AND ( ( NO_ALARM_TIME IS NULL ) ".
	           	     "OR ( ( NOT NO_ALARM_TIME IS NULL ) ".
	           	             "AND ( ".
	           	                     "SUBSTR ( NO_ALARM_TIME , 1 , 4 ) > '".date( "Hi", time() )."' ) ".
	           	             "OR ( ".
	          	                      "SUBSTR ( NO_ALARM_TIME , 5 , 4 ) < '".date( "Hi", time() )."' ) ) ) ".
		"ORDER BY type_flg,send_time,send_address,content";

	echo $strSQL."<hr>";
	$objRecSet = pg_exec($strSQL);
	if($objRecSet==false){
		echo("SQL実行に失敗しました");
		exit;
	}
	$alarm_flg = 0;
	if (pg_numrows($objRecSet)>0){
//		mb_language('Japanese');
//		mb_internal_encoding('EUC-JP');
		$NowDate = date("Y年m月d日",mktime(date("H"),date("i"),0,(date("m")),date("d"),date("Y")));
		$WeekEndDate = date("Y年m月d日",mktime(date("H"),date("i"),0,(date("m")),date("d")+6,date("Y")));
		$strHonbun ="";
		for($intCnt = 0; $intCnt < pg_numrows($objRecSet) ; $intCnt++) {
			$objRecDataRec = pg_fetch_object($objRecSet, $intCnt);
			$syain_cd = $objRecDataRec->syain_cd;
			$seq = $objRecDataRec->seq;

			if($objRecDataRec->type_flg==1){
				$mail_subject="【E-グルPro】 スケジュールのお知らせ";
				$strHonbun ="";
			}elseif($objRecDataRec->type_flg==2){
				$mail_subject="【E-グルPro】 ToDoのお知らせ";
				$strHonbun ="";
			}elseif($objRecDataRec->type_flg==3){
				$mail_subject="【E-グルPro】 電子会議室よりお知らせ";
				$strHonbun ="";
			}elseif($objRecDataRec->type_flg==4){
				$mail_subject="【E-グルPro】 週間スケジュールのお知らせ";

				if($strHonbun==""){
					$strHonbun = $NowDate."〜".$WeekEndDate." までのスケジュールです。\n\n";
				}
				if($intCnt != pg_numrows($objRecSet)-1){
					$objRecDataRec_next = pg_fetch_object($objRecSet, $intCnt+1);
					if($objRecDataRec_next->type_flg==4 && 
						$objRecDataRec_next->send_time == $objRecDataRec->send_time &&
						$objRecDataRec_next->send_address == $objRecDataRec->send_address &&
						$objRecDataRec_next->syain_cd == $objRecDataRec->syain_cd){
						$strHonbun .= $objRecDataRec->content."\n";

						$strSQL = "DELETE FROM alarm_tbl where type_flg=".$objRecDataRec->type_flg." and syain_cd ='".$syain_cd."' and seq=".$seq;
						$objRecSet2 = pg_exec($strSQL);
						if($objRecSet2==false){
							echo("SQL実行に失敗しました(seq取得)");
							exit;
						}
						continue;
					}
				}
			}

			$strHonbun .= $objRecDataRec->content;
			
			//20170112 サーバ移行時にmedia-tek.co.jpへメールが飛ばない対応
			$mlfr = "webmaster@e-gru.net";

			$Headers  = "Date: ".$GMT_RFC."\n";
			$Headers .= "From: ".$mlfr."\n";
			$Headers .= "Subject: $MailSubject\n";
			$Headers .= "MIME-Version: 1.0\n";
			$Headers .= "X-Mailer: PHP/".phpversion()."\n";
			$Headers .= "Content-type: text/plain; charset=ISO-2022-JP\n";
			$Headers .= "Content-Transfer-Encoding: 7bit";

			//送信者アドレス取得
			/*
			$Header1 = "";
			$Headers['From']="webmaster@e-gru.net";
			$Headers['X-Mailer']="PHP/".phpversion(); //メール送信プログラムの表示 
			*/
			$mail_subject = "=?iso-2022-jp?B?" . base64_encode(jcodeconvert($mail_subject, 0, 3)) . "?=";
			$strHonbun = jcodeconvert($strHonbun, 1, 3);
			//PEARのmimeクラス設定
			$mime = new Mail_mime("\r\n");
			$mime->_build_params['text_charset'] = 'iso-2022-jp'; //本文テキストの文字コードをJISに設定する
			//本文のテキストの指定
			$mime->setTXTBody($strComment);

			$strComment = $mime->get();

			/*
			$Headers = $mime->headers($Headers);
			while (list($key,$val)=each($Headers)) {
				$Header1 .= $key.": ".$val."\r\n";
			}
			*/
//			$res = mb_send_mail($objRecDataRec->send_address,$mail_subject,$strHonbun,$headers);
			//20170112 サーバ移行時にmedia-tek.co.jpへメールが飛ばない対応
			//$res = mail($objRecDataRec->send_address,$mail_subject,$strHonbun,$Header1);
			$rcd = mail($objRecDataRec->send_address, $mail_subject, $strHonbun, $Headers, "-f".$mlfr);

			$strSQL = "DELETE FROM alarm_tbl where type_flg=".$objRecDataRec->type_flg." and syain_cd ='".$syain_cd."' and seq=".$seq;
			$objRecSet2 = pg_exec($strSQL);
			if($objRecSet2==false){
				echo("SQL実行に失敗しました(seq取得)");
				exit;
			}
			$strHonbun ="";
		}

	}
}
?>