/** * Logs DB changes * * @TODO: t3users log nutzen, wenn installiert! tx_t3users_util_ServiceRegistry::getLoggingService(); * * @param string $msg * @param string $tablename * @param string $where * @param mixed $values */ private static function log($msg, $tablename, $where = false, $values = false) { if (!self::isLog($tablename)) { return false; } // else // daten sammeln $data = array(); $data['fe_user'] = isset($GLOBALS['TSFE']->fe_user->user['uid']) ? $GLOBALS['TSFE']->fe_user->user['uid'] : 'none'; $data['be_user'] = array_key_exists('BE_USER', $GLOBALS) && is_object($GLOBALS['BE_USER']) ? $GLOBALS['BE_USER']->user['uid'] : 'none'; $data['tablename'] = $tablename; if ($where) { $data['where'] = $where; } if ($values) { $data['values'] = $values; } // backtrace Konfigurierbar machen? tx_rnbase::load('tx_mklib_util_Logger'); $data['debug_backtrace'] = tx_mklib_util_Logger::getDebugBacktrace(); // wurde auf hidden gesetzt? $disabled = tx_mklib_util_TCA::getEnableColumn($tablename, 'disabled', 'hidden'); if ($values && isset($values[$disabled]) && $values[$disabled]) { $msg .= '->disabled'; } // wurde gelöscht? $delete = tx_mklib_util_TCA::getEnableColumn($tablename, 'delete', 'deleted'); if ($values && isset($values[$delete]) && $values[$delete]) { $msg .= '->delete'; } // tabellenname ergänzen $msg .= '(' . $tablename . ')'; tx_rnbase_util_Logger::notice($msg, 'mklib', $data); return true; }
/** * Save model with new data * * Overwrite this method to specify a specialised method signature, * and just call THIS method via parent::handleUpdate(). * Additionally, the deriving implementation may perform further checks etc. * * @param tx_rnbase_model_base $model This model is being updated. * @param array $data New data * @param string $where Override default restriction by defining an explicite where clause * @return tx_rnbase_model_base Updated model */ public function handleUpdate(tx_rnbase_model_base $model, array $data, $where = '') { $table = $model->getTableName(); $uid = $model->getUid(); if (!$where) { $where = '1=1 AND `' . $table . '`.`uid`=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($uid, $table); } // remove uid if exists if (array_key_exists('uid', $data)) { unset($data['uid']); } // Eleminate columns not in TCA tx_rnbase::load('tx_mklib_util_TCA'); $data = tx_mklib_util_TCA::eleminateNonTcaColumns($model, $data); $data = $this->secureFromCrossSiteScripting($model, $data); tx_rnbase::load('tx_mklib_util_DB'); tx_mklib_util_DB::doUpdate($table, $where, $data); $model->reset(); return $model; }
/** * @group unit */ public function testGetWizardsReturnsWizardsWithCorrectScriptOrModuleKey() { $wizards = tx_mklib_util_TCA::getWizards('', array('add' => 1, 'edit' => 1, 'list' => 1, 'RTE' => 1)); if (tx_rnbase_util_TYPO3::isTYPO60OrHigher()) { $this->assertArrayNotHasKey('script', $wizards['add']); $this->assertArrayNotHasKey('script', $wizards['edit']); $this->assertArrayNotHasKey('script', $wizards['list']); $this->assertArrayNotHasKey('script', $wizards['RTE']); $this->assertEquals('wizard_add', $wizards['add']['module']['name']); $this->assertEquals('wizard_edit', $wizards['edit']['module']['name']); $this->assertEquals('wizard_list', $wizards['list']['module']['name']); $this->assertEquals('wizard_rte', $wizards['RTE']['module']['name']); } else { $this->assertArrayNotHasKey('module', $wizards['add']); $this->assertArrayNotHasKey('module', $wizards['edit']); $this->assertArrayNotHasKey('module', $wizards['list']); $this->assertArrayNotHasKey('module', $wizards['RTE']); $this->assertEquals('wizard_add.php', $wizards['add']['script']); $this->assertEquals('wizard_edit.php', $wizards['edit']['script']); $this->assertEquals('wizard_list.php', $wizards['list']['script']); $this->assertEquals('wizard_rte.php', $wizards['RTE']['script']); } }
/** * @TODO: weitere links integrieren! * $options = array('hide'=>'ausblenden,'edit'=>'bearbeiten,'remove'=>'löschen','history'='history','info'=>'info','move'=>'verschieben'); * * @param tx_rnbase_model_base $item * @param array $options * @return string */ protected function getActions(tx_rnbase_model_base $item, array $options) { $ret = ''; $tableName = $item->getTableName(); // we use the real uid, not the uid of the parent! $uid = $item->getProperty('uid'); foreach ($options as $sLinkId => $bTitle) { switch ($sLinkId) { case 'edit': $ret .= $this->getFormTool()->createEditLink($tableName, $uid, $bTitle); break; case 'hide': $sHiddenColumn = tx_mklib_util_TCA::getEnableColumn($tableName, 'disabled', 'hidden'); $ret .= $this->getFormTool()->createHideLink($tableName, $uid, $item->record[$sHiddenColumn]); break; case 'remove': //Es wird immer ein Bestätigungsdialog ausgegeben!!! Dieser steht //in der BE-Modul locallang.xml der jeweiligen Extension im Schlüssel //'confirmation_deletion'. (z.B. mkkvbb/mod1/locallang.xml) Soll kein //Bestätigungsdialog ausgegeben werden, dann einfach 'confirmation_deletion' leer lassen $ret .= $this->getFormTool()->createDeleteLink($tableName, $uid, $bTitle, array('confirm' => $GLOBALS['LANG']->getLL('confirmation_deletion'))); break; default: break; } } return $ret; }