From 2ec569e2b562283956b5a182775abcedc6e3380f Mon Sep 17 00:00:00 2001 From: huangjx Date: Sun, 20 Mar 2022 16:39:50 +0800 Subject: [PATCH] fixed pgsql db issue;close #38 --- lib/Controller/YoutubeController.php | 6 +++--- lib/Tools/DbHelper.php | 14 ++++++++++++++ lib/Tools/YoutubeHelper.php | 6 +++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/Controller/YoutubeController.php b/lib/Controller/YoutubeController.php index b9d87ab..549041a 100644 --- a/lib/Controller/YoutubeController.php +++ b/lib/Controller/YoutubeController.php @@ -50,7 +50,7 @@ class YoutubeController extends Controller $folderLink = $this->urlGenerator->linkToRoute('files.view.index', $params); foreach ($data as $value) { $tmp = []; - $extra = unserialize($value['data']); + $extra = $this->dbconn->getExtra($value["data"]); $filename = sprintf('%s', $folderLink, $value['filename']); $fileInfo = sprintf('
%s | % s
', $extra['link'], $value['filesize'], date("Y-m-d H:i:s", $value['timestamp'])); $tmp['filename'] = array($filename, $fileInfo); @@ -117,7 +117,7 @@ class YoutubeController extends Controller } $row = $this->dbconn->getByGid($gid); - $data = unserialize($row['data']); + $data = $this->dbconn->getExtra($value["data"]);; if (!isset($data['pid'])) { if ($this->dbconn->deleteByGid($gid)) { $msg = sprintf("%s is deleted from database!", $gid); @@ -152,7 +152,7 @@ class YoutubeController extends Controller return new JSONResponse(['error' => "no gid value is received!"]); } $row = $this->dbconn->getByGid($gid); - $data = unserialize($row['data']); + $data = $this->dbconn->getExtra($row["data"]); if (!empty($data['link'])) { //$this->dbconn->deleteByGid($gid); $resp = $this->youtube->forceIPV4()->download($data['link']); diff --git a/lib/Tools/DbHelper.php b/lib/Tools/DbHelper.php index 55f7e55..6019864 100644 --- a/lib/Tools/DbHelper.php +++ b/lib/Tools/DbHelper.php @@ -124,4 +124,18 @@ class DbHelper return $query->execute(); } + public function getDBType(): string + { + return \OC::$server->getConfig()->getSystemValue('dbtype', "mysql"); + } + + public function getExtra($data) + { + if ($this->getDBType() == "pgsql" && is_resource($data)) { + $extra = pg_unescape_bytea(stream_get_contents($data)); + return unserialize($extra); + } + return unserialize($data); + } + } diff --git a/lib/Tools/YoutubeHelper.php b/lib/Tools/YoutubeHelper.php index 821938c..b8d66da 100644 --- a/lib/Tools/YoutubeHelper.php +++ b/lib/Tools/YoutubeHelper.php @@ -57,6 +57,10 @@ class YoutubeHelper $this->gid = Helper::generateGID($extra['link']); $file = $this->getFilePath($buffer); if ($file) { + $extra = serialize($extra); + if($this->dbconn->getDBType() == "pgsql"){ + $extra = pg_escape_bytea($extra); + } $data = [ 'uid' => $this->user, 'gid' => $this->gid, @@ -64,7 +68,7 @@ class YoutubeHelper 'filename' => basename($file), 'status' => Helper::STATUS['ACTIVE'], 'timestamp' => time(), - 'data' => serialize($extra), + 'data' => $extra, ]; //save the filename as this runs only once $this->file = $file;