/dev/null &");
endif;
}
// *****************************************************************************
// Current timestamp
$currentTime = date("Y-m-d H:i:s");
$currentDateYesterday = getDateTime("date_plus_offset", array(0,-1,0), $formatStr = "Y-m-d");
// Define start time for b2b_object only !!!!
$constAmStarttimeInDays = 30;
$startTime = getDateTime("datetime_plus_offset", array(0,0,0,0,-($constAmStarttimeInDays),0), "Y-m-d") . " 00:00:00";
$whereClauseStarttime = " bo_createtime >= '" . $startTime . "' AND ";
getSecHttpVars("0", array("filedata", "filename", "metadata"));
//writeToFile("uploader_post.log", "[" . $currentTime . " | " . trim($_SERVER['REMOTE_ADDR']) . "]\n" . var_export($HTTP_POST_VARS, true) . "\n");
//writeToFile("uploader_post_raw.log", "[" . $currentTime . " | " . trim($_SERVER['REMOTE_ADDR']) . "]\n" . file_get_contents("php://input") . "\n");
// DB-Config
$dbhost = "172.16.0.111:3711"; // EXTERNAL_DB_METAOBJECT
$dblogin = "phoenix";
$dbpassword = "AdAdgkS13";
$dbname = "phoenix";
$dsn = "mysql://$dblogin:$dbpassword@$dbhost/$dbname";
$db = DB::connect($dsn, false);
if (mysql_errno())
writeToFile("upload.log", "DB-Error:" . " | " . $currentTime . " | " . date("Y-m-d H:i:s") . " | " . trim($_SERVER['REMOTE_ADDR']) . " | " . $filename . mysql_error());
if (DB::isError($db))
die ("$PHP_SELF: " . $db->getMessage());
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$db->query('SET NAMES latin1');
// calling client IP
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
$opState = "OK";
$filename = trim($filename);
// 30.08.2016 CA: "Filename empty" and "No file data" shall be ignored from now on because those data will never ever be sent correctly
if ($filename == "")
$filename = trim($_SERVER['REMOTE_ADDR']) . "_" . date("YmdHis") . ".jpg";
if ($filedata == "")
$filedata = "No file data";
if ($currentClientIP != "") :
if ($filename != "") :
if ($filedata != "") :
// Set and check upload counter for AMOK mail
if ($currentClientIP != "" && $filename != "") :
if (!existsEntry("temp.app_upload",array("appu_ip",$currentClientIP,"appu_file",$filename))) :
insertStmt("temp.app_upload", array("appu_ip", $currentClientIP, "appu_file", $filename, "appu_cnt", "1"));
else :
$cnt = getFieldValueFromClause("temp.app_upload","appu_cnt","appu_ip = '" . $currentClientIP . "' AND appu_file = '" . $filename . "'");
$cnt++;
updateStmt("temp.app_upload","appu_ip",$currentClientIP,array("appu_cnt",$cnt),"appu_file = '" . $filename . "'");
endif;
$cnt = getFieldValueFromClause("temp.app_upload","appu_cnt","appu_ip = '" . $currentClientIP . "' AND appu_file = '" . $filename . "'");
if ($cnt == "") : $cnt = "0"; endif;
if (($cnt % 10) == 0) :
sendInternalMail("AMOK-FILE " . $filename . " [" . $currentClientIP . "] UPLOAD-COUNTER: " . $cnt);
endif;
endif;
// **** Write data into DB ****
// Get external databases (e.g. APP properties, mobile data, etc.)
$dbhostArray = getGlobalDbEnvironments();
$dbhostArrayLen = count($dbhostArray);
$dbConnectionArray = array();
if ($dbhostArrayLen > 0) :
$dbConnectionArray["app_property"] = getDbConnectionSpecial($dbhostArray["as_intern"], "sysadmin", $dblogin, $dbpassword);
if ($dbConnectionArray["app_property"] != "") :
$confPropRowMatched = false;
// Get tr_id from "metadata"
// ppjpgmoebel_live380311
// ldaHB1057763876238746494238749872377747888
$xmlContext = getSingleTagContent($metadata, "", "");
$xmlType = getSingleTagContent($metadata, "", "");
$xmlCust = getSingleTagContent($metadata, "", "");
$xmlJbId = getSingleTagContent($metadata, "", "");
$debugMode = false;
$xmlDebug = getSingleTagContent($metadata, "", "");
if ($xmlDebug != "") :
$debugMode = true;
endif;
if ($xmlContext == "lda") :
$xmlAcc = getSingleTagContent($metadata, "", "");
$xmlSessKey = getSingleTagContent($metadata, "", "");
$xmlComm = getSingleTagContent($metadata, "", "");
$xmlComm = trim($xmlComm); // !!!!
$custId = getFieldValueFromId("temp.user_session","us_key", $xmlSessKey,"cust_id",$dbConnectionArray["app_property"]);
$usrId = getFieldValueFromId("temp.user_session","us_key", $xmlSessKey,"usr_id",$dbConnectionArray["app_property"]);
$confPropRowMatched = true; // No entry in conf_prop, because of LDA mode, but ok to proceed!
else:
// Get cust_id, hq_id and usr_id from table conf_prop
$sqlquery = "SELECT cust_id, hq_id, usr_id FROM sysadmin.conf_prop WHERE prop_id = '1' AND cp_val = '" . $currentClientIP . "'";
$result = $dbConnectionArray["app_property"]->query($sqlquery);
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
while ($row = $result->fetch_assoc()):
$custId = $row["cust_id"];
$hqId = $row["hq_id"];
$usrId = $row["usr_id"];
$confPropRowMatched = true;
endwhile;
$result->free();
endif;
if ($confPropRowMatched) :
// Get special database from information in
$moMnemonicTargetDb = getOperationalDatabase($custId);
if ($moMnemonicTargetDb != "") :
$remDb = $db;
$db = getDbConnectionSpecial($moMnemonicTargetDb, $dbname, $dblogin, $dbpassword);
if ($custId == "3" || $custId == "103") :
// Decode BASE64 and uncompress
$filedata = base64_decode($filedata);
$filedata = gzinflate($filedata);
// Get cr_id from usr_id
$crId = getFieldValueFromId("phoenix.courier","usr_id", $usrId,"cr_id");
if ($crId != "" && $crId != "0") :
// Generate output file by writing $filedata
$path = "../upload/mbl_foto/";
// if (file_exists($path . $filename)) :
// unlink($path . $filename);
// endif;
writeToFile($path . $filename, $filedata);
// sleep(2);
// if (!file_exists($path . $filename)) :
// $opState = "ERR 113 : No bo_ext_id0 ID!";
// endif;
// Get b2b object
$boId = getFieldValueFromClause("phoenix_log.b2b_objects", "bo_id", $whereClauseStarttime . "bo_type = '101' AND bo_ext_id1=" . $crId . " AND bo_obj_data = '" . $filename . "'");
if ($boId != "" && $boId != "0") :
$res = updateStmt("phoenix_log.b2b_objects","bo_ext_id0",$boId,array("bo_state", "1"), "bo_type = '105'");
/*
if ($db->affected_rows = 0) :
$opState = "ERR 112 : No update by 105!";
endif;
*/
$boIdNew101 = $boId; // For error handling ONLY
else :
$sqlStmt = "INSERT INTO phoenix_log.b2b_objects (bo_ver,bo_type,bo_state,bo_ext_id0,bo_ext_id1,bo_ext_id2,bo_obj_data,bo_createtime)" .
" VALUES ('0','101','1','0','$crId','0','$filename','$currentTime')";
$res = $db->query($sqlStmt);
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
$boIdNew101 = getLastInsertID();
// $opState = "ERR 111 : No bo_ext_id0 ID!";
endif;
else :
// $opState = "ERR 110 : No courier ID!";
endif;
elseif ($custId == "6" || $custId == "106" || $custId == "11" || $custId == "1" || $custId == "2" || $custId == "100" || $custId == "101" || $custId == "102") :
$xmlTrId = "";
if ($xmlComm != "" && ($custId == "1" || $custId == "2" || $custId == "100" || $custId == "101" || $custId == "102")) :
$xmlJbId = getFieldValueFromClause("phoenix.tour", "jb_id", "tr_commission_no = '" . $xmlComm . "' ORDER BY jb_id DESC LIMIT 0,1");
$xmlTrId = getFieldValueFromClause("phoenix.tour", "tr_id", "tr_commission_no = '" . $xmlComm . "' ORDER BY jb_id DESC LIMIT 0,1");
$hqId = getFieldValueFromId("phoenix.user","usr_id", $usrId,"hq_id");
endif;
if ($debugMode) :
echo "xmlJbId: " . $xmlJbId . "
";
echo "hqId: " . $hqId . "
";
endif;
// Decode BASE64 and uncompress
$filedata = base64_decode($filedata);
$filedata = gzinflate($filedata);
$filedata = base64_encode($filedata);
// writeToFile("debug.log", $filedata);
$filedataArray = str_split($filedata, 32768); // 32K
$filedataArrayLen = count($filedataArray);
for ($i = 0; $i < $filedataArrayLen; $i++) :
$tmpChunk = $filedataArray[$i];
$filedataArray[$i] = "";
endfor;
// writeToFile("debug2.log", $tmpOut);
// Write main file
// writeToFile($filename, $filedata);
// $bo_ext_id0 = "";
// $bo_ext_id0 = $xmlJbId;
/*
if ($xmlCust == "moebel_live") :
if ($xmlJbId != "" && is_numeric($xmlJbId)) :
$bo_ext_id0 = getFieldValueFromClause("phoenix.tour","tr_id","jb_id = '" . $xmlJbId . "' AND tr_sort = '2'"); // equals tr_id
endif;
endif;
*/
if ($debugMode) :
echo "xmlJbId: " . $xmlJbId . "
";
echo "xmlTrId: " . $xmlTrId . "
";
echo "usrId: " . $usrId . "
";
echo "filename: " . $filename . "
";
echo "currentTime: " . $currentTime . "
";
endif;
// **** Insert data sets into b2b_objects ***
if ($xmlJbId != "" && $xmlContext != "lda") :
if (!existsEntry("phoenix_log.b2b_objects",array("bo_type","101","bo_ext_id0",$xmlJbId,"bo_obj_data",$filename))) :
// Insert "101"
$sqlStmt = "INSERT INTO phoenix_log.b2b_objects (bo_ver,bo_type,bo_state,bo_ext_id0,bo_ext_id1,bo_ext_id2,bo_obj_data,bo_createtime)" .
" VALUES ('0','101','0','$xmlJbId','$usrId','0','$filename','$currentTime')";
$res = $db->query($sqlStmt);
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
$boIdNew101 = getLastInsertID();
if ($debugMode) :
echo "boIdNew101: " . $boIdNew101 . "
";
endif;
// Insert "102"
for ($i = 0; $i < $filedataArrayLen; $i++) :
$sqlStmt = "INSERT INTO phoenix_log.b2b_objects (bo_ver,bo_type,bo_state,bo_ext_id0,bo_ext_id1,bo_ext_id2,bo_obj_data,bo_createtime)" .
" VALUES ('0','102','0','$boIdNew101','$usrId','$i','$filedataArray[$i]','$currentTime')";
$res = $db->query($sqlStmt);
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
$boIdNew102 = getLastInsertID();
endfor;
endif;
else :
// Existing "101"
$boIdNew101 = getFieldValueFromClause("phoenix_log.b2b_objects", "bo_id", "bo_type = '101' AND bo_createtime >= '" . $currentDateYesterday . "' AND bo_obj_data = '" . $filename . "'");
// Job ID
// $xmlJbId = getFieldValueFromClause("phoenix_log.b2b_objects", "bo_ext_id1", "bo_type = '120' AND bo_state > '0' AND bo_createtime >= '" . $currentDateYesterday . "' AND bo_obj_data LIKE '%" . $filename . "%'");
$xmlTrId = getFieldValueFromClause("phoenix_log.b2b_objects", "bo_ext_id2", "bo_type = '120' AND bo_createtime >= '" . $currentDateYesterday . "' AND bo_obj_data LIKE '%" . $filename . "%'");
if ($debugMode) :
echo "xmlTrId: " . $xmlTrId . "
";
endif;
if ($boIdNew101 == "") :
// Insert "101"
$sqlStmt = "INSERT INTO phoenix_log.b2b_objects (bo_ver,bo_type,bo_state,bo_ext_id0,bo_ext_id1,bo_ext_id2,bo_obj_data,bo_createtime)" .
" VALUES ('0','101','0','$xmlTrId','$usrId','0','$filename','$currentTime')";
$res = $db->query($sqlStmt);
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
$boIdNew101 = getLastInsertID();
else :
// Update "101"
$sqlStmt = "UPDATE phoenix_log.b2b_objects SET bo_ext_id0 = '$xmlTrId' WHERE bo_id = '$boIdNew101'";
$res = $db->query($sqlStmt);
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
endif;
if ($debugMode) :
echo "boIdNew101: " . $boIdNew101 . "
";
endif;
// Insert "102"
if ($boIdNew101 != "") :
for ($i = 0; $i < $filedataArrayLen; $i++) :
$sqlStmt = "INSERT INTO phoenix_log.b2b_objects (bo_ver,bo_type,bo_state,bo_ext_id0,bo_ext_id1,bo_ext_id2,bo_obj_data,bo_createtime)" .
" VALUES ('0','102','0','$boIdNew101','$usrId','$i','$filedataArray[$i]','$currentTime')";
$res = $db->query($sqlStmt);
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
$boIdNew102 = getLastInsertID();
endfor;
endif;
endif;
endif;
$db = $remDb;
else :
$opState = "ERR 107 : No target database specified!";
endif;
else :
$opState = "ERR 106 : No row in table conf_prop matched!";
endif;
else :
$opState = "ERR 105 : metaobject not reachable!";
endif;
else :
$opState = "ERR 104 : No global environment definitions found!";
endif;
else :
$opState = "ERR 103 : No file data!";
endif;
else :
$opState = "ERR 102 : Filename empty!";
endif;
else :
$opState = "ERR 101 : Unknown client IP!";
endif;
// Write metadata to log
$logFilename = "upload.log";
if ($custId != "" && is_numeric($custId)) :
$logFilename = "upload_" . $custId . ".log";
endif;
writeToFile($logFilename, $custId . " | " . $currentTime . " | " . date("Y-m-d H:i:s") . " | " . $currentClientIP . " | " . $filename . " | " . $metadata . " | " . $opState . " | boIdNew101: " . $boIdNew101 . " | boIdNew102: " . $boIdNew102 . " | xmlJbId: " . $xmlJbId . " | xmlTrId: " . $xmlTrId);
// Write file data by error
if (($opState != "OK" || ($boIdNew101 == "" || !is_numeric($boIdNew101))) && $filename != "" && $filedata != "") :
$errPath = "../upload/photos_err/";
writeToFile($errPath . $filename, $filedata);
$opState = "OK";
endif;
// Response
//echo $opState;
// 01.09.2016 CA: always respond "OK" because the data will never be sent correctly if they are wrong
echo "OK";
?>