Explorar o código

SQL attributes native unicode (#5371)

Save our attributes for entries, feeds, and tags as native Unicode instead of JSON escape sequences such as `\u00f8` which are difficult to work with.
Alexandre Alapetite %!s(int64=2) %!d(string=hai) anos
pai
achega
fde4e79ed0
Modificáronse 4 ficheiros con 8 adicións e 8 borrados
  1. 3 3
      app/Models/CategoryDAO.php
  2. 2 2
      app/Models/EntryDAO.php
  3. 1 1
      app/Models/FeedDAO.php
  4. 2 2
      app/Models/TagDAO.php

+ 3 - 3
app/Models/CategoryDAO.php

@@ -60,7 +60,7 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo {
 						continue;
 						continue;
 					}
 					}
 					if (!($stm->bindValue(':id', $feed['id'], PDO::PARAM_INT) &&
 					if (!($stm->bindValue(':id', $feed['id'], PDO::PARAM_INT) &&
-						$stm->bindValue(':attributes', json_encode($attributes, JSON_UNESCAPED_SLASHES)) &&
+						$stm->bindValue(':attributes', json_encode($attributes, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)) &&
 						$stm->execute())) {
 						$stm->execute())) {
 						Minz_Log::error('SQL error ' . __METHOD__ . json_encode($stm->errorInfo()));
 						Minz_Log::error('SQL error ' . __METHOD__ . json_encode($stm->errorInfo()));
 					}
 					}
@@ -118,7 +118,7 @@ SQL;
 		$values = array(
 		$values = array(
 			$valuesTmp['kind'] ?? FreshRSS_Category::KIND_NORMAL,
 			$valuesTmp['kind'] ?? FreshRSS_Category::KIND_NORMAL,
 			$valuesTmp['name'],
 			$valuesTmp['name'],
-			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES),
+			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE),
 			$valuesTmp['name'],
 			$valuesTmp['name'],
 		);
 		);
 
 
@@ -169,7 +169,7 @@ SQL;
 		$values = array(
 		$values = array(
 			$valuesTmp['name'],
 			$valuesTmp['name'],
 			$valuesTmp['kind'] ?? FreshRSS_Category::KIND_NORMAL,
 			$valuesTmp['kind'] ?? FreshRSS_Category::KIND_NORMAL,
-			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES),
+			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE),
 			$id,
 			$id,
 			$valuesTmp['name'],
 			$valuesTmp['name'],
 		);
 		);

+ 2 - 2
app/Models/EntryDAO.php

@@ -169,7 +169,7 @@ SQL;
 				$valuesTmp['attributes'] = [];
 				$valuesTmp['attributes'] = [];
 			}
 			}
 			$this->addEntryPrepared->bindValue(':attributes', is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] :
 			$this->addEntryPrepared->bindValue(':attributes', is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] :
-				json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES));
+				json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
 
 
 			if (static::hasNativeHex()) {
 			if (static::hasNativeHex()) {
 				$this->addEntryPrepared->bindParam(':hash', $valuesTmp['hash']);
 				$this->addEntryPrepared->bindParam(':hash', $valuesTmp['hash']);
@@ -280,7 +280,7 @@ SQL;
 				$valuesTmp['attributes'] = [];
 				$valuesTmp['attributes'] = [];
 			}
 			}
 			$this->updateEntryPrepared->bindValue(':attributes', is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] :
 			$this->updateEntryPrepared->bindValue(':attributes', is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] :
-				json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES));
+				json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
 
 
 			if (static::hasNativeHex()) {
 			if (static::hasNativeHex()) {
 				$this->updateEntryPrepared->bindParam(':hash', $valuesTmp['hash']);
 				$this->updateEntryPrepared->bindParam(':hash', $valuesTmp['hash']);

+ 1 - 1
app/Models/FeedDAO.php

@@ -66,7 +66,7 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo {
 			base64_encode($valuesTmp['httpAuth']),
 			base64_encode($valuesTmp['httpAuth']),
 			isset($valuesTmp['error']) ? intval($valuesTmp['error']) : 0,
 			isset($valuesTmp['error']) ? intval($valuesTmp['error']) : 0,
 			isset($valuesTmp['ttl']) ? intval($valuesTmp['ttl']) : FreshRSS_Feed::TTL_DEFAULT,
 			isset($valuesTmp['ttl']) ? intval($valuesTmp['ttl']) : FreshRSS_Feed::TTL_DEFAULT,
-			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES),
+			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE),
 		);
 		);
 
 
 		if ($stm !== false && $stm->execute($values)) {
 		if ($stm !== false && $stm->execute($values)) {

+ 2 - 2
app/Models/TagDAO.php

@@ -62,7 +62,7 @@ SQL;
 		}
 		}
 		$values = array(
 		$values = array(
 			$valuesTmp['name'],
 			$valuesTmp['name'],
-			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES),
+			is_string($valuesTmp['attributes']) ? $valuesTmp['attributes'] : json_encode($valuesTmp['attributes'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE),
 			$valuesTmp['name'],
 			$valuesTmp['name'],
 		);
 		);
 
 
@@ -120,7 +120,7 @@ SQL;
 		$stm = $this->pdo->prepare($sql);
 		$stm = $this->pdo->prepare($sql);
 		if ($stm !== false &&
 		if ($stm !== false &&
 			$stm->bindValue(':id', $id, PDO::PARAM_INT) &&
 			$stm->bindValue(':id', $id, PDO::PARAM_INT) &&
-			$stm->bindValue(':attributes', json_encode($attributes, JSON_UNESCAPED_SLASHES), PDO::PARAM_STR) &&
+			$stm->bindValue(':attributes', json_encode($attributes, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), PDO::PARAM_STR) &&
 			$stm->execute()) {
 			$stm->execute()) {
 			return $stm->rowCount();
 			return $stm->rowCount();
 		}
 		}