272 lines
14 KiB
PHP
272 lines
14 KiB
PHP
<?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));
|
|
}
|