\n"; } else { fputs ($fp, $completeReq); fflush($fp); // Read header $httpHeader = ""; $httpBodyLength = 0; if (!feof($fp)) : $line = trim(fgets ($fp,1024)); $httpHeader .= trim(fgets ($fp,1024)); while (!feof($fp) && $line != "") { $line = trim(fgets ($fp,1024)); $httpHeader .= $line; if (!(strpos($line, "Content-length: ") === FALSE)) : $httpBodyLength = trim(substr($line, 16)); endif; } endif; if ($httpBodyLength > 0) : $response .= fgets ($fp, $httpBodyLength + 1); endif; // while (!feof($fp)) { // $response .= fgets ($fp,1024); // } fclose ($fp); } return $response; } // ********************************* // * Search MSISDN from courier-id * // ********************************* // Get courier-id from the courier-sid (e.g. SIDs: 1013, 1019, etc.) $cr_id = getFieldValueFromId("courier","cr_sid",$f_cr_sid,"cr_id"); $msisdn = getFieldValueFromId("courier","cr_id",$cr_id,"cr_mobile_pda"); // Remove blanks in MSISDN and check beginning with "49" // (IMPORTANT: No check for other chars because checked in javascript !!!) $msisdn = ereg_replace (" ", "", $msisdn); $msisdn = str_replace("+", "", $msisdn); if (!ereg("^" . COUNTRY_FON_PREFIX, $msisdn)) : if (ereg("^0", $msisdn)) : $msisdn = substr($msisdn, 1); endif; $msisdn = COUNTRY_FON_PREFIX . $msisdn; endif; // Test-MSISDN D1: // $msisdn = "491703900198"; // ******************** // * Generate request * // ******************** /* TEMPLATES: Connection Setup request: response: Location (n-mal) request: response: <>> Connection Release request: response: error response: */ // Define header request $requestheaderOrg = "POST /" . $file . " HTTP/1.1\r\n" . "Host: $server$port\r\n" . "Content-Type: text/plain\r\n" . "Content-length: LENGTH\r\n\r\n"; // Connection request $requestConnectionSetup = ""; $laenge = strlen($requestConnectionSetup); $requestheader = $requestheaderOrg; $requestheader = str_replace ("LENGTH", $laenge, $requestheader); if ($echoEnabled) : echo $requestheader . $requestConnectionSetup . "\n\n\n"; endif; $response = openSSL_connect($opensslPort, $requestheader.$requestConnectionSetup."\r\n"); if ($echoEnabled) : echo $response . "\n\n\n"; endif; if (!(strpos($response, "") === FALSE)) : // Error occurred, no connection ... $status_message = "Die Verbindung konnte nicht hergestellt werden!"; else : if ((strpos($response, "") === FALSE)) : // Error occurred, no session handle delivered ... $status_message = "Es wurde kein Sessionhandle zurückgeliefert!"; else : // Get session handle from connection request $beginPos = strpos($response, "" . "" . "" . "" . "" . "" . "" . "" . ""; $laenge = strlen($requestLocating); $requestheader = $requestheaderOrg; $requestheader = str_replace ("LENGTH", $laenge, $requestheader); if ($echoEnabled) : echo $requestheader.$requestLocating . "\n\n\n"; endif; // Locating request $response = openSSL_connect($opensslPort, $requestheader.$requestLocating."\r\n"); if ($echoEnabled) : echo $response . "\n\n\n"; endif; if (!(strpos($response, "") === FALSE)) : $status_message = "Bei der Lokalisierung trat ein Fehler auf!"; else : if ((strpos($response, "") === FALSE)) : $status_message = "Die Lokalisierung war nicht möglich!"; else : // GET LOCATING INFOS OF THE RESPONSE // Get session handle from connection request $beginPos = strpos($response, ""; endif; $beginPos = strpos($response, "RADIUS=") + 7; $endPos = strpos($response, ";>>"; endif; $coordPairArray = spliti(",",$coordPair); // Transform data // Example: $coordPair = "555555,133333" // $coordPairArray[0] = "555555" | $coordPairArray[0] = "133333" // $x_coord_array[0] = "55" (Stellen 0 und 1) | $x_coord_array[1] = "55" (Stellen 2 und 3) | $x_coord_array[2] = "55" (Stellen 4 und 5) // $y_coord_array[0] = "13" (Stellen 0 und 1) | $y_coord_array[1] = "33" (Stellen 2 und 3) | $y_coord_array[2] = "33" (Stellen 4 und 5) $x_coord_array = array(); $x_coord_array[0] = substr($coordPairArray[0], 0, 2); $x_coord_array[1] = substr($coordPairArray[0], 2, 2); $x_coord_array[2] = substr($coordPairArray[0], 4); $y_coord_array = array(); $y_coord_array[0] = substr($coordPairArray[1], 0, 2); $y_coord_array[1] = substr($coordPairArray[1], 2, 2); $y_coord_array[2] = substr($coordPairArray[1], 4); // *************************************************** // * Compute longitude and latitude (transformation) * // *************************************************** $longitude = $y_coord_array[ 0 ] + $y_coord_array[ 1 ] /60 + $y_coord_array[ 2 ] / 3600; $latitude = $x_coord_array[ 0 ] + $x_coord_array[ 1 ] / 60 + $x_coord_array[ 2 ] / 3600; // ******************************** // * Get zipcode from coordinates * // ******************************** if (LOCATING_MODE == "0") : $zipcode = findZipcodeArea($longitude, $latitude); else : // Get nearest coordinates $sqlquery = "SELECT srvp.srvp_id, srvp.srvp_plz, srvp.srvp_latitude, srvp.srvp_longitude, " . "SQRT(POW(ABS(srvp.srvp_latitude - $latitude),2) + POW(ABS(srvp.srvp_longitude - $longitude),2)) AS nb" . " FROM serviceplz AS srvp" . " ORDER BY nb" . " LIMIT 0,1"; $result = $db->query($sqlquery); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage()); // all defined db-fields an titles shall become content of the following arrays while ($row = $result->fetch_assoc()): $f_srvp_plz = $row["srvp_plz"]; // Zipcode to be displayed endwhile; $result->free(); $zipcode = $f_srvp_plz; endif; $status_message = "REALER Standort-PLZ des Kuriers: " . $zipcode . "" . " (" . $longitude . " / " . $latitude . ")

"; // ********************************* // * Update zipcode of the courier * // ********************************* $updateRankingTime = TRUE; // Get current zipcode of the courier out of the table "courier" (cr_locationzipcode) to compare with locating zipcode $crLocationZipcode = getFieldValueFromId("courier","cr_id",$cr_id,"cr_locationzipcode"); $status_message .= "(Freimeldung des Kuriers: " . $crLocationZipcode . ")

"; if ($zipcode != "" && $crLocationZipcode != "" && is_numeric($crLocationZipcode)) : // Check current zipcode with locating zipcode if ($zipcode == $crLocationZipcode) : $updateRankingTime = FALSE; else : // Check locating zipcode is in neighbourhood // If true then ok => do not update ranking time // Get the general mediation mode for the headquarter $mediationMode = MODE_INTERMEDIATION; if ($mediationMode == "") : $mediationMode = getFieldValueFromId("headquarters", "hq_id", "$hq_id", "hq_invmode"); endif; // Get all neighbours for the current zipcode(area) if ($mediationMode == "1") : $zicodeArray = getCourierByRanking($crLocationZipcode, "0000010000", "", ""); $zicodeArray = $zicodeArray[5]; else : $areaIdArray = getCourierByRanking($crLocationZipcode, "0000010000", "", ""); $areaIdArray = $areaIdArray[5]; // Add ID of the main mediation area $srvpIdZipcode = getFieldValueFromId("serviceplz","srvp_plz",$crLocationZipcode,"srvp_id"); // $srvpaIdMain = getFieldValueFromId("serviceplzareamapping","srvp_id",$srvpIdZipcode,"srvpa_id"); $srvpaIdMain = $db->getOne("SELECT srvpam.srvpa_id FROM serviceplzarea AS srvpa, serviceplzareamapping AS srvpam" . " WHERE srvpam.srvp_id = '" . $srvpIdZipcode . "' AND srvpa.srvpa_id = srvpam.srvpa_id AND srvpa.hq_id = '" . $hq_id . "'"); if ($areaIdArray == "") : $areaIdArray = array(); endif; array_push($areaIdArray, $srvpaIdMain); $areaIdArrayLen = count($areaIdArray); $outputOfAllValidMainZipcodes = "GÜLTIGE BEREICHE:
"; $outputOfAllValidMainZipcodes .= "_________________

"; $outputOfAllValidMainZipcodes .= "Hauptbereich:
"; $outputOfAllValidNeighbourZipcodes = ""; $zicodeArray = array(); for ($i = 0; $i < $areaIdArrayLen; $i++) : if ($i < $areaIdArrayLen - 1) : $outputOfAllValidNeighbourZipcodes .= "Nachbarbereich " . ($i + 1) . "
"; endif; $sqlquery = "SELECT srvp.srvp_plz" . " FROM serviceplzareamapping AS srvpam, serviceplz AS srvp" . " WHERE srvpam.srvp_id = srvp.srvp_id AND srvpam.srvpa_id = '" . $areaIdArray[$i] . "'"; $result = $db->query($sqlquery); if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage()); while ($row = $result->fetch_assoc()): $zicodeArray[] = $row[srvp_plz]; if ($i < $areaIdArrayLen - 1) : $outputOfAllValidNeighbourZipcodes .= $row[srvp_plz] . "
"; else : $outputOfAllValidMainZipcodes .= $row[srvp_plz] . "
"; endif; endwhile; $result->free(); if ($i < $areaIdArrayLen - 1) : $outputOfAllValidNeighbourZipcodes .= "-----------------

"; else : $outputOfAllValidMainZipcodes .= "-----------------

"; endif; endfor; $outputOfAllValidZipcodes = $outputOfAllValidMainZipcodes . $outputOfAllValidNeighbourZipcodes; endif; $zicodeArrayLen = count($zicodeArray); for ($i = 0; $i < $zicodeArrayLen; $i++) : if ($zipcode == $zicodeArray[$i]) : $updateRankingTime = FALSE; endif; endfor; endif; $currentTime = getDateTime("0"); if ($updateRankingTime) : updateStmt("courier", "cr_id", $cr_id, array("cr_locationzipcode", $zipcode, "cr_availabletime", $currentTime)); $status_message .= "Die Rankingposition ging verloren!

"; else : // updateStmt("courier", "cr_id", $cr_id, array("cr_locationzipcode", $zipcode)); $status_message .= "Die Rankingposition bleibt erhalten!

"; endif; else : $currentTime = getDateTime("0"); endif; // Update current position to courier with timestamp if ($longitude != "" && $latitude != "" && substr($longitude , 0, 1) != "0" && substr($latitude , 0, 1) != "0" && is_numeric($longitude) && is_numeric($latitude)) : updateStmt("courier", "cr_id", $cr_id, array("cr_gps_long", $longitude, "cr_gps_lat", $latitude, "cr_gps_time", $currentTime)); endif; // *********** // * LOGGING * // *********** // Get usr_id of the current employee (session) $currentSessionUsrId = getFieldValueFromId("employee", "emp_id", $emp_id, "usr_id"); // Loose Ranking yes/no $looseRanking = "NO"; if ($updateRankingTime) : $looseRanking = "YES"; endif; // Write logdata into log database writeToLogDB("27",$hq_id,"0",$currentSessionUsrId,$cr_id,$f_cr_sid,"","LONG=".$longitude."|LAT=".$latitude."|ZIP_REAL=".$zipcode."|ZIP_FREE=".$crLocationZipcode."|NO=".$msisdn."|LRANK=".$looseRanking); // ******************** // * Close connection * // ******************** $requestID++; $requestConnectionRelease = ""; $laenge = strlen($requestConnectionRelease); $requestheader = $requestheaderOrg; $requestheader = str_replace ("LENGTH", $laenge, $requestheader); if ($echoEnabled) : echo $requestheader.$requestConnectionRelease . "


"; endif; // Connect Release $response = openSSL_connect($opensslPort, $requestheader.$requestConnectionRelease."\r\n"); endif; endif; endif; endif; ?> ORTUNG
Kurier-SID:

MSISDN: