// Change array keys to lowercase. Good for Fishbowl query results
function array_change_key_case_recursive($arr){
return array_map(function($item){
if(is_array($item))
$item = array_change_key_case_recursive($item);
return $item;
},array_change_key_case($arr));
}
function object2array($object) {
return @json_decode(@json_encode($object),1);
}
//function processRs($resp)
// Formats fishbowl date
function fbdate($date) {
if($date=="") return $date;
return date('m/d/Y', strtotime($date));
}
function fbimage($val) {
return json_decode($val);
}
function money($val, $style=true) {
if($val == 0) return "$0";
if($val=="") return $val;
$val = '$'.number_format($val, 2);
if($style == true) {
list($dollar, $cent) = explode('.', $val);
$val = "".$dollar."".$cent."";
}
return $val;
}
function perc($val) {
return sprintf("%.2f%%", $val * 100);
}
function getfbdate($date) {
$date = explode("/",$date);
return $date[2] . "-" . $date[0] . "-" . $date[1] . "T00:00:00";
}
// Using sessions to store user options until database is set up
function getOption($name) {
//return Session::get($name);
global $data;
//print_r($data);
return decodeOption($data['myoptions'][$name]);
}
function cleanForSQL($val) {
$val = str_replace("'","''", $val);
$val = str_replace('"','\"', $val);
return $val;
}
function encodeCSV($val) {
if($val == "") return $val;
$val = str_replace('"', '"', $val);
$val = str_replace('\\', '\\\\', $val);
$val = str_replace('"', '\\"', $val);
//$val = $this->encodeXML($val);
//$val = str_replace('"', '""', $val);
//$val = preg_replace('/&(?![A-Za-z0-9#]{1,7};)/','&',$val);
$val = html_entity_decode($val);
return "\"$val\"";
}
function encodeOption($val) {
$val = str_replace(array(":","|"), array("%3A","%7C"), $val);
return $val;
}
function decodeOption($val) {
$val = str_replace(array("%3A","%7C"), array(":","|"), $val);
return $val;
}
function getAddressType($id) {
$data = "";
switch($id) {
case 10: $data = "Ship To"; break;
case 20: $data = "Bill To"; break;
case 30: $data = "Remit To"; break;
case 40: $data = "Home"; break;
case 50: $data = "Main Office"; break;
}
return $data;
}
function getWOItemType($id) {
$data = "";
switch($id) {
case 10: $data = "Entered"; break;
case 20: $data = "Picking"; break;
case 30: $data = "Working"; break;
case 40: $data = "Partial"; break;
case 50: $data = "Fulfilled"; break;
case 60: $data = "Closed Short"; break;
case 70: $data = "Void"; break;
}
return $data;
}
function getShipStatus($id) {
$data = "";
switch($id) {
case 10: $data = "Entered"; break;
case 20: $data = "Packed"; break;
case 30: $data = "Shipped"; break;
case 40: $data = "Cancelled"; break;
}
return $data;
}
function getSOType($id) {
switch($id) {
case 10: return "Standard";
case 20: return "Point of Sale";
case 70: return "Consignment";
}
}
function getSOStatus($id) {
$data = "";
switch($id) {
case 10: $data = "Estimate"; break;
case 20: $data = "Issued"; break;
case 25: $data = "In Progress"; break;
case 60: $data = "Fulfilled"; break;
case 70: $data = "Closed Short"; break;
case 80: $data = "Void"; break;
}
return $data;
}
function getSOItemStatus($id) {
$data = "";
switch($id) {
case 10: $data = "Entered"; break;
case 11: $data = "Awaiting Build"; break;
case 12: $data = "Building"; break;
case 14: $data = "Built"; break;
case 20: $data = "Picking"; break;
case 30: $data = "Partial"; break;
case 40: $data = "Picked"; break;
case 50: $data = "Fulfilled"; break;
case 60: $data = "Closed Short"; break;
case 70: $data = "Void"; break;
}
return $data;
}
// Priority is the same for SO, Pick, etc
function getPriority($id) {
$data = "";
switch($id) {
case 10: $data = "Highest"; break;
case 20: $data = "High"; break;
case 30: $data = "Normal"; break;
case 40: $data = "Low"; break;
case 50: $data = "Lowest"; break;
}
return $data;
}
function getSOItemType($id) {
$data = "";
switch($id) {
case 10: $data = "Sale"; break;
case 11: $data = "Misc. Sale"; break;
case 12: $data = "Drop Ship"; break;
case 20: $data = "Credit Return"; break;
case 21: $data = "Misc. Credit"; break;
case 30: $data = "Discount Percentage"; break;
case 31: $data = "Discount Amount"; break;
case 40: $data = "Subtotal"; break;
case 50: $data = "Assoc. Price"; break;
case 60: $data = "Shipping"; break;
case 70: $data = "Tax"; break;
case 80: $data = "Kit"; break;
case 90: $data = "Note"; break;
}
return $data;
}
function getReceiveType($id) {
/*
ID NAME
10 Standard
20 Receive Only
30 Reconcile Only
*/
}
function getReceiveStatus($id) {
$data = "";
switch($id) {
case 10: $data = "Entered"; break;
case 20: $data = "Reconciled"; break;
case 30: $data = "Received"; break;
case 40: $data = "Fulfilled"; break;
}
return $data;
}
function getReceiveItemType($id) {
/*
1 None
10 StockRework
20 RejectReturn
30 ScrappedLost
*/
}
function getReceiveItemStatus($id) {
/*
10 Entered
20 Reconciled
30 Received
40 Fulfilled
*/
}
function getOrderType($id) {
$data = "";
switch($id) {
case 10: $data = "PO"; break;
case 20: $data = "SO"; break;
case 30: $data = "WO"; break;
case 40: $data = "TO"; break;
}
return $data;
}
function getTypeID($val) {
$data = "";
switch($val) {
case "PO": case "P": $data = 10; break;
case "SO": case "S": $data = 20; break;
case "WO": case "W": $data = 30; break;
case "TO": case "T": $data = 40; break;
}
return $data;
}
// Used for log files
function getPageView() {
$url = isset($_GET['url']) ? strtolower($_GET['url']) : null;
$url = rtrim($url, '/');
$url = explode('/', $url);
return strtoupper($url[0]);
}
function stripNumber($num, $type="") {
switch($type) {
case "SO":
$strip = array("SO","S"); break;
case "WO":
$strip = array("WO","W"); break;
case "PO":
$strip = array("PO","P"); break;
case "TO":
$strip = array("TO","T"); break;
default:
$strip = array("SO","WO","PO","TO","S","W","P","T");
}
foreach($strip as $s) {
if(strpos($num, $s) === 0) {
$num = preg_replace("/^$s/", "", $num);
break;
}
}
//$strip = array("S","W","P","T");
//$num = str_replace($strip, "", $num);
return $num;
}
function getReceiveTypeIDByNum($num) {
$strip = array("SO","WO","PO","TO");
if(in_array(substr($num,0,2), $strip)) {
return getTypeID(substr($num,0,2));
}
$strip = array("S","W","P","T");
if(in_array(substr($num,0,1), $strip)) {
return getTypeID(substr($num,0,1));
}
return "";
}
function location_ul($arr, $s="", $locsall=false) {
$return = '';
foreach($arr as $item) {
$selected = ($s == $item['LocationID']) ? "SELECTED" : "";
if(($item['Pickable'] == true && $item['Active'] == true) || $locsall == "yes"):
$return .= '
' . $item['LocationGroupName'] . ' - ' . $item['Name'] . '';
endif;
}
return $return;
}
function location_dropdown($arr, $s="") {
$return = '';
foreach($arr as $item) {
$selected = ($s == $item['LocationID']) ? "SELECTED" : "";
if($item['Pickable'] == true && $item['Active'] == true):
$return .= '';
endif;
}
return $return;
}
function carrier_dropdown($arr, $s="") {
$return = '';
foreach($arr['Name'] as $item) {
$selected = ($s == $item) ? "SELECTED" : "";
$return .= '';
}
return $return;
}
// Carrier, Vendor,
function name_dropdown($arr, $s="") {
$return = '';
$items = ($arr['Name']) ? $arr['Name'] : $arr;
foreach($items as $item) {
$selected = ($s == $item) ? "SELECTED" : "";
$return .= '';
}
return $return;
}
function part_dropdown($arr, $s="") {
$return = '';
foreach($arr as $item) {
$selected = ($s == $item['Num']) ? "SELECTED" : "";
if($item['ActiveFlag'] == true):
$return .= '';
endif;
}
return $return;
}
function uom_dropdown($arr, $s="") {
$return = '';
foreach($arr as $item) {
$selected = ($s == $item['Code']) ? "SELECTED" : "";
$return .= '';
}
return $return;
}
// $s = TAXRATE.NAME
// From $controller->getTaxRates()
function tax_dropdown($arr, $s="", $value='ID') {
$return = '';
foreach($arr as $item) {
$selected = ($s == $item['Name'] || $s == $item['NAME']) ? "SELECTED" : "";
$return .= '';
}
return $return;
}
// $s = TAXRATE.NAME
// From $controller->getTaxRates()
function tax_ul($arr) {
$return = '';
foreach($arr as $item) {
$return .= '' . $item['NAME'] . ' (' . perc($item['RATE']) . ')';
}
return $return;
}
function xml2array ( $xmlObject, $out = array () ) {
foreach ( (array) $xmlObject as $index => $node )
$out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;
return $out;
}
function encodeXML($xml) {
$val = str_replace(array("&"), array("&"), $xml);
return $val;
}
// Vendor, Carrier dropdowns
function name_ul($arr, $s="") {
$return = '';
$ct = 0;
if(isset($arr)) {
foreach($arr as $item) {
$selected = ($s == $item) ? "SELECTED" : "";
$return .= '' . $item . '';
$ct++;
}
}
return $return;
}
function lgname_ul($arr, $s="") {
$return = '';
//$keys = array_keys($arr);
$ct = 0;
foreach($arr as $item) {
//$lgtag = $keys[$ct];
$selected = ($s == $item["lg"]) ? "SELECTED" : "";
$return .= '' . $item["lg"] . '';
$ct++;
}
return $return;
}
function tracking_opts_dropdown($arr, $s="") {
$return = '';
foreach($arr as $item) {
$selected = ($s == $item) ? "SELECTED" : "";
$return .= '';
}
return $return;
}
// $trackingxml = Tracking->children();
function grabXMLTrackingOLD($trackingxml) {
$pt_array = array();
foreach($trackingxml as $Tracking) {
$pt = array('Name' => (string)$Tracking->PartTracking->Name,
'TrackingTypeID' => (int)$Tracking->PartTracking->TrackingTypeID,
'Abbr' => (string)$Tracking->PartTracking->Abbr);
// Commited Pick Item
if($Tracking->PartTracking->TrackingTypeID == 40):
$vals = array();
foreach($Tracking->SerialBoxList->children() as $SerialBox) {
$vals[] = (string)$SerialBox->SerialNumList->SerialNum->Number;
}
$pt['Value'] = implode(",", $vals);
else:
if($Tracking->PartTracking->TrackingTypeID ==30 || $Tracking->PartTracking->TrackingTypeID ==20):
$pt['Value'] = (string)fbdate($Tracking->TrackingValue);
else:
$pt['Value'] = (string)$Tracking->TrackingValue;
endif;
endif;
array_push($pt_array, $pt);
}
return $pt_array;
}
// $sn_primary = index of primary tracking
// $committed = include commited tracking. mark committed sn with "*" (cycle)
function grabXMLTracking($trackingxml, $sn_primary=0, $committed=false) {
$pt_array = array();
$ct = 0;
foreach($trackingxml as $Tracking => $TrackingItem) {
// March 1 2014
if($sn_primary > 0 && $TrackingItem->PartTracking->TrackingTypeID == 40) {
$pt = array('Name' => (string)$TrackingItem->SerialBoxList->SerialBox[0]->SerialNumList->SerialNum[$sn_primary]->PartTracking->Name,
'TrackingTypeID' => (int)$TrackingItem->SerialBoxList->SerialBox[0]->SerialNumList->SerialNum[$sn_primary]->PartTracking->TrackingTypeID,
'PartTrackingID' => (int)$TrackingItem->SerialBoxList->SerialBox[0]->SerialNumList->SerialNum[$sn_primary]->PartTracking->PartTrackingID,
'Abbr' => (string)$TrackingItem->SerialBoxList->SerialBox[0]->SerialNumList->SerialNum[$sn_primary]->PartTracking->Abbr,
'PartTrackingNum' => $ct);
} else {
$pt = array('Name' => (string)$TrackingItem->PartTracking->Name,
'TrackingTypeID' => (int)$TrackingItem->PartTracking->TrackingTypeID,
'PartTrackingID' => (int)$TrackingItem->PartTracking->PartTrackingID,
'Abbr' => (string)$TrackingItem->PartTracking->Abbr,
'PartTrackingNum' => $ct);
}
// Commited Pick Item
if($TrackingItem->PartTracking->TrackingTypeID == 40):
$vals = array();
foreach($TrackingItem->SerialBoxList->children() as $SerialBox) {
if($committed == true || ($committed == false && ((string)$SerialBox->Committed == 'false' || (string)$SerialBox->Committed != 'true'))) {
foreach($SerialBox->SerialNumList as $SerialNumList) {
$vals[] = (($SerialBox->Committed=="true")?"*":"").(string)$SerialNumList->SerialNum[$sn_primary]->Number;
}
}
}
$pt['Value'] = implode(",", $vals);
else:
if($TrackingItem->PartTracking->TrackingTypeID ==30 || $TrackingItem->PartTracking->TrackingTypeID ==20):
$pt['Value'] = (string)fbdate($TrackingItem->TrackingValue);
else:
$pt['Value'] = (string)$TrackingItem->TrackingValue;
endif;
endif;
array_push($pt_array, $pt);
$ct++;
}
return $pt_array;
}
function grabTracking($trackingItems)
{
$trackingItemsToReturn = array();
if(!is_array($trackingItems)) $trackingItems = array($trackingItems);
foreach($trackingItems as $key => $trackingItem)
{
$partTracking = $trackingItem->PartTracking;
$trackingItemToReturn = array(
"Name" => $partTracking->Name,
"TrackingTypeID" => $partTracking->TrackingTypeID,
"PartTrackingID" => $partTracking->PartTrackingID,
"Abbr" => $partTracking->Abbr,
"PartTrackingNum" => $key
);
if($partTracking->TrackingTypeID == 40)
{
$serialNumbersToReturn = array();
$serialBoxes = $trackingItem->SerialBoxList->SerialBox;
$serialBoxes = (is_array($serialBoxes)) ? $serialBoxes : array($serialBoxes);
foreach ($serialBoxes as $serialBox)
{
if($serialBox->Committed) continue;
$serialNums = $serialBox->SerialNumList->SerialNum;
$serialNums = is_array($serialNums) ? $serialNums : array($serialNums);
foreach ($serialNums as $serialNum) { $serialNumbersToReturn[] = $serialNum->Number; }
}
$trackingItemToReturn["Value"] = implode(",", $serialNumbersToReturn);
}
elseif(in_array($partTracking->TrackingTypeID, array(20, 30)))
{
$trackingItemToReturn["Value"] = fbdate($trackingItem->TrackingValue);
}
else
{
$trackingItemToReturn["Value"] = $trackingItem->TrackingValue;
}
$trackingItemsToReturn[] = $trackingItemToReturn;
}
return array(array("tracking" => $trackingItemsToReturn));
}
function grabTrackingForInvQty($trackingItems)
{
$trackingItemsToReturn = array();
if(!is_array($trackingItems)) $trackingItems = array($trackingItems);
foreach($trackingItems as $key => $trackingItem)
{
$partTracking = $trackingItem->PartTracking;
$trackingItemToReturn = array(
"Name" => $partTracking->Name,
"TrackingTypeID" => $partTracking->TrackingTypeID,
"PartTrackingID" => $partTracking->PartTrackingID,
"Abbr" => $partTracking->Abbr,
"PartTrackingNum" => $key
);
if($partTracking->TrackingTypeID == 40)
{
$serialNumbersToReturn = array();
$serialBoxes = $trackingItem->SerialBoxList->SerialBox;
$serialBoxes = (is_array($serialBoxes)) ? $serialBoxes : array($serialBoxes);
foreach ($serialBoxes as $serialBox)
{
if($serialBox->Committed) continue;
$serialNums = $serialBox->SerialNumList->SerialNum;
$serialNums = is_array($serialNums) ? $serialNums : array($serialNums);
foreach ($serialNums as $serialNum) { $serialNumbersToReturn[] = $serialNum->Number; }
}
$trackingItemToReturn["Value"] = implode(",", $serialNumbersToReturn);
}
elseif(in_array($partTracking->TrackingTypeID, array(20, 30)))
{
$trackingItemToReturn["Value"] = fbdate($trackingItem->TrackingValue);
}
else
{
$trackingItemToReturn["Value"] = $trackingItem->TrackingValue;
}
$trackingItemsToReturn[] = $trackingItemToReturn;
}
return $trackingItemsToReturn;
}
function grabTrackingByLocation($trackingItems)
{
$trackingItemsToReturn = array();
if(!is_array($trackingItems)) $trackingItems = array($trackingItems);
foreach($trackingItems as $key => $trackingItem)
{
$partTracking = $trackingItem->PartTracking;
$trackingItemToReturn = array(
"Name" => $partTracking->Name,
"TrackingTypeID" => $partTracking->TrackingTypeID,
"PartTrackingID" => $partTracking->PartTrackingID,
"Abbr" => $partTracking->Abbr,
"PartTrackingNum" => $key
);
if($partTracking->TrackingTypeID == 40)
{
$serialNumbersToReturn = array();
$serialBoxes = $trackingItem->SerialBoxList->SerialBox;
$serialBoxes = (is_array($serialBoxes)) ? $serialBoxes : array($serialBoxes);
foreach ($serialBoxes as $serialBox)
{
if($serialBox->Committed) continue;
$serialNums = $serialBox->SerialNumList->SerialNum;
$serialNums = is_array($serialNums) ? $serialNums : array($serialNums);
foreach ($serialNums as $serialNum) { $serialNumbersToReturn[] = $serialNum->Number; }
}
$trackingItemToReturn["Value"] = implode(",", $serialNumbersToReturn);
}
elseif(in_array($partTracking->TrackingTypeID, array(20, 30)))
{
$trackingItemToReturn["Value"] = fbdate($trackingItem->TrackingValue);
}
else
{
$trackingItemToReturn["Value"] = $trackingItem->TrackingValue;
}
$trackingItemsToReturn[] = $trackingItemToReturn;
}
return $trackingItemsToReturn;
}
function grabTrackingWithCommitted($trackingItems)
{
$trackingItemsToReturn = array();
if(!is_array($trackingItems)) $trackingItems = array($trackingItems);
foreach($trackingItems as $key => $trackingItem)
{
$partTracking = $trackingItem->PartTracking;
$trackingItemToReturn = array(
"Name" => $partTracking->Name,
"TrackingTypeID" => $partTracking->TrackingTypeID,
"PartTrackingID" => $partTracking->PartTrackingID,
"Abbr" => $partTracking->Abbr,
"PartTrackingNum" => $key
);
if($partTracking->TrackingTypeID == 40)
{
$serialNumbersToReturn = array();
$serialBoxes = $trackingItem->SerialBoxList->SerialBox;
$serialBoxes = (is_array($serialBoxes)) ? $serialBoxes : array($serialBoxes);
foreach ($serialBoxes as $serialBox)
{
$serialNums = $serialBox->SerialNumList->SerialNum;
$serialNums = is_array($serialNums) ? $serialNums : array($serialNums);
foreach ($serialNums as $serialNum) { $serialNumbersToReturn[] = array("Committed" => isset($serialBox->Committed), "Number" => $serialNum->Number); }
}
$trackingItemToReturn["Value"] = $serialNumbersToReturn;
}
elseif(in_array($partTracking->TrackingTypeID, array(20, 30)))
{
$trackingItemToReturn["Value"] = fbdate($trackingItem->TrackingValue);
}
else
{
$trackingItemToReturn["Value"] = $trackingItem->TrackingValue;
}
$trackingItemsToReturn[] = $trackingItemToReturn;
}
return $trackingItemsToReturn;
}
function grabXMLTrackingNoPrimary($trackingxml) {
$pt_array = array();
foreach($trackingxml->TrackingItem as $ti) {
// print_r($ti);
}
foreach($trackingxml as $Tracking => $TrackingItem) {
$pt = array('Name' => (string)$TrackingItem->PartTracking->Name,
'TrackingTypeID' => (int)$TrackingItem->PartTracking->TrackingTypeID,
'Abbr' => (string)$TrackingItem->PartTracking->Abbr);
// Commited Pick Item
$trackingname = array();
$trackingabbr = array();
if($TrackingItem->PartTracking->TrackingTypeID == 40):
$vals = array();
$ct = 0;
foreach($TrackingItem->SerialBoxList->children() as $SerialBox) {
foreach($SerialBox->SerialNumList as $SerialNumList) {
$nums = array();
foreach($SerialNumList as $sn) {
$nums[] = (string)$sn->Number;
if($ct==0) {
$trackingname[] = (string)$sn->PartTracking->Name;
$trackingabbr[] = (string)$sn->PartTracking->Abbr;
}
}
$ct++;
// Group S/N tracking together
$vals[] = implode("|", $nums);
}
}
$pt['Value'] = implode(",", $vals);
$pt['Name'] = implode("|", $trackingname);
$pt['Abbr'] = implode("|", $trackingabbr);
else:
if($TrackingItem->PartTracking->TrackingTypeID ==30 || $TrackingItem->PartTracking->TrackingTypeID ==20):
$pt['Value'] = (string)fbdate($TrackingItem->TrackingValue);
else:
$pt['Value'] = (string)$TrackingItem->TrackingValue;
endif;
endif;
array_push($pt_array, $pt);
}
return $pt_array;
}
function parseTrackingResponse($trackingResponse)
{
$partTrackingList = array();
$trackingItems = is_array($trackingResponse->TrackingItem) ? $trackingResponse->TrackingItem : array($trackingResponse->TrackingItem);
foreach ($trackingItems as $trackingItem)
{
$trackingName = array();
$trackingAbbr = array();
$partTracking = $trackingItem->PartTracking;
$partTrackingArray = array(
"Name" => $partTracking->Name,
"TrackingTypeID" => $partTracking->TrackingTypeID,
"Abbr" => $partTracking->Abbr
);
if($partTracking->TrackingTypeID == 40)
{
$serialNumberBoxes = array();
$serialBoxList = is_array($trackingItem->SerialBoxList->SerialBox) ? $trackingItem->SerialBoxList->SerialBox : array($trackingItem->SerialBoxList->SerialBox);
foreach ($serialBoxList as $serialBox)
{
$serialNumList = is_array($serialBox->SerialNumList) ? $serialBox->SerialNumList : array($serialBox->SerialNumList);
foreach ($serialNumList as $serialNumberList)
{
$serialNumbers = array();
$serialNumberArray = is_array($serialNumberList->SerialNum) ? $serialNumberList->SerialNum : array($serialNumberList->SerialNum);
foreach ($serialNumberArray as $serialNumber)
{
$serialNumbers[] = $serialNumber->Number;
if(count($serialNumberBoxes) > 0) continue;
$trackingName[] = $serialNumber->PartTracking->Name;
$trackingAbbr[] = $serialNumber->PartTracking->Abbr;
}
$serialNumberBoxes[] = implode("|", $serialNumbers);
}
}
$partTrackingArray["Value"] = implode(",", $serialNumberBoxes);
$partTrackingArray["Name"] = implode("|", $trackingName);
$partTrackingArray["Abbr"] = implode("|", $trackingAbbr);
}
elseif(in_array($partTracking->TrackingTypeID, array(20, 30)))
{
$partTrackingArray["Value"] = fbdate($trackingItem->TrackingValue);
}
else
{
$partTrackingArray["Value"] = $trackingItem->TrackingValue;
}
array_push($partTrackingList, $partTrackingArray);
}
return $partTrackingList;
}
// $folder = subdir in company folder
// $name = Filename
function log_xml($folder, $status, $xml) {
// October 13, 2013 - Only for UI site
// return;
$day = date('Y-m-d');
$fulldate = date('Y-m-d') . " " . date('H:i:s');
$dir = $_SERVER['DOCUMENT_ROOT'] . "\\" . LOG_DIR . "\\";
if(!is_dir($dir)) {
mkdir($dir);
}
$dir = $_SERVER['DOCUMENT_ROOT'] . "\\" . LOG_DIR . $folder . "\\";
if(!is_dir($dir)) {
mkdir($dir);
}
$dir .= "\\" . $day . "\\";
if(!is_dir($dir)) {
mkdir($dir);
}
$username = (Session::get('user')) ? Session::get('user') : "-";
$content = "[" . $fulldate . "] \t" . $username . "\t" . $_SERVER['REMOTE_ADDR'] . "\n" . $status . "\n" .
$xml . "\n" .
"------------------------------------------------------------------\n";
$file = $dir . $day . ".log";
$fh = fopen($file, "a+");
fwrite($fh, $content);
fclose($fh);
}
// 2097152 = 2MB
function upload_image($image, $maxsize="16777216") {
$day = date('Y-m-d');
$fulldate = date('Y-m-d');
$dir = $_SERVER['DOCUMENT_ROOT'] . "\\" . UPLOAD_DIR . "\\" . $fulldate . "\\";
if(!is_dir($dir)) {
mkdir($dir);
}
if(!$image['error'] || $image['error'] == 0) {
$valid_file = true;
$new_file_name = strtolower($image['name']);
$new_file_name = mktime() . "." . end(explode(".",$new_file_name));
if($image['size'] > $maxsize) //can't be larger than 2 MB
{
$valid_file = false;
$message = 'File size must be under ' .(($maxsize / 1024) / 1024) . 'MB';
}
$mimetype = $image['type'];
if($mimetype == "") {
$valid_file = false;
$message = 'File size must be under ' .(($maxsize / 1024) / 1024) . 'MB';
} elseif(!in_array($mimetype, array('image/jpeg', 'image/gif', 'image/png', 'image/tiff'))) {
$valid_file = false;
$message = 'Wrong file type. Please upload a PNG, JPG, GIF or TIFF.';
}
//if the file has passed the test
if($valid_file)
{
//move it to where we want it to be
move_uploaded_file($image['tmp_name'], $dir.$new_file_name);
// chmod($dir.$new_file_name, 0755);
return array('success' => UPLOAD_DIR . $fulldate . "/" . $new_file_name);
} else {
return array('error' => $message);
}
}
//if there is an error...
else
{
//set that to be the returned message
return 0;
}
}
function transformDestinationToLocationTag($tag, $location) {
$tag->Tag->TagID = $location->TagID;
$tag->Tag->Num = $location->TagNumber;
$tag->Tag->Location = $location;
return $tag;
}
function array_orderby() {
$args = func_get_args();
$data = array_shift($args);
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row)
$tmp[$key] = $row[$field];
$args[$n] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('array_multisort', $args);
return array_pop($args);
}
function buildBarcodeString($mapping, $data) {
$fields = explode('^^', $mapping['mapping']);
$barcode = array();
foreach($fields as $field) {
$options = null;
preg_match('/\[.*\]/', $field, $options);
if(!empty($options)) {
$field = explode('[', $field)[0];
$options = explode(':', trim($options[0], '[]'));
}
if(!empty($data[$field])) {
if($options[0] == 'expdate') {
$format = str_replace(array('YYYY', 'YY', 'MM', 'DD'), array('Y', 'y', 'm', 'd'), $options[1]);
$barcode[] = date($format, strtotime($data[$field]));
} else {
$barcode[] = $data[$field];
}
} else {
$barcode[] = '';
}
}
switch($mapping['delimiter']) {
case 'CM':
return implode(',', $barcode);
case 'LF':
return implode("\n", $barcode);
case 'CHAR':
return implode($mapping['cchar'], $barcode);
case 'RANGE':
return implode('', $barcode);
}
}
?>
class Logger {
public $log_directory;
public $full_directory;
public $tenant;
public $request_token;
public function __construct($tenant) {
$this->tenant = $tenant;
$this->log_directory = LOG_DIR;
$this->request_token = uniqid();
$this->date = date('Y-m-d');
if(!is_dir(strval($this->log_directory))) {
mkdir($this->log_directory);
}
$this->log_path = $this->log_directory . 'pond.log.json';
}
public function write($message, $priority) {
$prepend = array();
$aux = microtime(TRUE);
$datetime = DateTime::createFromFormat('U.u', $aux);
if (is_bool($datetime)) $datetime = DateTime::createFromFormat('U.u', $aux += 0.001);
//Adjust timestamp from GMT to EST.
$datatime = $datetime->sub(date_interval_create_from_date_string('5 hours'));
$prepend['timestamp'] = $datetime->format("Y-m-d H:i:s.u");
$prepend['type'] = $priority;
$prepend['token'] = $this->request_token;
$prepend['url'] = $_SERVER['REQUEST_URI'];
if(isset($message['execution_time'])) {
$prepend['timetocomplete'] = $message['execution_time'];
unset($message['execution_time']);
}
$prepend['data'] = $message;
//$prepend['_backtrace'] = print_r(debug_backtrace(), true);
$data = json_encode($prepend);
$this->log_file = fopen($this->log_path, 'a');
fwrite($this->log_file, $data."\r\n");
}
public function info($message) {
$this->write($message, 'info');
}
public function fbapi($message) {
$this->write($message, 'fbapi');
}
public function error($message) {
$this->write($message, 'error');
}
public function fbdb($message) {
$this->write($message, 'fbdb-api');
}
public function fbdbdirect($message) {
$this->write($message, 'fbdb-direct');
}
public function db($message) {
$this->write($message, 'mysql');
}
}
?>