function export() { if ($_REQUEST['baseurl']) { $base = $_REQUEST['baseurl']; if (substr($base, -1) != '/') { $base .= '/'; } Director::setBaseURL($base); } $folder = '/tmp/static-export/' . project(); if (!project()) { $folder .= 'site'; } if (!file_exists($folder)) { mkdir($folder, Filesystem::$folder_create_mask, true); } $f1 = Director::baseFolder() . '/assets'; $f2 = Director::baseFolder() . '/' . project(); `cd {$folder}; ln -s {$f1}; ln -s {$f2}`; $baseFolder = basename($folder); if ($folder && file_exists($folder)) { $pages = DataObject::get("SiteTree"); foreach ($pages as $page) { $subfolder = "{$folder}/{$page->URLSegment}"; $contentfile = "{$folder}/{$page->URLSegment}/index.html"; // Make the folder if (!file_exists($subfolder)) { mkdir($subfolder, Filesystem::$folder_create_mask); } // Run the page Requirements::clear(); $controllerClass = "{$page->class}_Controller"; if (class_exists($controllerClass)) { $controller = new $controllerClass($page); $pageContent = $controller->run(array()); // Write to file if ($fh = fopen($contentfile, 'w')) { fwrite($fh, $pageContent->getBody()); fclose($fh); } } } copy("{$folder}/home/index.html", "{$folder}/index.html"); `cd /tmp/static-export; tar -czhf {$baseFolder}.tar.gz {$baseFolder}`; $content = file_get_contents("/tmp/static-export/{$baseFolder}.tar.gz"); Filesystem::removeFolder('/tmp/static-export'); HTTP::sendFileToBrowser($content, "{$baseFolder}.tar.gz"); return null; } else { echo _t('StaticExporter.ONETHATEXISTS', "Please specify a folder that exists"); } }
/** * Exports a given set of comma-separated IDs (from a previous search-query, stored in a HiddenField). * Uses {$csv_columns} if present, and falls back to {$result_columns}. * * @todo Make relation-syntax available (at the moment you'll have to use custom sql) */ function export() { $now = Date("d-m-Y-H-i"); $fileName = "export-{$now}.csv"; $separator = $this->csvSeparator; $csvColumns = $this->fieldListCsv ? $this->fieldListCsv : $this->fieldList; $fileData = ""; if ($this->csvHasHeader) { $fileData .= "\"" . implode("\"{$separator}\"", array_values($csvColumns)) . "\""; $fileData .= "\n"; } // get data $dataQuery = $this->getCsvQuery(); $records = $dataQuery->execute(); $sourceClass = $this->sourceClass; $dataobject = new $sourceClass(); $items = $dataobject->buildDataObjectSet($records, 'DataObjectSet'); if ($items) { foreach ($items as $item) { $columnData = array(); foreach ($csvColumns as $columnName => $columnTitle) { $tmpColumnData = "\"" . str_replace("\"", "\"\"", $item->{$columnName}) . "\""; $tmpColumnData = str_replace(array("\r", "\n"), "", $tmpColumnData); $columnData[] = $tmpColumnData; } $fileData .= implode($separator, $columnData); $fileData .= "\n"; } HTTP::sendFileToBrowser($fileData, $fileName); } else { user_error("No records found", E_USER_ERROR); } }
/** * Exports a given set of comma-separated IDs (from a previous search-query, stored in a HiddenField). * Uses {$csv_columns} if present, and falls back to {$result_columns}. */ function export() { $now = Date("s-i-H"); $fileName = "export-{$now}.csv"; $csv_columns = $this->stat('csv_columns') ? array_values($this->stat('csv_columns')) : array_values($this->stat('result_columns')); $fileData = ""; $fileData .= "\"" . implode("\",\"", $csv_columns) . "\""; $fileData .= "\n"; $records = $this->performSearch(); if ($records) { foreach ($records as $record) { $columnData = array(); foreach ($csv_columns as $column) { $tmpColumnData = "\"" . str_replace("\"", "\"\"", $record->{$column}) . "\""; $tmpColumnData = str_replace(array("\r", "\n"), "", $tmpColumnData); $columnData[] = $tmpColumnData; } $fileData .= implode(",", $columnData); $fileData .= "\n"; } HTTP::sendFileToBrowser($fileData, $fileName); } else { user_error("No records found", E_USER_ERROR); } }
/** * Todo: to export the reported table as a CSV */ function exportToCSV($fileName) { $fileData = $this->columnheaders('csvRow', 'csvHeadCell') . $this->datacells('csvRow', 'csvDataCell'); HTTP::sendFileToBrowser($fileData, $fileName); }