/** * Generate the move button. * * @param array $row The current row. * * @return string */ private function generateMoveButton($row) { $clipboard = \Session::getInstance()->get('CLIPBOARD'); $isClipboard = !empty($clipboard[$this->definition->getName()]); // Paste buttons if ($isClipboard) { $clipboard = $clipboard[$this->definition->getName()]; if (\Input::get('mode') == 'cut' && $this->isChildOf($row, $clipboard['id'])) { return \Image::getHtml('pasteafter_.gif', $this->translator->translate('pasteafter.0', $this->definition->getName())); } $url = \Backend::addToUrl('act=' . $clipboard['mode'] . '&mode=1&pid=' . $row['id'] . '&id=' . $clipboard['id']); return sprintf(' <a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a>', $url, specialchars(sprintf($this->translator->translate('pasteafter.1', $this->definition->getName()), $row['id'])), \Image::getHtml('pasteafter.gif', $this->translator->translate('pasteafter.0', $this->definition->getName()))); } return ''; }
/** * Save new state in database. * * @param Definition $definition Data container definition. * @param int $recordId Data record id. * @param array $data Change data set. * * @return void */ private function save(Definition $definition, $recordId, array $data) { // Filter empty values which should not be saved. foreach ($data as $column => $value) { if ($value != '') { continue; } $alwaysSave = $definition->get(['fields', $column, 'eval', 'alwaysSave'], false); $doNotSaveEmpty = $definition->get(['fields', $column, 'eval', 'doNotSaveEmpty'], false); if (!$alwaysSave && $doNotSaveEmpty) { unset($data[$column]); } } // Add tstamp if field exists. if (empty($data['tstamp'] && $this->database->fieldExists('tstamp', $definition->getName()))) { $data['tstamp'] = time(); } // Store the data. $this->database->prepare(sprintf('UPDATE %s %s WHERE id=?', $definition->getName(), '%s'))->set($data)->execute($recordId); }