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:
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();