first commit

This commit is contained in:
2025-08-02 16:30:27 +02:00
commit 23646bfcee
14851 changed files with 1750626 additions and 0 deletions

271
socket/Pohoda.Contacts.php Normal file
View File

@@ -0,0 +1,271 @@
<?php
function POHODA_Contacts($params)
{
$request = $params['request'];
switch ($request) {
// odesilani zmen do POHODY
case 'download':
return POHODA_ContactsDownload($params);
break;
// prijimani zmen z POHODY
case 'upload':
return POHODA_ContactsUpload($params);
break;
// pokud je spatny pozadavek
default:
$response = [
'status' => 400,
'statusMessage' => getTextString('errors', 400),
'serverTimestamp' => iso8601_encode(time()),
'requestedParams' => $params,
'responseData' => [],
];
return new xmlrpcresp(php_xmlrpc_encode($response));
break;
}
}
// ----------------------------------------------------
// odesilani zmen do POHODY
function POHODA_ContactsDownload($params)
{
$params = $params['requestParams'];
// logError(__FILE__, __LINE__, print_r($params, true), true);
// pokud neni specifikovano datum od kdy hledat udaje vrati chybu
if (!isset($params['dateFrom'])) {
$response = [
'status' => 406,
'statusMessage' => getTextString('errors', 406),
'serverTimestamp' => iso8601_encode(time()),
'requestedParams' => $params,
'responseData' => [],
];
$response2 = php_xmlrpc_encode($response);
return new xmlrpcresp($response2);
}
$response = [
'status' => 200,
'statusMessage' => getTextString('errors', 200),
'serverTimestamp' => iso8601_encode(time()),
'requestedParams' => $params,
'responseData' => [],
];
$query = 'SELECT * FROM '.getTableName('users')." WHERE date_updated >= '".date('Y-m-d H:i:s', iso8601_decode($params['dateFrom']))."'";
// logError(__FILE__, __LINE__, $query, true);
$SQL = sqlQuery($query);
if (sqlNumRows($SQL) == 0) {
$response['status'] = 204;
$response['statusMessage'] = getTextString('errors', 204);
return new xmlrpcresp(php_xmlrpc_encode($response));
}
$count = 0;
while ($row = @mysql_fetch_assoc($SQL)) {
// struktura pro vraceni
$dataItem = [];
$dataItem = [
'contactId' => intval($row['id']),
'address' => [
'name' => cs_win2ascii($row['name']),
'surname' => cs_win2ascii($row['surname']),
'company' => cs_win2ascii($row['firm']),
'division' => cs_win2ascii($row['']),
'ico' => cs_win2ascii($row['ico']),
'dic' => cs_win2ascii($row['dic']),
'street' => cs_win2ascii($row['street']),
'city' => cs_win2ascii($row['city']),
'zip' => cs_win2ascii($row['zip']),
'region' => '',
'country' => cs_win2ascii($row['country']),
'phone' => cs_win2ascii($row['phone']),
'cellPhone' => cs_win2ascii($row['mobile']),
'fax' => cs_win2ascii($row['fax']),
'email' => cs_win2ascii($row['email']),
'web' => '',
'taxpayer' => false, ],
'deliveryAddress' => [
'name' => cs_win2ascii($row['delivery_name']),
'surname' => cs_win2ascii($row['delivery_surname']),
'company' => cs_win2ascii($row['delivery_firm']),
'division' => '',
'street' => cs_win2ascii($row['delivery_street']),
'city' => cs_win2ascii($row['delivery_city']),
'zip' => cs_win2ascii($row['delivery_zip']),
'region' => '',
'country' => cs_win2ascii($row['delivery_country']), ],
'dateAdded' => iso8601_encode(strtotime($row['date_reg'])),
'note' => '',
'intNote' => '',
'bankAccounts' => [
0 => [
'accountNo' => cs_win2ascii($row['account_no']),
'code' => cs_win2ascii($row['account_bank']),
'symVar' => cs_win2ascii($row['account_symbol']),
'symConst' => '',
'symSpec' => cs_win2ascii($row['account_symbol']),
'bankName' => '', ], ], ];
$response['responseData'][$count] = $dataItem;
// $response['responseData'][$count] = $row;
++$count;
// break;
}
// logError(__FILE__, __LINE__, print_r($response, true), true);
// $response2 = php_xmlrpc_encode($response);
// logError(__FILE__, __LINE__, print_r($response2, true), true);
return new xmlrpcresp(php_xmlrpc_encode($response));
}
// ----------------------------------------------------
// prijimani zmen z POHODY
function POHODA_ContactsUpload($params)
{
$requestParams = $params['requestParams'];
$params = $params['requestData'];
// logError(__FILE__, __LINE__, print_r($params, true), true);
$response = [
'status' => 200,
'statusMessage' => getTextString('errors', 200),
'requestedParams' => $requestParams,
'responseData' => [],
];
// logError(__FILE__, __LINE__, "pocet: ".count($params), true);
for ($i = 0; $i < count($params); $i++) {
// pokud se posle dataItemStatus deleted smaze polozku z databaze
if (isset($params[$i]['dataItemStatus']) && ($params[$i]['dataItemStatus'] == 'deleted')) {
if (isset($params[$i]['contactId']) && (!empty($params[$i]['contactId']) || $params[$i]['contactId'] != 0)) {
$queryDelete = 'DELETE FROM '.getTableName('users').' WHERE id='.intval($params[$i]['contactId']).' ';
$SQLDelete = sqlQuery($queryDelete);
if (mysql_affected_rows() != 0) {
$structItemDetails = POHODA_getDataItemDetails($params[$i]['contactId'], 'ok', 200, '');
$response['responseData'][$i] = $structItemDetails;
} else {
$structItemDetails = POHODA_getDataItemDetails($params[$i]['contactId'], 'warning', 404, '');
$response['responseData'][$i] = $structItemDetails;
}
continue;
} else {
$structItemDetails = POHODA_getDataItemDetails(0, 'error', 400, '');
$response['responseData'][$i] = $structItemDetails;
continue;
}
}
// pokud se preda contactId nebo neni nulove provede se update polozky, jinak se vlozi nova
// queryHead je nutna pro pripad ze contactId predane v params neexistuje v databazi a nedojde k updatu ale provede se dodatecne nove vlozeni
if (isset($params[$i]['contactId']) && ($params[$i]['contactId'] != 0)) {
$update = true;
$queryHead = 'UPDATE '.getTableName('users').' SET ';
} else {
$update = false;
$queryHead = 'REPLACE INTO '.getTableName('users').' SET ';
}
$query = '';
$query .= "login='".strtolower(cs_win2ascii(utf8ToWin1250($params[$i]['address']['name']).'-'.utf8ToWin1250($params[$i]['address']['surname']))).$i."', ";
$query .= (isset($params[$i]['address']['name'])) ? "name='".utf8ToWin1250($params[$i]['address']['name'])."', " : '';
$query .= (isset($params[$i]['address']['surname'])) ? "surname='".utf8ToWin1250($params[$i]['address']['surname'])."', " : '';
$query .= (isset($params[$i]['address']['company'])) ? "firm='".utf8ToWin1250($params[$i]['address']['company'])."', " : '';
$query .= (isset($params[$i]['address']['street'])) ? "street='".utf8ToWin1250($params[$i]['address']['street'])."', " : '';
$query .= (isset($params[$i]['address']['city'])) ? "city='".utf8ToWin1250($params[$i]['address']['city'])."', " : '';
$query .= (isset($params[$i]['address']['zip'])) ? "zip='".utf8ToWin1250($params[$i]['address']['zip'])."', " : '';
$query .= (isset($params[$i]['address']['email'])) ? "email='".utf8ToWin1250($params[$i]['address']['email'])."', " : '';
$query .= (isset($params[$i]['address']['country'])) ? "country='".utf8ToWin1250($params[$i]['address']['country'])."', " : '';
$query .= (isset($params[$i]['address']['ico'])) ? "ico='".utf8ToWin1250($params[$i]['address']['ico'])."', " : '';
$query .= (isset($params[$i]['address']['dic'])) ? "dic='".utf8ToWin1250($params[$i]['address']['dic'])."', " : '';
$query .= (isset($params[$i]['address']['phone'])) ? "phone='".utf8ToWin1250($params[$i]['address']['phone'])."', " : '';
$query .= (isset($params[$i]['address']['cellPhone'])) ? "mobile='".utf8ToWin1250($params[$i]['address']['cellPhone'])."', " : '';
$query .= (isset($params[$i]['address']['fax'])) ? "fax='".utf8ToWin1250($params[$i]['address']['fax'])."', " : '';
$query .= (isset($params[$i]['deliveryAddress']['name']) && !empty($params[$i]['deliveryAddress']['name'])) ? "delivery_name='".utf8ToWin1250($params[$i]['deliveryAddress']['name'])."', " : "delivery_name='".utf8ToWin1250($params[$i]['address']['name'])."', ";
$query .= (isset($params[$i]['deliveryAddress']['surname']) && !empty($params[$i]['deliveryAddress']['surname'])) ? "delivery_surname='".utf8ToWin1250($params[$i]['deliveryAddress']['surname'])."', " : "delivery_surname='".utf8ToWin1250($params[$i]['address']['surname'])."', ";
$query .= (isset($params[$i]['deliveryAddress']['company']) && !empty($params[$i]['deliveryAddress']['company'])) ? "delivery_firm='".utf8ToWin1250($params[$i]['deliveryAddress']['company'])."', " : "delivery_firm='".utf8ToWin1250($params[$i]['address']['company'])."', ";
$query .= (isset($params[$i]['deliveryAddress']['street']) && !empty($params[$i]['deliveryAddress']['street'])) ? "delivery_street='".utf8ToWin1250($params[$i]['deliveryAddress']['street'])."', " : "delivery_street='".utf8ToWin1250($params[$i]['address']['street'])."', ";
$query .= (isset($params[$i]['deliveryAddress']['city']) && !empty($params[$i]['deliveryAddress']['city'])) ? "delivery_city='".utf8ToWin1250($params[$i]['deliveryAddress']['city'])."', " : "delivery_city='".utf8ToWin1250($params[$i]['address']['city'])."', ";
$query .= (isset($params[$i]['deliveryAddress']['zip']) && !empty($params[$i]['deliveryAddress']['zip'])) ? "delivery_zip='".utf8ToWin1250($params[$i]['deliveryAddress']['zip'])."', " : "delivery_zip='".utf8ToWin1250($params[$i]['address']['zip'])."', ";
$query .= (isset($params[$i]['deliveryAddress']['country']) && !empty($params[$i]['deliveryAddress']['country'])) ? "delivery_country='".utf8ToWin1250($params[$i]['deliveryAddress']['country'])."', " : "delivery_country='".utf8ToWin1250($params[$i]['address']['country'])."', ";
$query .= (isset($params[$i]['bankAccounts'][0]['accountNo'])) ? "account_no='".utf8ToWin1250($params[$i]['bankAccounts'][0]['accountNo'])."', " : '';
$query .= (isset($params[$i]['bankAccounts'][0]['code'])) ? "account_bank='".utf8ToWin1250($params[$i]['bankAccounts'][0]['code'])."', " : '';
$query .= (isset($params[$i]['bankAccounts'][0]['symSpec'])) ? "account_symbol='".utf8ToWin1250($params[$i]['bankAccounts'][0]['symSpec'])."', " : '';
$query .= (isset($params[$i]['dateAdded'])) ? "date_reg='".date('Y-m-d H:i:s', iso8601_decode($params[$i]['dateAdded']))."', " : 'date_reg=NOW(), ';
$query .= "date_updated='".date('Y-m-d H:i:s')."' ";
if ($update) {
$queryEnd = 'WHERE id='.intval($params[$i]['contactId']);
/*if(isset($requestParams['dateFrom']))
{
//$query .= " AND date_updated <= '".date("Y-m-d H:i:s", iso8601_decode($requestParams['dateFrom']))."'";
}*/
} else {
$queryEnd = '';
}
// logError(__FILE__, __LINE__, $queryHead.$query.$queryEnd, true);
$SQL = sqlQuery($queryHead.$query.$queryEnd);
// pokud byl vlozen nebo upraven radek vrati type "ok" a status 200 nebo "warning" a jiny status
// pokud nedoslo k upraveni radky ani k vlozeni noveho vrati "error"
if (mysql_affected_rows() != 0) {
if ($update) {
$structItemDetails = POHODA_getDataItemDetails($params[$i]['contactId'], 'ok', 200);
} else {
$values = POHODA_setDataItemValues('contactId', $params[$i]['contactId'], 'id', sqlInsertId());
$structItemDetails = POHODA_getDataItemDetails(sqlInsertId(), 'ok', 200, $values);
}
} elseif ($update) {
// byla pozadovana uprava polozky ale contactId predane v params neexistuje v databazi
// vlozi se jako nova polozka a vrati se id nove polozky
$queryHead = 'INSERT INTO '.getTableName('users').' SET ';
// logError(__FILE__, __LINE__, "spatne id pokus o vlozeni nove polozky: ".$queryHead.$query, true);
$SQL = sqlQuery($queryHead.$query);
if (mysql_affected_rows() != 0) {
$values = POHODA_setDataItemValues('contactId', $params[$i]['contactId'], 'id', sqlInsertId());
$structItemDetails = POHODA_getDataItemDetails(sqlInsertId(), 'warning', 206, $values);
} else {
$values = POHODA_setDataItemValues('contactId', $params[$i]['contactId'], 'id', 0);
$structItemDetails = POHODA_getDataItemDetails($params[$i]['contactId'], 'error', 400, $values);
}
} else {
$structItemDetails = POHODA_getDataItemDetails(0, 'error', 500, '');
}
$response['responseData'][$i] = $structItemDetails;
}
// logError(__FILE__, __LINE__, print_r($response['responseData'], true), true);
return new xmlrpcresp(php_xmlrpc_encode($response));
}