$xMax) : $xMax = $coordPair[0]; endif;
if (mcArrIsSet($coordPair, 1, 0) > $yMax) : $yMax = $coordPair[1]; endif;
}
}
return array($xMax+1, $yMax+1);
}
function createSignImage ($coordinatesArray) {
$maxCoordinates = checkMaxCoordinates ($coordinatesArray);
$im = @imagecreate ($maxCoordinates[0],$maxCoordinates[1]) or die ("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$lineCol = imagecolorallocate ($im, 0, 0, 0);
$caLen = count($coordinatesArray);
for ($i = 0; $i < $caLen; $i++) {
$tmpArray = $coordinatesArray[$i];
$taLen = count($tmpArray);
// do not use the last component because of the split above it will always be zero !!!
for ($j = 0; $j < $taLen-2; $j++) {
$coordPair1 = spliti(",",$coordinatesArray[$i][$j]);
$coordPair2 = spliti(",",$coordinatesArray[$i][$j+1]);
imageline ($im, $coordPair1[0], $coordPair1[1], $coordPair2[0], $coordPair2[1], $lineCol);
}
}
return $im;
}
function createImage ($imgFilename = "", $xCoord = "100", $yCoord = "100", $size = "25", $angle = "45", $text = "", $retMode = "0", $x = 30, $y = 80) {
if ($text == "") : $text = rand(1000,9999); endif;
if ($imgFilename == "") :
$imgFilename = "../temp/captchas/" . date("YmdHis", mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("y"))) . ".png";
endif;
$im = imagecreate ($xCoord, $yCoord) or die ("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$lineCol = imagecolorallocate ($im, 0, 0, 0);
imagettftext ($im, $size, $angle, $x, $y, $lineCol, "../include/arial.ttf", $text);
imagepng ($im, $imgFilename);
if ($retMode == "1") :
return $im;
else :
$imgTag = "
\n";
imagedestroy ($im);
return array($imgFilename, $text, $imgTag);
endif;
}
// Create a captcha image
function createCaptchaImage ($imgFilename = "", $xCoord = "100", $yCoord = "100", $size = "25", $angle = "45", $text = "") {
$img = createImage ($imgFilename, $xCoord, $yCoord, $size, $angle, $text);
return $img;
}
// Creates the image map according to the size parameter
function createMapImageFromFile ($mapFileName) {
$mapFileName = "../images/" . $mapFileName;
$im = "";
if (file_exists($mapFileName)) :
$im = @ImageCreateFromJPEG ($mapFileName); // Create image from file
endif; // Check file does exist
return $im;
}
// Returns the "pixel-point" according to the "geo-point" and the size of the current image map
function getMapImagePoint ($mapSizeMode = "2", $geoCoordX, $geoCoordY, $noDecimals = "1") {
$mapPointX = "0"; $mapPointY = "0";
if ($mapSizeMode != "1" && $mapSizeMode != "2" && $mapSizeMode != "3") : $mapSizeMode = "2"; endif;
if ($geoCoordX != "" && $geoCoordY != "") :
// Calibration parameters
// Hamburg 10.0011036114924 53.5541579534295 20095
// Magdeburg 11.6407479374166 52.1217786614182 39104
// 1.6396443259242 Delta X ~ +104 P. => 1.0 ~ 63.4284
// 1.4323792920113 Delta Y ~ -149 P. => 1.0 ~ 104.0227
$geoCoordConstX = "10.0011036114924"; $geoCoordConstY = "53.5541579534295";
$mapPointConstX = "280"; $mapPointConstY = "164";
$mapPointConstDeltaX = "63.4284"; $mapPointConstDeltaY = "104.0227";
// Resolution factor
if ($mapSizeMode == "1") :
// 622 x 833
$mapPointConstX *= "1"; $mapPointConstY *= "1";
$mapPointConstDeltaX *= "1.09"; $mapPointConstDeltaY *= "1.02";
endif;
if ($mapSizeMode == "2") :
// 673 x 900
$mapPointConstX = "305"; $mapPointConstY = "176";
$mapPointConstDeltaX *= "1.18"; $mapPointConstDeltaY *= "1.10";
endif;
if ($mapSizeMode == "3") :
// 765 x 1024
$mapPointConstX = "344"; $mapPointConstY = "201";
$mapPointConstDeltaX *= "1.33"; $mapPointConstDeltaY *= "1.255";
endif;
$mapPointX = $mapPointConstX + (($geoCoordX - $geoCoordConstX) * $mapPointConstDeltaX);
$mapPointY = $mapPointConstY + (($geoCoordConstY - $geoCoordY) * $mapPointConstDeltaY);
if ($noDecimals == "1") :
if (!(strpos($mapPointX, ".") === FALSE)) :
$mapPointX = substr($mapPointX, 0, strpos($mapPointX, "."));
endif;
if (!(strpos($mapPointY, ".") === FALSE)) :
$mapPointY = substr($mapPointY, 0, strpos($mapPointY, "."));
endif;
endif;
endif; // Check file does exist
return array($mapPointX, $mapPointY);
}
// Makes an image more transparent
function getTransparency ($im, $scalingFactorPercent = "0") {
if ($im) :
// Get size of the original image
$imSizeX = imagesx($im);
$imSizeY = imagesy($im);
// Create a new white temporary image for merging with original image
// $imTmp = @imagecreate ($imSizeX, $imSizeY) or die ("Cannot Initialize new GD image stream");
$imTmp = @imagecreate ("200", "200") or die ("Cannot Initialize new GD image stream");
imagecolorallocate ($imTmp, 255, 255, 255);
// int ImageCopy ( int dst_im, int src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h);
imagecopymerge ( $im, $imTmp, 0, 0, 0, 0, $imSizeX, $imSizeY, $scalingFactorPercent);
endif;
return $im;
}
// Displays box around a text
function setTextBox ($im, $boxPointsArray, $boxBorder = "0", $lineCol = "") {
if ($im && count($boxPointsArray) > 0) :
if ($lineCol == "") : $lineCol = imagecolorallocate ($im, 0, 0, 0); endif;
// bottom line (left to right)
imageline ($im, $boxPointsArray[0] - $boxBorder, $boxPointsArray[1] + $boxBorder, $boxPointsArray[2] + $boxBorder, $boxPointsArray[3] + $boxBorder, $lineCol);
// right line (bottom to top)
imageline ($im, $boxPointsArray[2] + $boxBorder, $boxPointsArray[3] + $boxBorder, $boxPointsArray[4] + $boxBorder, $boxPointsArray[5] - $boxBorder, $lineCol);
// top line (right to left)
imageline ($im, $boxPointsArray[4] + $boxBorder, $boxPointsArray[5] - $boxBorder, $boxPointsArray[6] - $boxBorder, $boxPointsArray[7] - $boxBorder, $lineCol);
// left line (top to bottom)
imageline ($im, $boxPointsArray[6] - $boxBorder, $boxPointsArray[7] - $boxBorder, $boxPointsArray[0] - $boxBorder, $boxPointsArray[1] + $boxBorder, $lineCol);
endif;
return $im;
}
// Displays a crosshairs of a special point
function setCrosshairs ($im, $point, $expansion = "30", $lineCol = "") {
if ($im && count($point) > 0) :
// Get size of the original image
$imSizeX = imagesx($im);
$imSizeY = imagesy($im);
if ($lineCol == "") : $lineCol = imagecolorallocate ($im, 0, 0, 0); endif;
imageline ($im, $point[0], $point[1] - $expansion, $point[0], $point[1] + $expansion, $lineCol);
imageline ($im, $point[0] - $expansion, $point[1], $point[0] + $expansion, $point[1], $lineCol);
endif;
return $im;
}
function getGeoCoordinatesFromZipcode($zipcode = "") {
global $srvp_longitude, $srvp_latitude, $plzg_laenge, $plzg_breite;
$retArray = array();
if (is_numeric($zipcode)) :
getDbFieldValues("serviceplz",array("srvp_longitude","srvp_latitude"),array("srvp_plz",$zipcode));
$zipLong = $srvp_longitude;
$zipLat = $srvp_latitude;
if ($zipLong == "" || $zipLat == "") :
getDbFieldValues("phoenix_special.plz_geodb",array("plzg_laenge","plzg_breite"),array("plzg_code",$zipcode));
$zipLong = $plzg_laenge;
$zipLat = $plzg_breite;
endif;
$retArray = array($zipLong, $zipLat);
endif;
return $retArray;
}
function getMapCoordinatesFromZipcode($zipcode = "", $mapSizeMode = "2") {
$retArray = array();
if (is_numeric($zipcode)) :
// Get geo coordinates from zipcode
$zipGeoCoord = getGeoCoordinatesFromZipcode($zipcode);
if ($zipGeoCoord[0] != "" && $zipGeoCoord[1] != "") :
// Get map coordinates
$retArray = getMapImagePoint($mapSizeMode, $zipGeoCoord[0], $zipGeoCoord[1]);
endif;
endif;
return $retArray;
}
function saveImageToFile($retVal, $filename, $systemPath = "..", $imgWidthNew = "", $imgHeightNew = "") {
global $hq_id;
if ($retVal != "" && $filename != "") :
if ($systemPath == "") : $systemPath = ".."; endif;
$rawCoord = splitRawCoordinates($retVal);
$maxCoord = checkMaxCoordinates($rawCoord);
$tmpSignPath = getParameterValue("0", "SIGNS_PATH", $hq_id);
if ($tmpSignPath == "") : $tmpSignPath = getParameterValue("0", "SIGNS_PATH", "0"); endif;
if ($tmpSignPath == "") : $tmpSignPath = "../temp/signs/"; endif;
$imgFilename = $tmpSignPath . $filename;
$im = createSignImage($rawCoord);
$boolImg = true;
if (!file_exists($imgFilename)) :
$boolImg = imagepng($im, $imgFilename);
endif;
// Overwrite width and height
$imgWidth = $maxCoord[0];
$imgHeight = $maxCoord[1];
if ($imgWidthNew != "" && is_numeric($imgWidthNew)) : $imgWidth = $imgWidthNew; endif;
if ($imgHeightNew != "" && is_numeric($imgHeightNew)) : $imgHeight = $imgHeightNew; endif;
if ($boolImg) :
if ($systemPath == "..") :
$retVal = "
";
else :
$retVal = "
" . $imgFilename . "\" border=\"0\" height=\"" . $imgHeight . "\" width=\"" . $imgWidth . "\">";
endif;
else :
$retVal = "";
endif;
endif;
return $retVal;
}
// Gets an image (e.g. photo) out of the database (table "b2b_objects"), generate a file and returns the filename
function getImageFromB2bObjects ($objId, $parPodPath = "", $objType = "tr", $fileName = "") {
global $db, $dbConnectionHistory, $hq_id;
$db_conn = $db;
$retVal = "";
if ($objId != "" && is_numeric($objId) && $objId > "0") :
$objIdLen = strlen(strval($objId));
$b2bTableName = "phoenix_log.b2b_objects";
// Get path for proof of delivery photo
if ($parPodPath == "") :
$parPodPath = getParameterValue("0", "JOB_DETAILS_PATH_POD_PHOTO", $hq_id);
if ($parPodPath == "") : $parPodPath = getParameterValue("0", "JOB_DETAILS_PATH_POD_PHOTO", "0"); endif;
if ($parPodPath == "") : $parPodPath = "../temp/photos/"; endif;
endif;
// Check filter by single filename
$whereClause = "";
if ($fileName != "") :
$whereClause = " AND bo_obj_data = '" . $fileName . "' ";
endif;
// Get ID to identify the image chunks
$imageFilename = getOneStmt("SELECT bo_obj_data FROM " . $b2bTableName . " WHERE bo_ext_id0 = '" . $objId . "' AND bo_type = '101'" . $whereClause, "bo_obj_data");
if ($imageFilename != "") :
$boId = getOneStmt("SELECT bo_id FROM " . $b2bTableName . " WHERE bo_ext_id0 = '" . $objId . "' AND bo_type = '101'" . $whereClause, "bo_id");
else :
$imageFilename = getOneStmt("SELECT bo_obj_data FROM " . $b2bTableName . " WHERE LEFT(bo_obj_data," . $objIdLen . ") = '" . $objId . "' AND bo_type = '101'", "bo_obj_data");
$boId = getOneStmt("SELECT bo_id FROM " . $b2bTableName . " WHERE LEFT(bo_obj_data," . $objIdLen . ") = '" . $objId . "' AND bo_type = '101'", "bo_id");
endif;
// If data not found try to get from b2b_objects history table
if (false) :
if ($boId == "") :
// Get connection to b2b_objects history database
$db_conn = getDbHistoryConnection($dbHistoryConnection);
if (is_object($db_conn)) :
// Get ID to identify the image chunks
$b2bTableName = "phoenix_log.b2b_objects_2015";
$imageFilename = getOneStmt("SELECT bo_obj_data FROM " . $b2bTableName . " WHERE bo_ext_id0 = '" . $objId . "' AND bo_type = '101'" . $whereClause, "bo_obj_data", $db_conn);
if ($imageFilename != "") :
$boId = getOneStmt("SELECT bo_id FROM " . $b2bTableName . " WHERE bo_ext_id0 = '" . $objId . "' AND bo_type = '101'" . $whereClause, "bo_id", $db_conn);
else :
$imageFilename = getOneStmt("SELECT bo_obj_data FROM " . $b2bTableName . " WHERE LEFT(bo_obj_data," . $objIdLen . ") = '" . $objId . "' AND bo_type = '101'", "bo_obj_data", $db_conn);
$boId = getOneStmt("SELECT bo_id FROM " . $b2bTableName . " WHERE LEFT(bo_obj_data," . $objIdLen . ") = '" . $objId . "' AND bo_type = '101'", "bo_id", $db_conn);
endif;
endif;
endif;
endif;
if ($boId != "") :
// Get encodes chunks of the image
$boObjDataArray = getColVectorFromDB2ArrayByClause($b2bTableName, "bo_obj_data", "bo_type = '102' AND bo_ext_id0 = '" . $boId . "'", "bo_ext_id2", "bo_ext_id2", "", $db_conn);
// Get encoded image data
$encodedImageData = "";
$boObjDataArrayLen = count($boObjDataArray);
if ($boObjDataArrayLen > 0) :
for ($i = 0; $i < $boObjDataArrayLen; $i++) {
$encodedImageData .= substr($boObjDataArray[$i],9,-3); // Remove "" from the end
}
if ($encodedImageData != "") :
// Decode image data
$decodedImageData = base64_decode($encodedImageData);
// Generate output file
if (file_exists($parPodPath . $imageFilename)) :
unlink($parPodPath . $imageFilename);
endif;
writeToFile($parPodPath . $imageFilename, $decodedImageData);
$retVal = $imageFilename;
endif;
endif;
endif;
endif;
return $retVal;
}
// Gets images (e.g. photos) out of the database (table "b2b_objects")
function getImagesFromB2bObjects ($objId, $parPodPath = "", $objType = "tr") {
global $db, $dbConnectionHistory, $hq_id;
$db_conn = $db;
$retArray = array();
if ($objId != "" && is_numeric($objId) && $objId > "0") :
$objIdLen = strlen(strval($objId));
$b2bTableName = "phoenix_log.b2b_objects";
// Get filenames of the specified object ID (job, tour, etc.)
$boFilenames = getColVectorFromDB2ArrayByClause($b2bTableName, "bo_obj_data", "bo_type = '101' AND bo_ext_id0 = '" . $objId . "'");
$boFilenamesLen = count($boFilenames);
if (false) :
if ($boFilenamesLen == 0) :
// Get connection to b2b_objects history database
$db_conn = getDbHistoryConnection($dbHistoryConnection);
if (is_object($db_conn)) :
$b2bTableName = "phoenix_log.b2b_objects_2015";
$boFilenames = getColVectorFromDB2ArrayByClause($b2bTableName, "bo_obj_data", "bo_type = '101' AND bo_ext_id0 = '" . $objId . "'", "", "", "", $db_conn);
$boFilenamesLen = count($boFielenames);
endif;
endif;
endif;
if ($boFilenamesLen > 0) :
for ($i = 0; $i < $boFilenamesLen; $i++) :
$fileName = getImageFromB2bObjects($objId, $parPodPath, $objType, $boFilenames[$i]);
if ($fileName != "") :
$retArray[] = $fileName;
endif;
endfor;
endif;
endif;
return $retArray;
}
// Gets an image (e.g. photo) out of the database (table "b2b_objects"), generate a file and returns the filename
function getImageFromPic ($objId, $parPodPath = "", $objType = "tr", $picID = "", $useDbHistoryTable = false) {
global $db, $dbConnectionHistory, $hq_id;
$db_conn = $db;
$retVal = "";
if ($objId != "" && is_numeric($objId) && $objId > "0") :
$objIdLen = strlen(strval($objId));
$picTableName = "phoenix_log.pic";
$filenamePrefix = "pic_tr_photo_";
$filenameSuffix = ".jpg";
$imageFilename = $filenamePrefix . $picID . $filenameSuffix;
// Get connection to pic history database if needed
if ($useDbHistoryTable) :
$db_conn = getDbHistoryConnection($dbHistoryConnection);
endif;
// Get path for proof of delivery photo
if ($parPodPath == "") :
$parPodPath = getParameterValue("0", "JOB_DETAILS_PATH_POD_PHOTO", $hq_id);
if ($parPodPath == "") : $parPodPath = getParameterValue("0", "JOB_DETAILS_PATH_POD_PHOTO", "0"); endif;
if ($parPodPath == "") : $parPodPath = "../temp/photos/"; endif;
endif;
// If data not found try to get from b2b_objects history table
if ($picID != "") :
// Get encoded image data
$picData = getFieldValueFromId($picTableName,"pic_id",$picID,"pic_data");
// Get encoded image data
$decodedImageData = base64_decode($picData);
// Generate output file
if (file_exists($parPodPath . $imageFilename)) :
unlink($parPodPath . $imageFilename);
endif;
writeToFile($parPodPath . $imageFilename, $decodedImageData);
$retVal = $imageFilename;
endif;
endif;
return $retVal;
}
// Gets images (e.g. photos) out of the database (table "pic")
function getImagesFromPic ($objId, $parPodPath = "", $objType = "tr") {
global $db, $dbConnectionHistory, $hq_id;
$db_conn = $db;
$retArray = array();
if ($objId != "" && is_numeric($objId) && $objId > "0") :
$objIdLen = strlen(strval($objId));
$picTableName = "phoenix_log.pic";
$useDbHistoryTable = false;
// Get filenames of the specified object ID (job, tour, etc.)
$picIDs = getColVectorFromDB2ArrayByClause($picTableName, "pic_id", "tr_id = '" . $objId . "'");
$picIDsLen = count($picIDs);
/*
if ($picIDsLen == 0) :
// Get connection to b2b_objects history database
$db_conn = getDbHistoryConnection($dbHistoryConnection);
if (is_object($db_conn)) :
$picTableName = "phoenix_log.pic_20XX";
$picIDs = getColVectorFromDB2ArrayByClause($picTableName, "pic_id", "tr_id = '" . $objId . "'", "", "", "", $db_conn);
$picIDsLen = count($picIDs);
if ($picIDsLen > 0) :
$useDbHistoryTable = true;
endif;
endif;
endif;
*/
if ($picIDsLen > 0) :
for ($i = 0; $i < $picIDsLen; $i++) :
$fileName = getImageFromPic($objId, $parPodPath, $objType, $picIDs[$i], $useDbHistoryTable);
if ($fileName != "") :
$retArray[] = $fileName;
endif;
endfor;
endif;
endif;
return $retArray;
}
?>