REGEXP ('^[0-9]+$')
DECIMAL IN DB FIELD ONLY => ('^[0-9]*[.]?[0-9]+$')
SELECT
cr.cr_id,
cr.cr_eid,
log.logo_id,
COUNT(*) AS num,
cr.cr_availabletime,
cr.cr_occupied,
cr.cr_logintime
FROM
phoenix.courier AS cr,
phoenix_log.log AS log
WHERE
cr.cr_available = '1' AND
cr.hq_id = '3' AND
cr.cr_locationzipcode REGEXP ('^[0-9]+$') AND
log.cr_id = cr.cr_id AND
log.log_createtime >= DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND
log.logo_id IN (3,8,11)
GROUP BY
cr.cr_id, log.logo_id
ORDER BY cr.cr_id, log.logo_id
*/
$sqlquery = "SELECT
cr.cr_id,
cr.cr_eid,
cr.hq_id,
log.logo_id,
COUNT(*) AS num,
cr.cr_availabletime,
cr.cr_occupied,
cr.cr_logintime
FROM
phoenix.courier AS cr,
phoenix_log.log AS log
WHERE
cr.cr_available = '1' AND
cr.hq_id = '3' AND
cr.cr_locationzipcode REGEXP ('^[0-9]+$') AND
log.cr_id = cr.cr_id AND
log.log_createtime >= DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND
log.logo_id IN (3,8,11)
GROUP BY
cr.cr_id, log.logo_id
ORDER BY cr.cr_id, log.logo_id";
// echo $sqlquery . "
";
$outData = "";
$crIdArray = array();
$crEidArray = array();
$crHqIdArray = array();
$remCrId = "";
$crLogArray = array();
if ($sqlquery != "") :
$result = $db->query($sqlquery);
if (DB::isError($result)) die ("$PHP_SELF: " . $result->getMessage());
while ($row = $result->fetch_assoc()):
$crId = $row["cr_id"];
$crEid = $row["cr_eid"];
$hqId = $row["hq_id"];
$logoId = $row["logo_id"];
$num = $row["num"];
if ($remCrId != $crId) :
$crIdArray[] = $crId;
$crEidArray[$crId] = $crEid;
$crHqIdArray[$crId] = $hqId;
endif;
$remCrId = $crId;
$crLogArray[$crId][$logoId] = $num;
endwhile;
$result->free();
// Current timestamp
$currentTime = getDateTime("0");
$execTimelimit = getDateTime("datetime_plus_offset", array(0,16,0,0,0,0), $formatStr = "Y-m-d H:i:s");
$crIdArrayLen = count($crIdArray);
for ($i = 0; $i < $crIdArrayLen; $i++) :
$crId = $crIdArray[$i];
// Check courier is occupied
$crIsOccupied = crIsOccupied($crId);
if (!$crIsOccupied &&
($crLogArray[$crId]["3"] == "" || $crLogArray[$crId]["3"] == "0") &&
($crLogArray[$crId]["11"] == "" || $crLogArray[$crId]["11"] == "0") &&
($crLogArray[$crId]["8"] != "" && $crLogArray[$crId]["8"] >= "2")) :
// For output only
$outData .= $crEidArray[$crId] . ($isCron ? " " : " ") . $crLogArray[$crId]["8"] . ($isCron ? "\n" : "
");
// Update availability status
updateStmt("courier","cr_id",$crId,array("cr_availabletime",$currentTime,"cr_locationzipcode","LOGOUT"));
// Insert PDA command to quit application
insertPDACommand($crHqIdArray[$crId], $crId, "2", "1", "", $currentTime, $execTimelimit);
// Write logdata into log database
writeToLogDB("143",$crHqIdArray[$crId],"","0",$crId,"","","STATUS_LOGOUT=PDA-LOGOUT DURCH AUTOREVOKES");
endif;
endfor;
endif;
?>