/** * @param ModelInterface $objItem * * @return ModelInterface|void */ public function save(ModelInterface $objItem) { global $container; /** @var EventDispatcher $eventDispatcher */ $eventDispatcher = $container['event-dispatcher']; $migrationSettings = $objItem->getPropertiesAsArray(); $session = \Session::getInstance(); do { $migrationId = substr(md5(mt_rand()), 0, 8); } while ($session->get('AVISOTA_MIGRATE_RECIPIENT_' . $migrationId)); $session->set('AVISOTA_MIGRATE_RECIPIENT_' . $migrationId, $migrationSettings); $addToUrlEvent = new AddToUrlEvent('act=migrate&migration=' . rawurlencode($migrationId)); $eventDispatcher->dispatch(ContaoEvents::BACKEND_ADD_TO_URL, $addToUrlEvent); $redirectEvent = new RedirectEvent($addToUrlEvent->getUrl()); $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_REDIRECT, $redirectEvent); }
/** * @param ModelInterface $objItem * * @return ModelInterface|void * @SuppressWarnings(PHPMD.ExitExpression) */ public function save(ModelInterface $objItem) { $exportSettings = $objItem->getPropertiesAsArray(); $session = \Session::getInstance(); $recipientRepository = EntityHelper::getRepository('Avisota\\Contao:Recipient'); $session->set(static::SESSION_NAME, $exportSettings); switch ($exportSettings['delimiter']) { case 'semicolon': $delimiter = ';'; break; case 'space': $delimiter = ' '; break; case 'tabulator': $delimiter = "\t"; break; case 'linebreak': $delimiter = "\n"; break; default: $delimiter = ','; } switch ($exportSettings['enclosure']) { case 'single': $enclosure = "'"; break; default: $enclosure = '"'; } $length = 0; $csv = tmpfile(); $recipients = $recipientRepository->findAll(); /** @var Recipient $recipient */ foreach ($recipients as $recipient) { $row = $this->generateCSVRows($recipient, $exportSettings); $length += fputcsv($csv, $row, $delimiter, $enclosure); } if (!headers_sent()) { header('Content-Type: text/csv; charset=utf-8'); header('Content-Length: ' . $length); header('Content-Disposition: attachment; filename="export.csv"'); } rewind($csv); fpassthru($csv); fclose($csv); exit; }
/** * Save a new version of a row. * * @param ModelInterface $objModel The model for which a new version shall be created. * * @param string $strUsername The username to attach to the version as creator. * * @return void */ public function saveVersion(ModelInterface $objModel, $strUsername) { $objCount = $this->objDatabase->prepare('SELECT count(*) as mycount FROM tl_version WHERE pid=? AND fromTable = ?')->execute($objModel->getID(), $this->strSource); $mixNewVersion = intval($objCount->mycount) + 1; $mixData = $objModel->getPropertiesAsArray(); $mixData['id'] = $objModel->getID(); $arrInsert = array(); $arrInsert['pid'] = $objModel->getID(); $arrInsert['tstamp'] = time(); $arrInsert['version'] = $mixNewVersion; $arrInsert['fromTable'] = $this->strSource; $arrInsert['username'] = $strUsername; $arrInsert['data'] = serialize($mixData); $this->objDatabase->prepare('INSERT INTO tl_version %s')->set($arrInsert)->execute(); $this->setVersionActive($objModel->getID(), $mixNewVersion); }
/** * {@inheritdoc} */ public function save(ModelInterface $model) { $datetime = date('r'); $buffer = <<<EOF <?php // updated at: {$datetime} EOF; $path = $this->parseNamespace(); $pattern = $this->pattern; $var = PHP_EOL . '$GLOBALS'; $target =& $GLOBALS; foreach ($path as $key) { $var .= sprintf('[%s]', var_export($key, true)); if (!isset($target[$key]) || !is_array($target[$key])) { $target[$key] = array(); } $target =& $target[$key]; } $var .= '[%s] = %s;'; $properties = $model->getPropertiesAsArray(); foreach ($properties as $property => $value) { if (fnmatch($pattern, $property)) { if ($this->mode == self::MODE_ALL || !array_key_exists($property, $this->defaults) && $value !== null || $this->defaults[$property] != $value) { $buffer .= sprintf($var, var_export($property, true), var_export($value, true)); } $target[$property] = $value; } } $buffer .= PHP_EOL; file_put_contents($this->fileName, $buffer); }