Files
FloatBackOfffice/CRONS/geometry_address.php
T
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

66 lines
2.5 KiB
PHP

<?php
echo "[".date("Y-m-d H:i:s")."] GPS geometry_address job is starting.\n";
require('../backend.php');
$httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token');
$db_host = $savvyext->cfgReadChar('database.host');
$db_name = $savvyext->cfgReadChar('database.name');
$db_user = $savvyext->cfgReadChar('database.user');
$db_pass = $savvyext->cfgReadChar('database.pass');
$db_port = $savvyext->cfgReadLong('database.port');
$connstr = "host=${db_host} port=${db_port} dbname=${db_name} user=${db_user} password=${db_pass}";
$conn = pg_connect($connstr);
$db_host = $savvyext->cfgReadChar('database_replica.host');
$db_name = $savvyext->cfgReadChar('database_replica.name');
$db_user = $savvyext->cfgReadChar('database_replica.user');
$db_pass = $savvyext->cfgReadChar('database_replica.pass');
$db_port = $savvyext->cfgReadLong('database_replica.port');
$readOnlyReplicaConnstr = "host=${db_host} port=${db_port} dbname=${db_name} user=${db_user} password=${db_pass}";
$readOnlyReplicaConn = pg_connect($readOnlyReplicaConnstr);
$q = "SELECT * FROM address WHERE geometry IS NULL AND latitude!=0 AND longitude!=0";
$r = pg_query($readOnlyReplicaConn, $q);
while ($f=pg_fetch_assoc($r)) {
$data = [
"geometry" => "ST_SetSRID(ST_MakePoint(".$f["longitude"].",".$f["latitude"]."), 4326)"
];
list($res,$err) = updateAddress($f["id"], $data);
if ($err && $err!="") {
echo "[".date("Y-m-d H:i:s")."] Failure: ${err} (".$f["id"].")\n";
} else {
echo "[".date("Y-m-d H:i:s")."] Complete: ".$f["id"]."\n";
}
}
function updateAddress($id, $data) {
global $conn, $readOnlyReplicaConn;
$columns = [];
$q = "select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS where table_name = 'address'";
$r = pg_query($readOnlyReplicaConn, $q);
while ($f=pg_fetch_assoc($r)) {
$columns[$f['column_name']] = $f['data_type'];
}
$q = "UPDATE address SET id=${id}";
foreach ($data as $key=>$val) {
if ($key=="id") continue;
if (array_key_exists($key,$columns) && $columns[$key]!='character varying' && $columns[$key]!='date') {
$q.= ", ${key} = ".($val==""?"NULL":$val);
} else {
$q.= ", ${key} = '".pg_escape_string($val)."'";
}
}
$q.= " WHERE id=${id} RETURNING *";
$r = pg_query($conn, $q);
if ($r && pg_num_rows($r) && $f=pg_fetch_assoc($r)) {
return [$f, NULL];
}
return [NULL, pg_last_error($conn)];
}
echo "[".date("Y-m-d H:i:s")."] GPS geometry_address job complete.\n";