diff --git a/upload/api/includes/functions.php b/upload/api/includes/functions.php index 1f61d3d..b69f23c 100644 --- a/upload/api/includes/functions.php +++ b/upload/api/includes/functions.php @@ -56,7 +56,7 @@ function checkAPI ($key, $name) { try { if (!empty($key) && !empty($name)) { $keyCheck = $connect->query( "SELECT * FROM {$DLEprefix}_api_keys WHERE api = :key", array( 'key' => $key) ); - + if(!empty($keyCheck)) { if($keyCheck[0]['is_admin'] && $keyCheck[0]['active'] === 1) { $antwort = array( @@ -66,8 +66,8 @@ function checkAPI ($key, $name) { 'delete' => true, ); } else { - - $tablesCheck = $connect->query( "SELECT * FROM {$DLEprefix}_api_scope + + $tablesCheck = $connect->query( "SELECT * FROM {$DLEprefix}_api_scope WHERE table = :name and key_id = :api", array( 'name' => $name, 'api' => $keyCheck[0]['api']) ); if ( count( $tablesCheck ) > 0 ) { @@ -96,28 +96,32 @@ function checkAPI ($key, $name) { } function defType($value, $type = null) { - $output = null; + $output = null; - if ($type === 'integer') $output = intval($value); - elseif ($type === 'boolean') $output = boolval($value); - elseif ($type === 'double') $output = floatval($value); - else $output = "'{$value}'"; + if ($type === 'integer') $output = intval($value); + elseif ($type === 'boolean') $output = boolval($value); + elseif ($type === 'double') $output = floatval($value); + else $output = "'{$value}'"; - return $output; - } + return $output; + } + + function checkLength($text, $max) { + return (strlen() > $max && $max !== 0) ? substr($text, 0, $max) : $text; + } - class CacheSystem { + class CacheSystem { private $app, $data, $module, $id, $cachePath; - /** - * CacheSystem constructor. - * - * @param $module // Название таблицы - * @param string $id // Идентификационный набор символов - * @param string $data // Передаваемые и сохраняемые данные - * @param string $app // Тип кеша - * @param string $path // Путь кеша - */ + /** + * CacheSystem constructor. + * + * @param $module // Название таблицы + * @param string $id // Идентификационный набор символов + * @param string $data // Передаваемые и сохраняемые данные + * @param string $app // Тип кеша + * @param string $path // Путь кеша + */ public function __construct ($module, $id = '', $data = '', $app = 'full', $path = ENGINE_DIR . '/cache') { $this->data = $data; $this->app = $app; @@ -127,41 +131,41 @@ public function __construct ($module, $id = '', $data = '', $app = 'full', $path $this->setCachePath($path); } - /** - * @param string $cachePath - */ - public function setCachePath (string $cachePath) { - $this->cachePath = $cachePath; - } - - /** - * @return string - */ - public function create() { - $file_name = "{$this->app}_{$this->module}_" . md5($this->id) .'.json'; - file_put_contents($this->cachePath .'/'. $file_name, $this->data); - - return $this->data; - } - - /** - * @return bool|false|string - */ - public function get() { - $file_name = "{$this->app}_{$this->module}_" . md5($this->id) .'.json'; - if (file_exists($this->cachePath .'/'. $file_name)) { - return file_get_contents($this->cachePath.'/'.$file_name); - } - - return false; - } - - /** - * @param string $app - */ - public function clear($app = '') { - $pattern = (empty($app)) ? '*' : $this->app .'_'. $app . '_*'; - $pattern .= '.json'; + /** + * @param string $cachePath + */ + public function setCachePath (string $cachePath) { + $this->cachePath = $cachePath; + } + + /** + * @return string + */ + public function create() { + $file_name = "{$this->app}_{$this->module}_" . md5($this->id) .'.json'; + file_put_contents($this->cachePath .'/'. $file_name, $this->data); + + return $this->data; + } + + /** + * @return bool|false|string + */ + public function get() { + $file_name = "{$this->app}_{$this->module}_" . md5($this->id) .'.json'; + if (file_exists($this->cachePath .'/'. $file_name)) { + return file_get_contents($this->cachePath.'/'.$file_name); + } + + return false; + } + + /** + * @param string $app + */ + public function clear($app = '') { + $pattern = (empty($app)) ? '*' : $this->app .'_'. $app . '_*'; + $pattern .= '.json'; try { foreach (glob($this->cachePath .'/'.$pattern) as $filename) { unlink($filename); @@ -169,12 +173,12 @@ public function clear($app = '') { } catch (Exception $e) { throw new Error($e->getMessage()); } - } - - /** - * @param mixed $data - */ - public function setData ($data) { - $this->data = $data; - } - } + } + + /** + * @param mixed $data + */ + public function setData ($data) { + $this->data = $data; + } + } diff --git a/upload/api/includes/logs/.nomedia b/upload/api/includes/logs/.nomedia new file mode 100644 index 0000000..e69de29 diff --git a/upload/api/routes/_sample.php b/upload/api/routes/_sample.php index fe4591d..9658b44 100644 --- a/upload/api/routes/_sample.php +++ b/upload/api/routes/_sample.php @@ -26,6 +26,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // Оставляем строчку как ориентир // possibleData Add @@ -162,7 +163,7 @@ $names[] = $name; // проверяем тип данных - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -226,7 +227,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -291,4 +299,4 @@ // Отметка для добавления своих методов и функций // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/admin_logs.php b/upload/api/routes/admin_logs.php index 91f5819..0172c3a 100644 --- a/upload/api/routes/admin_logs.php +++ b/upload/api/routes/admin_logs.php @@ -15,36 +15,42 @@ 'type' => "integer", 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'name', 'type' => "string", 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => "integer", 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'ip', 'type' => "string", 'required' => false, 'post' => true, + 'length' => 46 ), array( 'name' => 'action', 'type' => "integer", 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'extras', 'type' => "string", 'required' => true, 'post' => true, + 'length' => 0 ), ); @@ -54,6 +60,7 @@ // 'type' => "Type of value", // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add ); @@ -151,7 +158,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -211,7 +218,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); diff --git a/upload/api/routes/admin_sections.php b/upload/api/routes/admin_sections.php index 8db27b8..bb6a4bd 100644 --- a/upload/api/routes/admin_sections.php +++ b/upload/api/routes/admin_sections.php @@ -1,10 +1,10 @@ 'id', - 'type' => 'integer', - 'required' => false, - 'post' => false, - ], - [ - 'name' => 'name', - 'type' => 'string', - 'required' => false, - 'post' => true, - ], - [ - 'name' => 'title', - 'type' => 'string', - 'required' => false, - 'post' => true, - ], - [ - 'name' => 'descr', - 'type' => 'string', - 'required' => false, - 'post' => true, - ], - [ - 'name' => 'icon', - 'type' => 'string', - 'required' => false, - 'post' => true, - ], - [ - 'name' => 'allow_groups', - 'type' => 'string', - 'required' => false, - 'post' => true, - ], + [ + 'name' => 'id', + 'type' => 'integer', + 'required' => false, + 'post' => false, + 'length' => 0 + ], + [ + 'name' => 'name', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 100 + ], + [ + 'name' => 'title', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 255 + ], + [ + 'name' => 'descr', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 255 + ], + [ + 'name' => 'icon', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 255 + ], + [ + 'name' => 'allow_groups', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 255 + ], ]; // possibleData @@ -56,231 +62,239 @@ // 'type' => "Type of value", // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add ); $app->group('/'.$api_name, function () use ($connect, $api_name, $possibleData) { - $header = []; - $access = [ - 'full' => false, - 'can_read' => false, - 'can_write' => false, - 'can_delete' => false, - ]; - - $this->get('[/]', function (Request $request, Response $response, array $args) use ($possibleData, $api_name, $connect, $header, $access) { - foreach ($request->getHeaders() as $name => $value) { - $name = strtolower(str_replace('HTTP_', '', $name)); - $header[$name] = $value[0]; - } - - $checkAccess = checkAPI($header['x_api_key'], $api_name); - - if (isset($checkAccess['error'])) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); - } - - $access['full'] = $checkAccess['admin']; - $access['can_read'] = $checkAccess['read']; - - if ($access['full'] || $access['can_read']) { - $orderBy = $header['orderby'] ? $header['orderby'] : 'id'; - $sort = $header['sort'] ? $header['sort'] : 'DESC'; - $limit = $header['limit'] ? 'LIMIT '.intval($header['limit']) : ''; - - $possibleParams = ''; - - foreach ($header as $data => $value) { - $keyData = array_search($data, array_column($possibleData, 'name')); - - if (false !== $keyData) { - $postData = $possibleData[$keyData]; - if (0 === strlen($possibleParams)) { - $possibleParams .= " WHERE {$data}".getComparer($header[$data], $postData['type']); - } else { - $possibleParams .= " AND {$data}".getComparer($header[$data], $postData['type']); - } - } - } - - $sql = 'SELECT * FROM '.PREFIX."_{$api_name} {$possibleParams} ORDER by {$orderBy} {$sort} {$limit}"; - - $getData = new CacheSystem($api_name, $sql); - if (empty($getData->get())) { - $data = $connect->query($sql); - $getData->setData(json_encode($data)); - $getData->create(); - } else { - $data = json_decode($getData->get(), true); - } - - $response->withStatus(200)->getBody()->write(json_encode($data)); - } else { - $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на просмотр данных!'])); - } - - return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); - }); - - $this->post('[/]', function (Request $request, Response $response, array $args) use ($possibleData, $api_name, $connect, $header, $access) { - foreach ($request->getHeaders() as $name => $value) { - $name = strtolower(str_replace('HTTP_', '', $name)); - $header[$name] = $value[0]; - } - - $body = []; - foreach ($request->getParsedBody() as $name => $value) { - $body[$name] = $value; - } - - if (empty($body)) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'])); - } - $checkAccess = checkAPI($header['x_api_key'], $api_name); - if (isset($checkAccess['error'])) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); - } - $access['full'] = $checkAccess['admin']; - $access['can_write'] = $checkAccess['write']; - - if ($access['full'] || $access['can_write']) { - $names = []; - $values = []; - - foreach ($body as $name => $value) { - $keyNum = array_search($name, array_column($possibleData, 'name')); - - if (false !== $keyNum) { - $keyData = $possibleData[$keyNum]; - - if (false === $keyData['post']) { - continue; - } - if ($keyData['required'] && empty($value)) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => "Требуемая информация отсутствует: {$name}!"])); - } - $names[] = $name; - $values[] = defType($value, $keyData['type']); - } - } - - $names = implode(', ', $names); - $values = implode(', ', $values); - - try { - $sql = 'INSERT INTO '.PREFIX."_{$api_name} ({$names}) VALUES ({$values})"; - $connect->query($sql); - } catch (Exception $e) { - return $response->withStatus(500)->getBody()->write(json_encode(['error' => "{$e->getMessage()}!"])); - } - - // Почему я не люблю MySQL? Потому что нельзя вернуть данные сразу после добавления в базу данных! - // All Heil PostgreSQL! `INSERT INTO xxx (yyy) VALUES (zzz) RETURNING *`! Вот так просто! - // Но нет, в MySQL нужно строить такой костыль!!! - $lastID = $connect->lastInsertId(); - - try { - $sql = 'SELECT * FROM '.PREFIX."_{$api_name} WHERE id = :id"; - $data = $connect->row($sql, ['id' => $lastID]); - - $cache = new CacheSystem($api_name, $sql); - $cache->clear($api_name); - $cache->setData(json_encode($data)); - } catch (Exception $e) { - return $response->withStatus(500)->getBody()->write(json_encode(['error' => "{$e->getMessage()}!"])); - } - - $response->withStatus(200)->getBody()->write(json_encode($data)); - } else { - $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на добавление новых данных!'])); - } - - return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); - }); - - $this->put('/{id:[0-9]+}[/]', function (Request $request, Response $response, array $args) use ($possibleData, $api_name, $connect, $header, $access) { - foreach ($request->getHeaders() as $name => $value) { - $name = strtolower(str_replace('HTTP_', '', $name)); - $header[$name] = $value[0]; - } - - $body = []; - foreach ($request->getParsedBody() as $name => $value) { - $body[$name] = $value; - } - - if (empty($body)) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'])); - } - $checkAccess = checkAPI($header['x_api_key'], $api_name); - if (isset($checkAccess['error'])) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); - } - $access['full'] = $checkAccess['admin']; - $access['can_write'] = $checkAccess['write']; - - if ($access['full'] || $access['can_write']) { - $id = $args['id']; - if (!intval($id)) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => 'Требуемая информация отсутствует: ID!'])); - } - $values = []; - - foreach ($body as $name => $value) { - if (null !== defType($value) && in_array($name, $possibleData)) { - $values[] = "{$name} = ".defType($value); - } - } - $values = implode(', ', $values); - - $sql = 'UPDATE '.PREFIX."_{$api_name} SET {$values} WHERE id = :id"; - $connect->query($sql, ['id' => $id]); - - $sql = 'SELECT * FROM '.PREFIX."_{$api_name} WHERE id = :id"; - $data = $connect->row($sql, ['id' => $id]); - - $cache = new CacheSystem($api_name, $sql); - $cache->clear($api_name); - $cache->setData(json_encode($data)); - - $response->withStatus(200)->getBody()->write(json_encode($data)); - } else { - $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на изменение данных!'])); - } - - return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); - }); - $this->delete('/{id:[0-9]+}[/]', function (Request $request, Response $response, array $args) use ($api_name, $connect, $header, $access) { - foreach ($request->getHeaders() as $name => $value) { - $name = strtolower(str_replace('HTTP_', '', $name)); - $header[$name] = $value[0]; - } - - $checkAccess = checkAPI($header['x_api_key'], $api_name); - if (isset($checkAccess['error'])) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); - } - $access['full'] = $checkAccess['admin']; - $access['can_delete'] = $checkAccess['delete']; - - if ($access['full'] || $access['can_delete']) { - $id = $args['id']; - if (!intval($id)) { - return $response->withStatus(400)->getBody()->write(json_encode(['error' => "Требуемая информация отсутствует: {$id}!"])); - } - $sql = 'DELETE FROM '.PREFIX."_{$api_name} WHERE id = {$id}"; - $connect->query($sql); - - $cache = new CacheSystem($api_name, $sql); - $cache->clear($api_name); - - $response->withStatus(200)->getBody()->write(json_encode(['success' => 'Данные успешно удалены!'])); - } else { - $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на удаление данных!'])); - } - - return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); - }); - - // Own routing Add -}); \ No newline at end of file + $header = []; + $access = [ + 'full' => false, + 'can_read' => false, + 'can_write' => false, + 'can_delete' => false, + ]; + + $this->get('[/]', function (Request $request, Response $response, array $args) use ($possibleData, $api_name, $connect, $header, $access) { + foreach ($request->getHeaders() as $name => $value) { + $name = strtolower(str_replace('HTTP_', '', $name)); + $header[$name] = $value[0]; + } + + $checkAccess = checkAPI($header['x_api_key'], $api_name); + + if (isset($checkAccess['error'])) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); + } + + $access['full'] = $checkAccess['admin']; + $access['can_read'] = $checkAccess['read']; + + if ($access['full'] || $access['can_read']) { + $orderBy = $header['orderby'] ? $header['orderby'] : 'id'; + $sort = $header['sort'] ? $header['sort'] : 'DESC'; + $limit = $header['limit'] ? 'LIMIT '.intval($header['limit']) : ''; + + $possibleParams = ''; + + foreach ($header as $data => $value) { + $keyData = array_search($data, array_column($possibleData, 'name')); + + if (false !== $keyData) { + $postData = $possibleData[$keyData]; + if (0 === strlen($possibleParams)) { + $possibleParams .= " WHERE {$data}".getComparer($header[$data], $postData['type']); + } else { + $possibleParams .= " AND {$data}".getComparer($header[$data], $postData['type']); + } + } + } + + $sql = 'SELECT * FROM '.PREFIX."_{$api_name} {$possibleParams} ORDER by {$orderBy} {$sort} {$limit}"; + + $getData = new CacheSystem($api_name, $sql); + if (empty($getData->get())) { + $data = $connect->query($sql); + $getData->setData(json_encode($data)); + $getData->create(); + } else { + $data = json_decode($getData->get(), true); + } + + $response->withStatus(200)->getBody()->write(json_encode($data)); + } else { + $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на просмотр данных!'])); + } + + return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); + }); + + $this->post('[/]', function (Request $request, Response $response, array $args) use ($possibleData, $api_name, $connect, $header, $access) { + foreach ($request->getHeaders() as $name => $value) { + $name = strtolower(str_replace('HTTP_', '', $name)); + $header[$name] = $value[0]; + } + + $body = []; + foreach ($request->getParsedBody() as $name => $value) { + $body[$name] = $value; + } + + if (empty($body)) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'])); + } + $checkAccess = checkAPI($header['x_api_key'], $api_name); + if (isset($checkAccess['error'])) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); + } + $access['full'] = $checkAccess['admin']; + $access['can_write'] = $checkAccess['write']; + + if ($access['full'] || $access['can_write']) { + $names = []; + $values = []; + + foreach ($body as $name => $value) { + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if (false !== $keyNum) { + $keyData = $possibleData[$keyNum]; + + if (false === $keyData['post']) { + continue; + } + if ($keyData['required'] && empty($value)) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => "Требуемая информация отсутствует: {$name}!"])); + } + $names[] = $name; + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); + } + } + + $names = implode(', ', $names); + $values = implode(', ', $values); + + try { + $sql = 'INSERT INTO '.PREFIX."_{$api_name} ({$names}) VALUES ({$values})"; + $connect->query($sql); + } catch (Exception $e) { + return $response->withStatus(500)->getBody()->write(json_encode(['error' => "{$e->getMessage()}!"])); + } + + // Почему я не люблю MySQL? Потому что нельзя вернуть данные сразу после добавления в базу данных! + // All Heil PostgreSQL! `INSERT INTO xxx (yyy) VALUES (zzz) RETURNING *`! Вот так просто! + // Но нет, в MySQL нужно строить такой костыль!!! + $lastID = $connect->lastInsertId(); + + try { + $sql = 'SELECT * FROM '.PREFIX."_{$api_name} WHERE id = :id"; + $data = $connect->row($sql, ['id' => $lastID]); + + $cache = new CacheSystem($api_name, $sql); + $cache->clear($api_name); + $cache->setData(json_encode($data)); + } catch (Exception $e) { + return $response->withStatus(500)->getBody()->write(json_encode(['error' => "{$e->getMessage()}!"])); + } + + $response->withStatus(200)->getBody()->write(json_encode($data)); + } else { + $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на добавление новых данных!'])); + } + + return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); + }); + + $this->put('/{id:[0-9]+}[/]', function (Request $request, Response $response, array $args) use ($possibleData, $api_name, $connect, $header, $access) { + foreach ($request->getHeaders() as $name => $value) { + $name = strtolower(str_replace('HTTP_', '', $name)); + $header[$name] = $value[0]; + } + + $body = []; + foreach ($request->getParsedBody() as $name => $value) { + $body[$name] = $value; + } + + if (empty($body)) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'])); + } + $checkAccess = checkAPI($header['x_api_key'], $api_name); + if (isset($checkAccess['error'])) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); + } + $access['full'] = $checkAccess['admin']; + $access['can_write'] = $checkAccess['write']; + + if ($access['full'] || $access['can_write']) { + $id = $args['id']; + if (!intval($id)) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => 'Требуемая информация отсутствует: ID!'])); + } + $values = []; + + foreach ($body as $name => $value) { + if (null !== defType($value) && in_array($name, $possibleData)) { + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } + } + } + $values = implode(', ', $values); + + $sql = 'UPDATE '.PREFIX."_{$api_name} SET {$values} WHERE id = :id"; + $connect->query($sql, ['id' => $id]); + + $sql = 'SELECT * FROM '.PREFIX."_{$api_name} WHERE id = :id"; + $data = $connect->row($sql, ['id' => $id]); + + $cache = new CacheSystem($api_name, $sql); + $cache->clear($api_name); + $cache->setData(json_encode($data)); + + $response->withStatus(200)->getBody()->write(json_encode($data)); + } else { + $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на изменение данных!'])); + } + + return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); + }); + $this->delete('/{id:[0-9]+}[/]', function (Request $request, Response $response, array $args) use ($api_name, $connect, $header, $access) { + foreach ($request->getHeaders() as $name => $value) { + $name = strtolower(str_replace('HTTP_', '', $name)); + $header[$name] = $value[0]; + } + + $checkAccess = checkAPI($header['x_api_key'], $api_name); + if (isset($checkAccess['error'])) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => $checkAccess['error']])); + } + $access['full'] = $checkAccess['admin']; + $access['can_delete'] = $checkAccess['delete']; + + if ($access['full'] || $access['can_delete']) { + $id = $args['id']; + if (!intval($id)) { + return $response->withStatus(400)->getBody()->write(json_encode(['error' => "Требуемая информация отсутствует: {$id}!"])); + } + $sql = 'DELETE FROM '.PREFIX."_{$api_name} WHERE id = {$id}"; + $connect->query($sql); + + $cache = new CacheSystem($api_name, $sql); + $cache->clear($api_name); + + $response->withStatus(200)->getBody()->write(json_encode(['success' => 'Данные успешно удалены!'])); + } else { + $response->withStatus(400)->getBody()->write(json_encode(['error' => 'У вас нет прав на удаление данных!'])); + } + + return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); + }); + + // Own routing Add +}); diff --git a/upload/api/routes/banned.php b/upload/api/routes/banned.php index c4f330b..58a30da 100644 --- a/upload/api/routes/banned.php +++ b/upload/api/routes/banned.php @@ -15,36 +15,42 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'users_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'descr', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'days', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), ); @@ -54,6 +60,7 @@ // 'type' => "Type of value", // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -152,7 +159,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -212,7 +219,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); diff --git a/upload/api/routes/banners.php b/upload/api/routes/banners.php index b309348..b462658 100644 --- a/upload/api/routes/banners.php +++ b/upload/api/routes/banners.php @@ -15,132 +15,154 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'banner_tag', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'descr', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'code', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'approve', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'short_place', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'bstick', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'main', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'category', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'grouplevel', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'start', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'end', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'fpage', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'innews', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'devicelevel', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'allow_views', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_views', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_counts', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_counts', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'views', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'clicks', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'rubric', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -150,6 +172,7 @@ // 'type' => "Type of value", // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -249,7 +272,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -309,7 +332,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -370,4 +400,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/banners_logs.php b/upload/api/routes/banners_logs.php index 7c38263..45bb459 100644 --- a/upload/api/routes/banners_logs.php +++ b/upload/api/routes/banners_logs.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'bid', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'click', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/banners_rubrics.php b/upload/api/routes/banners_rubrics.php index da65502..7065e9b 100644 --- a/upload/api/routes/banners_rubrics.php +++ b/upload/api/routes/banners_rubrics.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'parentid', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'title', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 70 ), array( 'name' => 'description', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/category.php b/upload/api/routes/category.php index 90471ef..94148db 100644 --- a/upload/api/routes/category.php +++ b/upload/api/routes/category.php @@ -15,120 +15,168 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'parentid', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'posi', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'name', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 50 ), array( 'name' => 'alt_name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), array( 'name' => 'icon', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'descr', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 300 ), array( 'name' => 'keywords', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'news_sort', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'news_msort', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 4 ), array( 'name' => 'short_tpl', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 400 ), array( 'name' => 'full_tpl', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'metatitle', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'show_sub', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rss', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'fulldescr', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_search', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_main', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_rating', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_comments', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 + ), + array( + 'name' => 'enable_dzen', + 'type' => 'boolean', + 'required' => false, + 'post' => true, + 'length' => 0 + ), + array( + 'name' => 'enable_turbo', + 'type' => 'boolean', + 'required' => false, + 'post' => true, + 'length' => 0 + ), + array( + 'name' => 'active', + 'type' => 'boolean', + 'required' => false, + 'post' => true, + 'length' => 0 + ), + array( + 'name' => 'rating_type', + 'type' => 'boolean', + 'required' => false, + 'post' => true, + 'length' => 0 ), ); @@ -138,6 +186,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -237,7 +286,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -297,7 +346,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -358,4 +414,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/comment_rating_log.php b/upload/api/routes/comment_rating_log.php index 8f80c5a..3f66e15 100644 --- a/upload/api/routes/comment_rating_log.php +++ b/upload/api/routes/comment_rating_log.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'c_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'member', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 40 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), array( 'name' => 'rating', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/comments.php b/upload/api/routes/comments.php index e6d6953..1a14580 100644 --- a/upload/api/routes/comments.php +++ b/upload/api/routes/comments.php @@ -15,78 +15,91 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'post_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( - 'name' => 'autir', + 'name' => 'autor', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'email', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'text', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 46 ), array( 'name' => 'is_registred', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'approve', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'rating', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'vote_num', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'parent', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -96,6 +109,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -195,7 +209,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -255,7 +269,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -316,4 +337,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/comments_files.php b/upload/api/routes/comments_files.php index 5bc9c91..15ad3ff 100644 --- a/upload/api/routes/comments_files.php +++ b/upload/api/routes/comments_files.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'c_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'author', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/complaint.php b/upload/api/routes/complaint.php index c2bf396..fa8bb07 100644 --- a/upload/api/routes/complaint.php +++ b/upload/api/routes/complaint.php @@ -15,54 +15,63 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'p_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'c_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'n_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'text', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'from', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'to', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'email', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), ); @@ -72,6 +81,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -171,7 +181,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -231,7 +241,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -292,4 +309,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/email.php b/upload/api/routes/email.php index d6095c7..e3a5d2f 100644 --- a/upload/api/routes/email.php +++ b/upload/api/routes/email.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'name', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 10 ), array( 'name' => 'template', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'use_html', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/files.php b/upload/api/routes/files.php index db8c59d..bcdfa7b 100644 --- a/upload/api/routes/files.php +++ b/upload/api/routes/files.php @@ -15,54 +15,63 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'name', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 255 ), array( 'name' => 'onserver', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'author', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'dcount', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'size', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'checksum', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 32 ), ); @@ -72,6 +81,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add $app->group('/' . $api_name, function ( ) use ( $connect, $api_name, $possibleData ) { @@ -170,7 +180,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -230,7 +240,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -291,4 +308,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/flood.php b/upload/api/routes/flood.php index 7f221ae..ab2fb05 100644 --- a/upload/api/routes/flood.php +++ b/upload/api/routes/flood.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 46 ), array( 'name' => 'id', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 20 ), array( 'name' => 'flag', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/ignore_list.php b/upload/api/routes/ignore_list.php index 37b4bea..f3322b1 100644 --- a/upload/api/routes/ignore_list.php +++ b/upload/api/routes/ignore_list.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'user', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'user_from', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/images.php b/upload/api/routes/images.php index 4682627..186c7fe 100644 --- a/upload/api/routes/images.php +++ b/upload/api/routes/images.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'images', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'author', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/links.php b/upload/api/routes/links.php index 026f62c..2111f75 100644 --- a/upload/api/routes/links.php +++ b/upload/api/routes/links.php @@ -15,48 +15,56 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'word', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 255 ), array( 'name' => 'link', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'title', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'rcount', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'only_one', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'replacearea', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'targetblank', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -66,6 +74,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -165,7 +174,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -225,7 +234,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -286,4 +302,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/login_log.php b/upload/api/routes/login_log.php index 986332d..f37fb6c 100644 --- a/upload/api/routes/login_log.php +++ b/upload/api/routes/login_log.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 46 ), array( 'name' => 'count', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/logs.php b/upload/api/routes/logs.php index ae24e02..46c17f6 100644 --- a/upload/api/routes/logs.php +++ b/upload/api/routes/logs.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'member', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 40 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), array( 'name' => 'rating', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/lostdb.php b/upload/api/routes/lostdb.php index 3fd35e5..9336615 100644 --- a/upload/api/routes/lostdb.php +++ b/upload/api/routes/lostdb.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'lostname', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'lostid', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 40 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/mail_log.php b/upload/api/routes/mail_log.php index a7bd9e0..d3b7574 100644 --- a/upload/api/routes/mail_log.php +++ b/upload/api/routes/mail_log.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'mail', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), array( 'name' => 'hash', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/metatags.php b/upload/api/routes/metatags.php index 5412d08..9954940 100644 --- a/upload/api/routes/metatags.php +++ b/upload/api/routes/metatags.php @@ -15,48 +15,56 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'url', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'title', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'description', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 300 ), array( 'name' => 'keywords', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'page_title', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'page_description', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'robots', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), ); @@ -66,6 +74,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -165,7 +174,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -225,7 +234,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -286,4 +302,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/notice.php b/upload/api/routes/notice.php index acf947d..e5f9f2d 100644 --- a/upload/api/routes/notice.php +++ b/upload/api/routes/notice.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'notice', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/plugins.php b/upload/api/routes/plugins.php index 9acc934..0bfe011 100644 --- a/upload/api/routes/plugins.php +++ b/upload/api/routes/plugins.php @@ -15,150 +15,175 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'description', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'icon', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'version', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'dleversion', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'versioncompare', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'active', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'mysqlinstall', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'mysqlupgrade', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'mysqlenable', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'mysqldisable', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'mysqldelete', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'filedelete', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'filelist', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'upgradeurl', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'needplugin', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'phpinstall', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'phpupgrade', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'phpenable', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'phpdisable', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'phpdelete', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'notice', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'mnotice', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'posi', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -168,6 +193,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -267,7 +293,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -327,7 +353,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -388,4 +421,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/plugins_files.php b/upload/api/routes/plugins_files.php index 3eb2dae..a9b0fce 100644 --- a/upload/api/routes/plugins_files.php +++ b/upload/api/routes/plugins_files.php @@ -15,54 +15,63 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'plugin_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'file', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'action', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'searchcode', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'replacecode', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'active', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'searchcount', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'replacecount', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -72,6 +81,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -171,7 +181,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -231,7 +241,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -292,4 +309,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/plugins_logs.php b/upload/api/routes/plugins_logs.php index 992f828..dbae22e 100644 --- a/upload/api/routes/plugins_logs.php +++ b/upload/api/routes/plugins_logs.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'plugin_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'area', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'error', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'type', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/pm.php b/upload/api/routes/pm.php index f59769a..6fb20b5 100644 --- a/upload/api/routes/pm.php +++ b/upload/api/routes/pm.php @@ -15,54 +15,63 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'subj', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'text', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'user', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'user_from', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'folder', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'reply', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'sendid', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -72,6 +81,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -171,7 +181,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -231,7 +241,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -292,4 +309,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/poll.php b/upload/api/routes/poll.php index 7bb8f3a..2745a89 100644 --- a/upload/api/routes/poll.php +++ b/upload/api/routes/poll.php @@ -15,48 +15,56 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'title', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'frage', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'body', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'votes', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'multiple', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'answer', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), ); @@ -66,6 +74,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -165,7 +174,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -225,7 +234,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -286,4 +302,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/poll_log.php b/upload/api/routes/poll_log.php index 166d3c6..f14ca5b 100644 --- a/upload/api/routes/poll_log.php +++ b/upload/api/routes/poll_log.php @@ -1,8 +1,8 @@ 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'member', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/post.php b/upload/api/routes/post.php index 486352d..6abb67a 100644 --- a/upload/api/routes/post.php +++ b/upload/api/routes/post.php @@ -15,120 +15,140 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'autor', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'short_story', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'full_story', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'xfields', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'title', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'descr', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 300 ), array( 'name' => 'keywords', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'category', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 190 ), array( 'name' => 'alt_name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 190 ), array( 'name' => 'comm_num', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_comm', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_main', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'approve', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'fixed', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_br', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'symbol', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'tags', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'metatitle', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), ); @@ -138,6 +158,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -237,7 +258,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -297,7 +318,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -358,4 +386,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/post_extras.php b/upload/api/routes/post_extras.php index c77d7ef..2969d23 100644 --- a/upload/api/routes/post_extras.php +++ b/upload/api/routes/post_extras.php @@ -15,120 +15,140 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'news_read', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rate', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'rating', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'vote_num', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'votes', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'view_edit', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_index', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'related_ids', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'access', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'editdate', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'editor', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'reason', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_search', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'need_pass', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rss', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rss_turbo', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rss_turbo_dzen', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -138,6 +158,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -237,7 +258,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -297,7 +318,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -358,4 +386,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/post_extras_cats.php b/upload/api/routes/post_extras_cats.php index e64b53e..026137c 100644 --- a/upload/api/routes/post_extras_cats.php +++ b/upload/api/routes/post_extras_cats.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'cat_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/post_log.php b/upload/api/routes/post_log.php index 99e365b..38547ae 100644 --- a/upload/api/routes/post_log.php +++ b/upload/api/routes/post_log.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'expires', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'action', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'move_cat', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 190 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/post_pass.php b/upload/api/routes/post_pass.php index a44724a..cd970b2 100644 --- a/upload/api/routes/post_pass.php +++ b/upload/api/routes/post_pass.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'password', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/question.php b/upload/api/routes/question.php index ac21f36..9e72be4 100644 --- a/upload/api/routes/question.php +++ b/upload/api/routes/question.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'question', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'answer', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/read_log.php b/upload/api/routes/read_log.php index e83ea91..e5e9c24 100644 --- a/upload/api/routes/read_log.php +++ b/upload/api/routes/read_log.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/redirects.php b/upload/api/routes/redirects.php index 9affe5c..3a15afb 100644 --- a/upload/api/routes/redirects.php +++ b/upload/api/routes/redirects.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'from', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 250 ), array( 'name' => 'to', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 250 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/rss.php b/upload/api/routes/rss.php index 5d59f83..068619c 100644 --- a/upload/api/routes/rss.php +++ b/upload/api/routes/rss.php @@ -15,78 +15,91 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'url', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'description', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_main', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rating', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_comm', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'text_type', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'date', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'search', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_news', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'cookie', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'category', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'lastdate', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -96,6 +109,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -195,7 +209,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -255,7 +269,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -316,4 +337,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/rssinform.php b/upload/api/routes/rssinform.php index 0db3a5e..ec851d3 100644 --- a/upload/api/routes/rssinform.php +++ b/upload/api/routes/rssinform.php @@ -15,66 +15,77 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'tag', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'descr', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'category', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'url', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'template', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'news_max', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'tmax', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'dmax', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'approve', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'rss_date_format', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -84,6 +95,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -183,7 +195,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -243,7 +255,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -304,4 +323,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/sendlog.php b/upload/api/routes/sendlog.php index a1649e0..4dacd07 100644 --- a/upload/api/routes/sendlog.php +++ b/upload/api/routes/sendlog.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'user', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'flag', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/social_login.php b/upload/api/routes/social_login.php index f3b1d8a..34b11e3 100644 --- a/upload/api/routes/social_login.php +++ b/upload/api/routes/social_login.php @@ -15,42 +15,49 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'sid', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'uid', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'password', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 32 ), array( 'name' => 'provider', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'wait', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'waitlogin', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -60,6 +67,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -159,7 +167,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -219,7 +227,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -280,4 +295,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/spam_log.php b/upload/api/routes/spam_log.php index 129ff98..96b4090 100644 --- a/upload/api/routes/spam_log.php +++ b/upload/api/routes/spam_log.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), array( 'name' => 'is_spammer', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'email', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/static.php b/upload/api/routes/static.php index 17ef641..cfb85fa 100644 --- a/upload/api/routes/static.php +++ b/upload/api/routes/static.php @@ -15,114 +15,133 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'descr', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'template', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_br', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_template', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'grouplevel', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'tpl', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'metadescr', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 3000 ), array( 'name' => 'metakeys', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'views', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'template_folder', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'metatitle', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'allow_count', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'sitemap', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_index', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_search', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'password', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), ); @@ -132,6 +151,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -231,7 +251,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -291,7 +311,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -352,4 +379,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/static_files.php b/upload/api/routes/static_files.php index a628439..7e4508d 100644 --- a/upload/api/routes/static_files.php +++ b/upload/api/routes/static_files.php @@ -15,54 +15,63 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'static_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'author', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'date', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 15 ), array( 'name' => 'name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'onserver', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 190 ), array( 'name' => 'dcount', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'size', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'checksum', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -72,6 +81,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -171,7 +181,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -231,7 +241,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -292,4 +309,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/subscribe.php b/upload/api/routes/subscribe.php index bffc8f9..30cf9d3 100644 --- a/upload/api/routes/subscribe.php +++ b/upload/api/routes/subscribe.php @@ -15,36 +15,42 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'email', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 50 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'hash', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 32 ), ); @@ -54,6 +60,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -153,7 +160,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -213,7 +220,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -274,4 +288,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/tags.php b/upload/api/routes/tags.php index 89cd68e..c9f041d 100644 --- a/upload/api/routes/tags.php +++ b/upload/api/routes/tags.php @@ -15,18 +15,21 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'tag', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), ); @@ -36,6 +39,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -135,7 +139,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -195,7 +199,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -256,4 +267,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/twofactor.php b/upload/api/routes/twofactor.php index 068fd68..4a509c7 100644 --- a/upload/api/routes/twofactor.php +++ b/upload/api/routes/twofactor.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'pin', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'attempt', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'date', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/usergroups.php b/upload/api/routes/usergroups.php index 4670cb0..59b7dd2 100644 --- a/upload/api/routes/usergroups.php +++ b/upload/api/routes/usergroups.php @@ -15,702 +15,819 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'group_name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), array( 'name' => 'allow_cats', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_adds', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'cat_add', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_admin', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_addc', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_editc', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_delc', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'edit_allc', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'del_allc', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'moderation', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_all_edit', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_edit', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_pm', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_pm', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_foto', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 10 ), array( 'name' => 'allow_files', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_hide', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_short', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'time_limit', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'rid', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_fixed', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_feed', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_search', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_poll', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_main', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'captcha', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'icon', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'allow_modc', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_rating', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_offline', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_image_upload', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_file_upload', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_signature', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_url', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'news_sec_code', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_image', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_signature', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_info', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_addnews', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_editnews', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_comments', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_categories', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_editusers', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_wordfilter', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_xfields', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_userfields', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_static', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_editvote', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_newsletter', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_blockip', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_banners', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_rss', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_iptools', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_rssinform', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_googlemap', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_html', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'group_prefix', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'group_sufix', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_subscribe', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_image_size', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'cat_allow_addnews', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'flood_news', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_day_news', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_leech', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'edit_limit', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'captcha_pm', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_pm_day', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_mail_day', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_tagscloud', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_vote', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'admin_complaint', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'news_question', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'comments_question', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_comment_day', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_images', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_files', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_news_captcha', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'disable_comments_captcha', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'pm_question', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'captcha_feedback', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'feedback_question', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'files_type', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'max_file_size', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'file_max_speed', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'spamfilter', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_comments_rating', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_edit_days', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'spampmfilter', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_reg', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_reg_days', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_reg_group', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_news', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_news_count', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_news_group', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_comments', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_comments_count', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_comments_group', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_rating', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_rating_count', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'force_rating_group', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'not_allow_cats', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_up_image', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_up_watermark', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allow_up_thumb', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'up_count_image', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'up_image_side', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 20 ), array( 'name' => 'up_image_size', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'up_thumb_size', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 20 ), array( 'name' => 'allow_mail_files', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_mail_files', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'max_mail_allfiles', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'mail_file_type', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'video_comments', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'media_comments', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'min_image_side', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 20 ), ); @@ -720,6 +837,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -819,7 +937,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -879,7 +997,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -940,4 +1065,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/users.php b/upload/api/routes/users.php index 7c43106..2010249 100644 --- a/upload/api/routes/users.php +++ b/upload/api/routes/users.php @@ -8,199 +8,242 @@ use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +include_once (ENGINE_DIR . '/api/api.class.php'); + +$dle_api = new DLE_API(); + $api_name = 'users'; $possibleData = array( array( 'name' => 'email', 'type' => 'string', - 'required' => false, + 'required' => true, 'post' => true, + 'length' => 50 ), array( 'name' => 'password', 'type' => 'string', - 'required' => false, + 'required' => true, 'post' => true, + 'length' => 255 ), array( 'name' => 'name', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 40 ), array( 'name' => 'user_id', 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_num', 'type' => 'interger', - 'required' => true, + 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'comm_num', 'type' => 'interger', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'user_group', 'type' => 'integer', - 'required' => false, + 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'lastdate', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 20 ), array( 'name' => 'reg_date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 20 ), array( 'name' => 'banned', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 5 ), array( 'name' => 'allow_mail', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'info', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'signature', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'foto', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'fullname', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'land', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'favorites', 'type' => 'string', - 'required' => true, + 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'pm_all', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'pm_unread', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'xfields', 'type' => 'string', - 'required' => true, + 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'allowed_ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 255 ), array( 'name' => 'hash', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 32 ), array( 'name' => 'logged_ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'restricted', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'restricted_days', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'restricted_date', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'timezone', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), array( 'name' => 'news_subscribe', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'comments_reply_subscribe', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'twofactor_auth', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'cat_add', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 500 ), array( 'name' => 'cat_allow_addnews', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 500 + ), + array( + 'name' => 'time_limit', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 20 ), ); @@ -210,6 +253,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -273,7 +317,7 @@ return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); }); - $this->post('[/]', function (Request $request, Response $response, Array $args) use ($possibleData, $api_name, $connect, $header, $access ) { + $this->post('/register[/]', function (Request $request, Response $response, Array $args) use ($possibleData, $api_name, $connect, $header, $access ) { foreach ( $request->getHeaders() as $name => $value ) { $name = strtolower(str_replace('HTTP_', '', $name)); $header[$name] = $value[0]; @@ -282,6 +326,11 @@ $body = array(); foreach( $request->getParsedBody() as $name => $value ) $body[$name] = $value; + $requiredData = ['name', 'password', 'email', 'user_group']; + foreach ( $requiredData as $data) { + if(!isset($body[$data]) && empty($body[$data])) + return $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'))); + } if (empty($body)) return $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'))); @@ -294,7 +343,6 @@ if ($access['full'] || $access['can_write']) { - $names = array(); $values = array(); foreach ( $body as $name => $value ) { @@ -303,35 +351,92 @@ if ($keyNum !== false) { $keyData = $possibleData[$keyNum]; - if ( $keyData['post'] === false) continue; - - if ( $keyData['required'] && empty($value)) - return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); - - $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); } } - $names = implode(', ', $names); - $values = implode(', ', $values); + $user_register = $dle_api->external_register($body['name'], $body['password'], $body['email'], $body['user_group']); + if (1 === (int) $user_register) { + $names = implode(', ', $names); + $values = implode(', ', $values); + + $sql = 'UPDATE '.USERPREFIX."_{$api_name} SET WHERE name = :name and email = :email"; + $connect->row($sql, ['name' => $body['name'], 'email' => $body['email']]); + + // Почему я не люблю MySQL? Потому что нельзя вернуть данные сразу после добавления в базу данных! + // All Heil PostgreSQL! `INSERT INTO xxx (yyy) VALUES (zzz) RETURNING *`! Вот так просто! + // Но нет, в MySQL нужно строить такой костыль!!! + $lastID = $connect->lastInsertId(); + $sql = 'SELECT * FROM '.PREFIX."_{$api_name} WHERE user_id = :id"; + $data = $connect->row($sql, ['id' => $lastID]); + + $cache = new CacheSystem($api_name, $sql); + $cache->clear($api_name); + $cache->setData(json_encode($data)); + + $response->withStatus(200)->getBody()->write(json_encode($data)); + } elseif (-1 === (int) $user_register) { + $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Пользователь с таким именем уже существует!'))); + } elseif (-2 === (int) $user_register) { + $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Пользователь с такой электронной почтой уже существует!'))); + } elseif (-3 === (int) $user_register) { + $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Введённая почта не действительна или задана не корректно!'))); + } elseif (-4 === (int) $user_register) { + $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Заданной группы не существует!'))); + } + } else { - $sql = "INSERT INTO " . USERPREFIX . "_{$api_name} ({$names}) VALUES ({$values})"; - $connect->query( $sql ); + $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'У вас нет прав на добавление новых данных!'))); - // Почему я не люблю MySQL? Потому что нельзя вернуть данные сразу после добавления в базу данных! - // All Heil PostgreSQL! `INSERT INTO xxx (yyy) VALUES (zzz) RETURNING *`! Вот так просто! - // Но нет, в MySQL нужно строить такой костыль!!! - $lastID = $connect->lastInsertId(); - $sql = "SELECT * FROM " . PREFIX . "_{$api_name} WHERE id = :id"; - $data = $connect->row($sql, array('id' => $lastID)); + } - $cache = new CacheSystem($api_name, $sql); - $cache->clear($api_name); - $cache->setData(json_encode($data)); + return $response->withHeader('Content-type', 'application/json; charset=UTF-8'); + }); - $response->withStatus( 200 )->getBody()->write( json_encode( $data ) ); + $this->post('/auth[/]', function (Request $request, Response $response, Array $args) use ($possibleData, $api_name, $connect, $header, $access ) { + foreach ( $request->getHeaders() as $name => $value ) { + $name = strtolower(str_replace('HTTP_', '', $name)); + $header[$name] = $value[0]; + } + + $body = array(); + foreach( $request->getParsedBody() as $name => $value ) $body[$name] = $value; + + $requiredData = ['name', 'password']; + foreach ( $requiredData as $data) { + if(!isset($body[$data]) && empty($body[$data])) + return $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'))); + } + + if (empty($body)) + return $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'Требуемая информация пуста: Заполните POST-форму и попробуйте снова!'))); + + $checkAccess = checkAPI($header['x_api_key'], $api_name); + if (isset($checkAccess['error'])) return $response->withStatus(400)->getBody()->write(json_encode(array('error' => $checkAccess['error']))); + + $access['full'] = $checkAccess['admin']; + $access['can_read'] = $checkAccess['read']; + + if ($access['full'] || $access['can_read']) { + + $user_auth = $dle_api->external_auth($body['name'], $body['password']); + if ($user_auth) { + $sql = 'SELECT * FROM'.USERPREFIX."_{$api_name} WHERE name = :name"; + + $cache = new CacheSystem($api_name, $sql); + if (empty($cache->get())) { + $data = $connect->row($sql, ['name' => $body['name']]); + $cache->setData(json_encode($data)); + $cache->create(); + } else { + $data = json_decode($cache->get(), true); + } + + $response->withStatus(200)->getBody()->write(json_encode($data)); + } else { + $response->withStatus(400)->getBody()->write(json_encode(array('error' => 'При авторизации были неверно введены данные входа!'))); + } } else { @@ -369,7 +474,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -430,4 +542,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/views.php b/upload/api/routes/views.php index 21fc22f..3880522 100644 --- a/upload/api/routes/views.php +++ b/upload/api/routes/views.php @@ -15,12 +15,14 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -30,6 +32,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -129,7 +132,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -189,7 +192,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -250,4 +260,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/vote.php b/upload/api/routes/vote.php index a94229f..d06508e 100644 --- a/upload/api/routes/vote.php +++ b/upload/api/routes/vote.php @@ -15,54 +15,70 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'category', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'vote_num', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'title', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 200 ), array( 'name' => 'body', 'type' => 'string', 'required' => true, 'post' => true, + 'length' => 0 ), array( 'name' => 'approve', 'type' => 'boolean', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'start', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'end', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 15 ), array( 'name' => 'grouplevel', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 250 + ), + array( + 'name' => 'date', + 'type' => 'string', + 'required' => false, + 'post' => true, + 'length' => 25 ), ); @@ -72,6 +88,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -171,7 +188,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -231,7 +248,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -292,4 +316,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/vote_result.php b/upload/api/routes/vote_result.php index 1f9aa34..eb6ae99 100644 --- a/upload/api/routes/vote_result.php +++ b/upload/api/routes/vote_result.php @@ -15,30 +15,35 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'ip', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 46 ), array( 'name' => 'name', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 40 ), array( 'name' => 'vote_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'answer', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), ); @@ -48,6 +53,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -147,7 +153,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -207,7 +213,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -268,4 +281,4 @@ }); // Own routing Add -}); \ No newline at end of file +}); diff --git a/upload/api/routes/xfsearch.php b/upload/api/routes/xfsearch.php index e5ac412..eae68db 100644 --- a/upload/api/routes/xfsearch.php +++ b/upload/api/routes/xfsearch.php @@ -15,24 +15,28 @@ 'type' => 'integer', 'required' => false, 'post' => false, + 'length' => 0 ), array( 'name' => 'news_id', 'type' => 'integer', 'required' => false, 'post' => true, + 'length' => 0 ), array( 'name' => 'tagname', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 50 ), array( 'name' => 'tagvalue', 'type' => 'string', 'required' => false, 'post' => true, + 'length' => 100 ), ); @@ -42,6 +46,7 @@ // 'type' => "Type of value", // integer, string, boolean, double // 'required' => true/false, // Обязательное поле? // 'post' => true/false, // Разрешить использовать при добавлении или редактуре? +// 'length' => 0, // Указывается ограничение для типа string. Содержимое будет обрезаться при нарушении макс. значения // ); // possibleData Add @@ -141,7 +146,7 @@ return $response->withStatus(400)->getBody()->write(json_encode(array('error' => "Требуемая информация отсутствует: {$name}!"))); $names[] = $name; - $values[] = defType($value, $keyData['type']); + $values[] = defType(checkLength($value, $keyData['length']), $keyData['type']); } } @@ -201,7 +206,14 @@ foreach ( $body as $name => $value ) { if ( defType($value) !== null && in_array($name, $possibleData)) { - $values[] = "{$name} = " . defType($value); + $keyNum = array_search($name, array_column($possibleData, 'name')); + + if ($keyNum !== false) { + $keyData = $possibleData[$keyNum]; + + $values[] ="{$name} = " . defType(checkLength($value, $keyData['length']), $keyData['type']); + + } } } $values = implode(', ', $values); @@ -262,4 +274,4 @@ }); // Own routing Add -}); \ No newline at end of file +});