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)); }