| Server IP : 134.236.49.22 / Your IP : 216.73.216.114 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/lineLocal/ |
Upload File : |
<?php
function Response($curlurl,$rToken,$uID,$botID,$message){
include('config.php');
$mysqli = new mysqli($database_host, $database_username, $database_password, $database_name, $database_port);
$mysqli->set_charset("utf8");
if ($mysqli->connect_error) return 'CE';
$Ret = 'OL'; //Old LineID
$mUser ='Unknown';
$mDept ='Unknown';
$mName ='';
$Conn = $mysqli->query("SELECT * from user where lineID='$uID' "); //หาว่า LineID นี้คือใคร > userID
while($emp = $Conn->fetch_array()){
$mUser = $emp['userID'];
$mDept = $emp['department'];
$mName = $emp['name'];
break;
}
if (($mUser == 'Unknown') || ($mDept == 'Unknown')){ // ไม่พบ ID
if (substr($message,0,1)=='*' && !(strpos($message,'#') === false)){ // เป็นข้อความแจ้ง ID ขอลงทะเบียน
$nPos = strpos($message,'#');
$mUser = substr($message,1,$nPos-1);
$mName = substr($message,$nPos+1);
if (substr($mName,1,1) == 'C'){ //เปลี่ยน Bot
$mName = substr($mName,2,1);
$Conn = $mysqli->query("Update user set lineID = '$uID',BotID='$botID' where userID='$mUser' and BotID='$mName'");
mysqli_free_result($Conn);
$Ret = 'UC';
} else {
$nPos = strpos($mName,'#');
$mDept = trim(substr($mName,$nPos+1));
$mName = substr($mName,0,$nPos);
$nPos = strrpos($mDept,'#');
$oName ='';
$oDept = '';
if (!($nPos === false)) $mDept = substr($mDept,0,$nPos); //ตัด # ตัวท้ายถ้ามี
$nPos=0;
$Conn = $mysqli->query("SELECT * from user where userID='$mUser'");
while($emp = $Conn->fetch_array()){ //userID ซ้ำได้ เพราะมีหลาย LineID
$mId = $emp['lineID'];
if (is_null($mId) || empty($mId) ) $nPos = $emp['id']; //พบ userID แต่ไม่มี lineID ใช้ Reccord นี้ (id)
$oName = $emp['name'];
$oDept = $emp['department'];
}
mysqli_free_result($Conn);
if ($nPos == 0) { //ไม่พบ userID หรือพบแต่ไม่มีที่ ไม่มี lineID -> เพิ่ม Reccord ใหม่
$sQl = "INSERT INTO user (userID,lineID,name,department,BotID)
values ('$mUser','$uID','$mName','$mDept','$botID')";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$sQl = "SELECT * From user where userID='$mUser' and lineID='$uID' and BotID='$botID'";
$Conn= $mysqli->query($sQl);
$row_cnt = $Conn->num_rows;
if ($row_cnt >= 1) $Ret = 'AA';
else $Ret = 'ER';
mysqli_free_result($Conn);
} else { //พบ userID ที่ไม่มี lineID -> update lineID
$sQl = "Update user set lineID = '$uID',BotID='$botID'";
if (!empty($mName)) $sQl = $sQl .",name = '$mName'";
if (!empty($mDept)) $sQl = $sQl .",department = '$mDept'";
$sQl = $sQl . " where id =$nPos";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Ret = 'UP';
}
}
} else $Ret = 'UR'; //ไม่ได้ลงทะเบียนและไม่ได้เป็นข้อความลงทะเบียน
} else { //พบ USER
if (substr($message,0,1)=='*' && !(strpos($message,'#') ===false)) { //ข้อมูลเดิม ขอลงทะเบียนมาอีก -> update เช่นชื่อ/แผนก
$oName =$mName;
$oDept = $mDept;
$nPos = strpos($message,'#');
$mName = substr($message,$nPos+1);
$nPos = strpos($mName,'#');
if (!($nPos === false)) {
$mDept = trim(substr($mName,$nPos+1));
$mName = substr($mName,0,$nPos);
$nPos = strrpos($mDept,'#');
if (!($nPos === false)) $mDept = substr($mDept,0,$nPos); //ตัด # ตัวท้ายถ้ามี
if ( $oName !==$mName || $oDept !== $mDept){
$sQl = "Update user set name = '$mName' , department = '$mDept' where userID ='$mUser'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Ret = 'UP';
} else $Ret = 'ST' ; //คงข้อมูลเดิม
} else {
if ( substr(strtoupper($mName),0,4) == 'BOOK' ) {
$mDept = substr($message,1);
$nPos = strrpos($mDept,'#');
$mDept = substr($mDept,0,$nPos); //ตัด # ตัวท้ายถ้ามี
$sQl = "Update user set mid = '$mDept' where userID = '$mUser' ";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Ret = 'UP';
}
}
}
if ( $Ret == 'OL'){
// ==== แก้ไข เพิ่มเติมโปรแกรมตามต้องการ พบ userID และ lineID
$message_to_reply='';
$pid='2';
$sid='41'; //
if (substr($message,0,1) == '?' ){ //ประเมิน lbot เปลี่ยน @ เป็น ? ก่อนส่งมา
$message_to_reply='ไม่พบคำขอบริการของท่าน'; //Init
$message = trim(substr($message,1));
$lcDep = substr($message,0,1);
$int=5; $float =1.0; //default
if (is_numeric($lcDep)){
$int = (int)$lcDep;
if ($int >= 5 ) $int=5;
else if ($int <= 1 ) $int=1;
$message = trim(substr($message,1));
$float = (float)$message;
$message = trim($message,$float);
if ($float >= 10.0) $float=10.0;
else if ($float <= 1.0 ) $float=1.0;
}
$nPos = 0;
$Conn = $mysqli->query("SELECT reqdate ,evaluation FROM report
WHERE reqID='$mUser' AND resID is not null Order by reqdate DESC LIMIT 1");
while($emp = $Conn->fetch_array()){
$dDate = $emp['reqdate'];
if (!empty($dDate)){
$nPos = 1;
if ( is_null($emp['evaluation'])) $nPos =2;
}
}
mysqli_free_result($Conn);
if ($nPos == 2) {
$sQl = "UPDATE report SET evaluation ='$int',comment = '$message',weight = '$float' WHERE reqID='$mUser' AND evaluation IS NULL";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
//if($Conn->affected_rows) $nPos = 1;
//if (mysqli_affected_rows($Conn)) $nPos = 1;
$message_to_reply='ขอบคุณที่ให้ความร่วมมือ '.chr(13).chr(10).
' คะแนน '.$int.' x '.$float.' = '.number_format(($int * $float),1).'คะแนน และคำแนะนำ '.chr(13).chr(10).
' จะนำไปพัฒนาคุณภาพบริการต่อไป'; //แจ้ง user
$pid='2';
$sid='41'; //
} else {
if ($nPos == 1) {
$sQl = "UPDATE report SET evaluation = '$int',comment = '$message',weight = '$float' WHERE reqID='$mUser' AND reqdate ='$dDate'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$message_to_reply='แก้ไขคะแนนครั้งสุดท้ายเป็น '.chr(13).chr(10).' '.$int.' x '.$float.
' = '.number_format(($int *$float),1).'คะแนน '; //แจ้ง
}
}
} // จบประเมิน
else {
if (substr($message,0,2) == 'ID'){ //แสดงว่าเป็นการตอบให้บริการ
$nPos = strpos($message,'@');
$reqID = rtrim(substr($message,2,$nPos-2)." ");
$cDate = SUBSTR($message,$nPos+1,4).'-'.SUBSTR($message,$nPos+5,2).'-'.SUBSTR($message,$nPos+7,2).'T'.SUBSTR($message,$nPos+9,2).':'
.SUBSTR($message,$nPos+11,1).SUBSTR($message,$nPos+13,1).':'.SUBSTR($message,$nPos+14,2);
$sQl = "SELECT * From report Where reqID='$reqID' AND reqDate ='$cDate'"; //ตรวจสอบว่ามี ID นี้จริง
$Conn = $mysqli->query($sQl);
$nPos = 0;
while($emp = $Conn->fetch_array()){
if ($reqID == $emp['reqID']) {
$nPos=1;
break;
}
}
mysqli_free_result($Conn);
if ($nPos == 0) $message_to_reply='บันทึก ตอบให้บริการไม่ถูกต้อง'.chr(13).chr(10). 'รูปแบบ ID55555@yyyymmddhhm.mss'
.chr(13).chr(10).$reqID.chr(13).chr(10) .$cDate;
else {
$nPos = strrpos($message,' '); //ระยะเวลา
if ($nPos === false) $lcDep = 'ไม่ระบุ เวลา';
else {
$lcDep = ltrim(substr($message,$nPos));
if (substr($lcDep,0,1) == '0' ) {
$lcDep = '-'.substr($lcDep,1);
} else {
if (!(strpos($lcDep,'D') === false)) $lcDep = str_replace("D","วัน",$lcDep);
else if(!(strpos($lcDep,'d') === false)) $lcDep = str_replace("d","วัน",$lcDep);
else if(!(strpos($lcDep,'H') === false)) $lcDep = str_replace("H","ชม.",$lcDep);
else if(!(strpos($lcDep,'h') === false)) $lcDep = str_replace("h","ชม.",$lcDep);
else $lcDep = $lcDep.' นาที';
}
}
$nPos = strpos($lcDep,'CO'); //ตรวจสอบว่าเป็นผุ้ร่วมบริการหรือไม่
if ( $nPos === false) { //กรณีเป็นผู้ให้บริการหลัก
if (substr($lcDep,0,1) == '-' ) $sQl = "UPDATE report SET resID ='$mUser',resWaitting ='$lcDep',resDate =now() ,evaluation='5'
where reqID='$reqID' AND reqDate ='$cDate'";
else $sQl = "UPDATE report SET resID ='$mUser',resWaitting ='$lcDep',resDate =now()
where reqID='$reqID' AND reqDate ='$cDate'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Conn = $mysqli->query("SELECT * From user Where instr(acctype,'IT') > 0 or userID = '$reqID' "); //แจ้ง ITทุกคน และผู้ขอ
$receive='';
while($emp = $Conn->fetch_array()){
$mID = $emp['lineID']; // IT lineID
$mBot = $emp['BotID']; // IT botID
if (!is_null($mID) && !empty($mID)){
if ( ($reqID == $emp['userID'] ) && ( $mID <> $uID)) { //$reqID แจ้งผู้ขอ
if (substr($lcDep,0,1) == '-' ) {
$message_to_reply = $mName.' แจ้งว่า'.chr(13).chr(10).$lcDep.' '.chr(13).chr(10);
$pid='2';
$sid='38'; //
} else {
$message_to_reply = 'ท่านจะได้รับบริการโดย'.$mName.' '.chr(13).chr(10).' ภายใน '.$lcDep.' '.chr(13).chr(10).
'ประเมินหลังบริการ โดย @คะแนน'.chr(13).chr(10).'เช่น @46 ,หรือ ? เพื่อแสดงวิธีการใช้งานทั้งหมด';
$pid='2';
$sid='179'; //
}
pushURL($curlurl,'',$mID,$mBot,$message_to_reply,$pid,$sid); //IT อื่นๆ ใช้ PUSH
} else { //แจ้ง IT
if($mUser == $emp['userID']){
if (substr($lcDep,0,1) == '-' ) $message_to_reply = ' ตอบผู้รับบริการแล้ว ';
else $message_to_reply = ' แจ้งผู้รับบริการแล้ว '.chr(13).chr(10).' กรุณาบริการภายใน '.$lcDep;
pushURL($curlurl,$rToken,$uID,$botID,$message_to_reply,$pid,$sid); // IT ผู้แจ้งเองใช้ Reply
} else {
if (!strpos($receive,$emp['userID'])){ // แจ้งไม่ซ้ำ
$receive.=$emp['userID'];
$message_to_reply = 'รายงาน '.chr(13).chr(10).' '.substr($message,0,23).' '.chr(13).chr(10).' '.$mName;
if (substr($lcDep,0,1) == '-' ) $message_to_reply .= ' ตอบว่า '.$lcDep ;
else $message_to_reply .= 'จะไปบริการภายใน '.$lcDep ;
pushURL($curlurl,'',$mID,$mBot,$message_to_reply,$pid,$sid); //IT อื่นๆ ใช้ PUSH
}
}
}
sleep(2);
$pid='';
$sid='';
}
}
mysqli_free_result($Conn) ;
$message_to_reply='';
} else { //ผู้ร่วมบริการ บันทึกแต่ไม่ส่งข้อความตอบ User
$sQl = "UPDATE report SET CoWorker = IF(CoWorker is null OR CoWorker = '' ,'$mUser',concat(CoWorker,';$mUser')) ";
$sQl = $sQl ." where reqID='$reqID' AND reqDate ='$cDate'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$message_to_reply='บันทึกเป็นผู้ร่วมให้บริการเรียบร้อยแล้ว';
}
}
} //จบ ตอบบริการ
else { //ขอรับบริการ
if (substr($message,0,10) == 'TestServer') { //ทดสอบ Server
$pid='';
$sid = '';
pushURL($curlurl,'',$uID,$botID,substr($message,10)." >OK","",""); // PUSH
$message_to_reply = '';
} else { // **** ข้อความขอ รับบริการ
$dDate = date('Y-m-d H:i:s');
$dDate = date("YmdHis", strtotime($dDate));
$message_to_reply = 'ID'.$mUser.'@'.substr($dDate,0,11).'.'.substr($dDate,11,3).' '.chr(13).chr(10).' '. //ข้อความสำหรับแจ้ง IT
$mName.' # '.$mDept.' '.chr(13).chr(10).' แจ้ง: '.$message.' ';
$Ret='AN'; //AN = ไม่สามารถบันทึก
if ($mysqli->query("INSERT INTO report (reqID,reqDept ,reqReason,reqDate,notify) VALUES ('$mUser','$mDept','$message','$dDate',0)")) {
$Ret='AS'; //AS = ไม่สามารถส่งไป IT
$mID='';
$mBot='';
$Conn = $mysqli->query("SELECT userID,lineID,BotID From user Where instr(acctype,'IT') > 0");
while($emp = $Conn->fetch_array()){ //หารายชื่อเพื่อแจ้ง IT ทุกคน
$mID = $emp['lineID'];
$mBot = $emp['BotID'];
if (!is_null($mID)){ //แจ้ง It อย่างน้อย 1 คน Ret WI
if (pushURL($curlurl,'',$mID,$mBot,$message_to_reply,'2','34')=='200') $Ret = 'WI'; //และตอบกลับ request ว่า WI
//sleep(1);
}
}
mysqli_free_result($Conn);
}
}
}
}
if ( $Ret == 'OL'){
if( strlen($message_to_reply) > 0 || !(empty($pid) || empty($sid)) ) {
pushURL($curlurl,$rToken,$uID,$botID,$message_to_reply,$pid,$sid); //REply Msg
}
$Ret = 'FW'; //ฝั่ง request จะไม่ reply Msg
}
}
}
return $Ret;
}
?>