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

Last commit: Sun Mar 7 00:10:20 2021 +0100	Jan Dankert	Refactoring: Hopefully more performance while accessing the database resultsets.
1 <?php 2 3 4 namespace cms\model; 5 6 use cms\base\DB; 7 8 /** 9 * Darstellung von Name und Beschreibung eines Objektes. 10 * 11 * @author Jan Dankert 12 * @package openrat.objects 13 */ 14 class Name extends ModelBase 15 { 16 /** eindeutige ID dieses Objektes 17 * @type Integer 18 */ 19 public $nameid; 20 21 22 public $objectid; 23 /** Sprach-ID 24 * @see Language 25 * @type Integer 26 */ 27 public $languageid; 28 29 30 /** Logischer (sprachabhaengiger) Name des Objektes 31 * (wird in Tabelle <code>name</code> abgelegt) 32 * @type String 33 */ 34 public $name = ''; 35 36 /** Logische (sprachabhaengige) Beschreibung des Objektes 37 * (wird in Tabelle <code>name</code> abgelegt) 38 * @type String 39 */ 40 public $description; 41 /** <strong>Konstruktor</strong> 42 * 43 * @param Integer Objekt-ID 44 */ 45 function __construct($nameid=0 ) 46 { 47 $this->nameid = $nameid; 48 } 49 50 51 /** 52 * Lesen der Eigenschaften aus der Datenbank 53 * Es werden 54 * - die sprachabh?ngigen Daten wie Name und Beschreibung geladen 55 * @throws \util\exception\ObjectNotFoundException 56 */ 57 public function load() 58 { 59 $db = DB::get(); 60 61 $stmt = $db->sql( <<<SQL 62 SELECT id,objectid,name,descr,languageid 63 FROM {{name}} 64 WHERE languageid = {languageid} 65 AND objectid = {objectid} 66 SQL 67 ); 68 69 $stmt->setInt('languageid', $this->languageid); 70 $stmt->setInt('objectid' , $this->objectid ); 71 72 $row = $stmt->getRow(); 73 74 if (count($row) > 0) 75 $this->setDatabaseRow( $row ); 76 } 77 78 79 80 81 /** 82 * Setzt die Eigenschaften des Objektes mit einer Datenbank-Ergebniszeile 83 * 84 * @param array Ergebniszeile aus Datenbanktabelle 85 */ 86 private function setDatabaseRow( $row ) 87 { 88 $this->nameid = $row['id' ]; 89 $this->objectid = $row['objectid' ]; 90 $this->languageid = $row['languageid']; 91 $this->name = $row['name' ]; 92 $this->description = $row['descr']; 93 } 94 95 96 protected function add() 97 { 98 $db = DB::get(); 99 100 $sql = $db->sql('SELECT MAX(id) FROM {{name}}'); 101 $this->nameid = intval($sql->getOne())+1; 102 103 $sql = $db->sql('INSERT INTO {{name}}'.' (id,objectid,languageid,name,descr)'.' VALUES( {nameid},{objectid},{languageid},{name},{desc} )'); 104 $sql->setInt ('nameid' , $this->nameid ); 105 $sql->setInt ('objectid' , $this->objectid ); 106 $sql->setInt ('languageid', $this->languageid ); 107 $sql->setString('name' , $this->name); 108 $sql->setString('desc' , $this->description); 109 $sql->execute(); 110 } 111 112 /** 113 * Logischen Namen und Beschreibung des Objektes in Datenbank speichern 114 * 115 */ 116 public function save() 117 { 118 $db = DB::get(); 119 120 $sql = $db->sql( <<<SQL 121 UPDATE {{name}} SET 122 name = {name}, 123 descr = {desc} 124 WHERE objectid ={objectid} 125 AND languageid={languageid} 126 SQL 127 ); 128 $sql->setString('name', $this->name); 129 $sql->setString('desc', $this->description); 130 $sql->setInt( 'objectid' , $this->objectid ); 131 $sql->setInt( 'languageid', $this->languageid ); 132 $sql->execute(); 133 } 134 135 136 137 public function delete() 138 { 139 // not necessary, because names are deleted by BaseObject::delete() 140 141 } 142 143 144 145 /** 146 */ 147 public function objectDelete() 148 { 149 // not necessary, because names are deleted by BaseObject::delete() 150 } 151 152 153 /** 154 * Eigenschaften des Objektes. 155 * @return array 156 */ 157 public function getProperties() 158 { 159 return get_object_vars( $this ); 160 161 } 162 163 public function getName() 164 { 165 return $this->name; 166 } 167 168 169 public function getId() 170 { 171 return $this->nameid; 172 } 173 174 175 }
Download modules/cms/model/Name.class.php
History Sun, 7 Mar 2021 00:10:20 +0100 Jan Dankert Refactoring: Hopefully more performance while accessing the database resultsets. Wed, 18 Nov 2020 01:46:36 +0100 Jan Dankert Refactoring of model classes: New method persist() and some other cleanups. Fri, 2 Oct 2020 23:11:48 +0200 Jan Dankert Cleanup: No '.inputholder' any more, notices with links to objects. Tue, 29 Sep 2020 22:17:11 +0200 Jan Dankert Refactoring: Do not use global constants. Sat, 26 Sep 2020 02:26:39 +0200 Jan Dankert Refactoring: No global functions any more, the database object is read from the Db class. Mon, 21 Sep 2020 22:48:59 +0200 Jan Dankert Complexe refactoring: Moving all generation logic from the model (Value,Page,File) to generators classes. Sun, 23 Feb 2020 04:01:30 +0100 Jan Dankert Refactoring with Namespaces for the cms modules, part 1: moving.