File modules/cms/model/PageContent.class.php

Last commit: Sun Apr 10 12:10:24 2022 +0200	dankert	Fix: Pagecontent must be created if the value of a pageelement is stored for the first time.
1 <?php 2 namespace cms\model; 3 use cms\base\Configuration; 4 use cms\base\DB; 5 use cms\base\Startup; 6 use util\ArrayUtils; 7 use cms\generator\Publish; 8 use cms\macros\MacroRunner; 9 use \util\exception\ObjectNotFoundException; 10 use logger\Logger; 11 use util\exception\GeneratorException; 12 use util\Text; 13 use util\Html; 14 use util\Http; 15 use util\Transformer; 16 use util\Code; 17 use util\cache\FileCache; 18 19 20 21 /** 22 * PageContent. 23 * 24 * @author Jan Dankert 25 */ 26 27 class PageContent extends ModelBase 28 { 29 /** 30 * ID. 31 * @var integer 32 */ 33 private $id; 34 35 /** 36 * Content-ID. 37 * 38 * @type Integer 39 */ 40 public $contentId = 0; 41 42 /** 43 * Element-Objekt 44 * @type integer 45 */ 46 public $elementId; 47 48 /** 49 * Sprach-Id. 50 * @var int 51 */ 52 public $languageid; 53 54 /** 55 * Page-Id 56 * @var integer 57 */ 58 public $pageId; 59 60 /** 61 * Konstruktor 62 */ 63 function __construct() 64 { 65 } 66 67 68 69 /** 70 * Laden des aktuellen Inhaltes aus der Datenbank 71 */ 72 function load() 73 { 74 $stmt = Db::sql( <<<SQL 75 SELECT * FROM {{pagecontent}} 76 WHERE elementid ={elementid} 77 AND pageid ={pageid} 78 AND languageid={languageid} 79 SQL 80 ); 81 $stmt->setInt( 'elementid' ,$this->elementId ); 82 $stmt->setInt( 'pageid' ,$this->pageId ); 83 $stmt->setInt( 'languageid',$this->languageid); 84 $row = $stmt->getRow(); 85 86 if ( count($row) > 0 ) // Wenn Inhalt gefunden 87 { 88 $this->contentId = intval($row['contentid']); 89 $this->id = intval($row['id' ]); 90 } 91 } 92 93 94 95 /** 96 * No function, values are NOT updated, values are only added. 97 * @return name|void 98 */ 99 protected function save() 100 { 101 // not implemented, values are only added ("copy on write") 102 } 103 104 /** 105 * Add new object. 106 */ 107 protected function add() 108 { 109 // Get next ID from database. 110 $stmt = DB::sql('SELECT MAX(id) FROM {{pagecontent}}'); 111 $this->id = intval($stmt->getOne())+1; 112 113 $content = new Content(); 114 $content->persist(); 115 $this->contentId = $content->getId(); 116 117 $stmt = DB::sql( <<<SQL 118 INSERT INTO {{pagecontent}} 119 (id ,contentid ,elementid ,pageid ,languageid ) 120 VALUES ({id},{contentid},{elementid},{pageid},{languageid} ) 121 SQL 122 ); 123 $stmt->setInt( 'id' ,$this->id ); 124 $stmt->setInt( 'contentid' ,$this->contentId ); 125 $stmt->setInt( 'elementid' ,$this->elementId ); 126 $stmt->setInt( 'pageid' ,$this->pageId ); 127 $stmt->setInt( 'languageid',$this->languageid ); 128 129 $stmt->execute(); 130 } 131 132 133 134 /** 135 * Delete this page content. 136 */ 137 public function delete() 138 { 139 $stmt = DB::sql( <<<SQL 140 DELETE FROM {{pagecontent}} 141 WHERE id ={id} 142 SQL 143 ); 144 $stmt->setInt( 'id' ,$this->id ); 145 $stmt->execute(); 146 147 $content = new Content( $this->contentId ); 148 $content->delete(); 149 } 150 151 152 public function getName() 153 { 154 return "PageContent ".$this->id; 155 } 156 157 158 public function __toString() 159 { 160 return "PageContent: ".print_r($this,true); 161 } 162 163 164 165 public function getId() 166 { 167 return $this->id; 168 } 169 170 171 }
Download modules/cms/model/PageContent.class.php
History Sun, 10 Apr 2022 12:10:24 +0200 dankert Fix: Pagecontent must be created if the value of a pageelement is stored for the first time. Mon, 6 Dec 2021 22:33:10 +0100 dankert Some fixes for deleting objects. Sun, 5 Dec 2021 22:26:39 +0100 dankert Fixed a type in template source of new projects. Tue, 9 Nov 2021 23:52:56 +0100 Jan Dankert Some fixes for reading content from the new content table. Tue, 9 Nov 2021 00:35:42 +0100 Jan Dankert Fixes: Reading and writing template sources with the new content table.