".$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); } } ?> 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'); } } ?>