function save() { $fieldName = $this->elementPostValue($this->getFieldsetName(), 'name'); // Den alten Wert aus der DB holen // Dies muss hier geschehen, da in parent::save() die Werte für die DB mit den // POST werten überschrieben werden! $fieldOldName = ''; $fieldOldPrior = 9999999999999.0; // dirty, damit die prio richtig läuft... $fieldOldDefault = ''; if ($this->sql->getRows() == 1) { $fieldOldName = $this->sql->getValue('name'); $fieldOldPrior = $this->sql->getValue('prior'); $fieldOldDefault = $this->sql->getValue('default'); } if (parent::save()) { global $REX, $I18N; $this->organizePriorities($this->elementPostValue($this->getFieldsetName(), 'prior'), $fieldOldPrior); $fieldName = $this->addPrefix($fieldName); $fieldType = $this->elementPostValue($this->getFieldsetName(), 'type'); $fieldDefault = $this->elementPostValue($this->getFieldsetName(), 'default'); $sql = rex_sql::factory(); $sql->debugsql =& $this->debug; $result = $sql->getArray('SELECT `dbtype`, `dblength` FROM `' . $REX['TABLE_PREFIX'] . '62_type` WHERE id=' . $fieldType); $fieldDbType = $result[0]['dbtype']; $fieldDbLength = $result[0]['dblength']; // TEXT Spalten dürfen in MySQL keine Defaultwerte haben if ($fieldDbType == 'text') { $fieldDefault = null; } if ($this->isEditMode()) { // Spalte in der Tabelle verändern $tmRes = $this->tableManager->editColumn($fieldOldName, $fieldName, $fieldDbType, $fieldDbLength, $fieldDefault); } else { // Spalte in der Tabelle anlegen $tmRes = $this->tableManager->addColumn($fieldName, $fieldDbType, $fieldDbLength, $fieldDefault); } OORedaxo::$vars = array(); rex_generateAll(); if ($tmRes) { // DefaultWerte setzen if ($fieldDefault != $fieldOldDefault) { $upd = rex_sql::factory(); $upd->debugsql =& $this->debug; $upd->setTable($this->tableManager->getTableName()); $upd->setWhere('`' . $fieldName . '`="' . addSlashes($fieldOldDefault) . '"'); $upd->setValue($fieldName, addSlashes($fieldDefault)); return $upd->update(); } // Default werte haben schon zuvor gepasst, daher true zurückgeben return true; } } return false; }
/** * CLASS Function: * Returns an Array containing article field names */ static function getClassVars() { if (empty(self::$vars)) { global $REX; self::$vars = array(); $file = $REX['GENERATED_PATH'] . '/articles/' . $REX['START_ARTICLE_ID'] . '.0.article'; if ($REX['GG'] && file_exists($file)) { // Im GetGenerated Modus, die Spaltennamen aus den generated Dateien holen include_once $file; // da getClassVars() eine statische Methode ist, können wir hier nicht mit $this->getId() arbeiten! $genVars = self::convertGeneratedArray($REX['ART'][$REX['START_ARTICLE_ID']], 0); unset($genVars['article_id']); unset($genVars['last_update_stamp']); foreach ($genVars as $name => $value) { self::$vars[] = $name; } } else { // Im Backend die Spalten aus der DB auslesen / via EP holen $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'article LIMIT 0'); foreach ($sql->getFieldnames() as $field) { self::$vars[] = $field; } } } return self::$vars; }