openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 3956430f4570fd3eaed49e80b12f70ba51877a8b
parent ff3a12f4b3ffd0ba8bee7cb15842102bb9df1cc1
Author: Jan Dankert <develop@jandankert.de>
Date:   Tue,  9 Nov 2021 01:22:31 +0100

Fix: Creating and reading files.

Diffstat:
Mmodules/cms/model/File.class.php | 41+++++++++++++++++++++++++++--------------
Mmodules/cms/model/Value.class.php | 25++++++++++++++++++++++---
2 files changed, 49 insertions(+), 17 deletions(-)

diff --git a/modules/cms/model/File.class.php b/modules/cms/model/File.class.php @@ -37,6 +37,8 @@ class File extends BaseObject public $fileid; + public $contentid = null; + public $size = 0; public $value = ''; public $extension = ''; @@ -319,8 +321,6 @@ class File extends BaseObject */ function __construct( $objectid='' ) { - $this->storeValueAsBase64 = DB::get()->conf['base64']; - parent::__construct( $objectid ); $this->isFile = true; $this->typeid = BaseObject::TYPEID_FILE; @@ -421,7 +421,7 @@ class File extends BaseObject { $db = \cms\base\DB::get(); - $sql = $db->sql( 'SELECT id,extension,size,filterid'. + $sql = $db->sql( 'SELECT id,contentid,extension,size,filterid'. ' FROM {{file}}'. ' WHERE objectid={objectid}' ); $sql->setInt( 'objectid',$this->objectid ); @@ -433,6 +433,7 @@ class File extends BaseObject $this->extension = $row['extension']; $this->size = $row['size' ]; $this->filterid = $row['filterid' ]; + $this->contentid = $row['contentid']; } $this->objectLoad(); @@ -566,7 +567,9 @@ SQL $this->size = $row['size']; } - if ( $this->storeValueAsBase64 ) + $storeValueAsBase64 = DB::get()->conf['base64']; + + if ( $storeValueAsBase64 ) $this->value = base64_decode( $this->value ); return $this->value; @@ -583,18 +586,24 @@ SQL $db = \cms\base\DB::get(); $sql = $db->sql( 'UPDATE {{file}}'. - ' SET value={value}, '. - ' size={size} '. + ' SET size={size} '. ' WHERE objectid={objectid}' ); $sql->setString( 'objectid' ,$this->objectid ); $sql->setInt ( 'size' ,strlen($this->value) ); - if ( $this->storeValueAsBase64 ) - $sql->setString( 'value',base64_encode($this->value) ); + $sql->execute(); + + $value = new Value(); + $value->contentid = $this->contentid; + + $storeValueAsBase64 = DB::get()->conf['base64']; + + if ( $storeValueAsBase64 ) + $value->file = base64_encode($this->value); else - $sql->setString( 'value',$this->value ); + $value->file = $this->value; - $sql->execute(); + $value->persist(); } @@ -614,13 +623,19 @@ SQL { parent::add(); + // Getting the content id + $content = new Content(); + $content->persist(); + $this->contentid = $content->getId(); + $sql = Db::sql('SELECT MAX(id) FROM {{file}}'); $this->fileid = intval($sql->getOne())+1; $sql = Db::sql('INSERT INTO {{file}}'. - ' (id,objectid,extension,size,value)'. - " VALUES( {fileid},{objectid},{extension},0,'' )" ); + ' (id,contentid,objectid,extension,size)'. + " VALUES( {fileid},{contentid},{objectid},{extension},0 )" ); $sql->setInt ('fileid' ,$this->fileid ); + $sql->setInt ('contentid',$this->contentid ); $sql->setInt ('objectid' ,$this->objectid ); $sql->setString('extension',$this->extension ); @@ -702,4 +717,3 @@ SQL } -?> -\ No newline at end of file diff --git a/modules/cms/model/Value.class.php b/modules/cms/model/Value.class.php @@ -90,7 +90,13 @@ class Value extends ModelBase * @type String */ var $value; - + + /** + * file blob + * @var string + */ + public $file = null; + /** * TimeStamp der letzten Aenderung * @type Integer @@ -271,8 +277,8 @@ SQL $stmt = DB::sql( <<<SQL INSERT INTO {{value}} - (id ,contentid ,linkobjectid ,text ,number ,date ,format ,active,publish ,lastchange_date ,lastchange_userid ) - VALUES ({valueid},{contentid},{linkobjectid},{text},{number},{date},{format},1 ,{publish},{lastchange_date},{lastchange_userid}) + (id ,contentid ,linkobjectid ,text ,file ,number ,date ,format ,active,publish ,lastchange_date ,lastchange_userid ) + VALUES ({valueid},{contentid},{linkobjectid},{text},{file},{number},{date},{format},1 ,{publish},{lastchange_date},{lastchange_userid}) SQL ); $stmt->setInt( 'valueid' ,$this->valueid ); @@ -295,6 +301,19 @@ SQL $stmt->setNull ( 'date' ); else $stmt->setInt ( 'date',$this->date ); + $storeValueAsBase64 = DB::get()->conf['base64']; + + if ( $storeValueAsBase64 ) + $this->value = base64_decode( $this->value ); + + + if ( $this->file === null ) + $stmt->setNull ( 'file' ); + elseif( $storeValueAsBase64 ) + $stmt->setString( 'file',base64_encode($this->file) ); + else + $stmt->setString( 'file',$this->file ); + $stmt->setBoolean( 'publish' ,$this->publish ); $stmt->setInt ( 'lastchange_date' ,Startup::now() ); $user = \util\Session::getUser();