66 lines
2.5 KiB
PHP
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";
|