/**
  * @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;
 }
コード例 #3
0
 /**
  * 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);
    }