SilverStripe Report Export to CSV Error

The export columns need to be set in order for the csv generator to function properly.

Updating getReportField() in cms/code/report/Report.php like below will fix this issue


public function getReportField() {
// TODO Remove coupling with global state
$params = isset($_REQUEST[‘filters’]) ? $_REQUEST[‘filters’] : array();
$items = $this->sourceRecords($params, null, null);
$exportButton = new GridFieldExportButton(‘buttons-after-left’);

$gridFieldConfig = GridFieldConfig::create()->addComponents(
new GridFieldToolbarHeader(),
new GridFieldSortableHeader(),
new GridFieldDataColumns(),
new GridFieldPaginator(),
new GridFieldButtonRow(‘after’),
new GridFieldPrintButton(‘buttons-after-left’),
$gridField = new GridField(‘Report’,false, $items, $gridFieldConfig);
$columns = $gridField->getConfig()->getComponentByType(‘GridFieldDataColumns’);
$displayFields = array();
$fieldCasting = array();
$fieldFormatting = array();

// Parse the column information
foreach($this->columns() as $source => $info) {
if(is_string($info)) $info = array(‘title’ => $info);

if(isset($info[‘formatting’])) $fieldFormatting[$source] = $info[‘formatting’];
if(isset($info[‘csvFormatting’])) $csvFieldFormatting[$source] = $info[‘csvFormatting’];
if(isset($info[‘casting’])) $fieldCasting[$source] = $info[‘casting’];

if(isset($info[‘link’]) && $info[‘link’]) {
$fieldFormatting[$source] = function($value, &$item) {
return sprintf(
Controller::join_links(singleton(‘CMSPageEditController’)->Link(‘show’), $item->ID),

$displayFields[$source] = isset($info[‘title’]) ? $info[‘title’] : $source;
return $gridField;


I Ain’t Afraid of No Ghost Referrals

If you have unrealistic traffic in your Google Analytics or you see some Referral URLs that seem a little fishy, then likely they do not belong. These websites are called Ghost Referrals and they clog up your analytics account with junk data. For a more accurate representation of your site’s realistic analytics you need to create filters in order to remove these Ghosts.

Known List of Referral Spam

Google Analytics Regular Expressions||||||||||




Additional Resources

Technical Specifications & Tasks for Creating Effective HTML Emails

  • Plan your slices and table nesting
  • Slice images and optimize for web. Photos/Textures as JPGs, Icons as transparent PNGs, flatter bitmap looking images as GIFs
  • Convert as much text as possible from PSD to HTML text. Should be greater than 85% HTML text.
  • Use inline styles instead of CSS style rules
  •  Fix the breaks from Photoshop. Small “L”‘s will appear in Dreamweaver. They need to be replaced with a space or a
    depending on how the designer intended the line to break.
  • Convert curved apostrophes and quotation marks. Do a find and replace on these. Replace with manually entered versions from the keyboard.
  • Set most td cells to vertically align to the top
  • HTML list items do not work in all email clients so they need to be done as multi-column tables.
  • On paragraphs set top, left and right margins to zero. Use only bottom margins for spacing between paragraphs. Typically paragraphs will have 15px bottom spacing and headlines will have 25px margin:0 0 15px 0 Note on margin: Top Left Bottom Right

Fix for odd horizontal blocks or image misalignment:
Tag: td
CSS: font-size:1px; line-height:0; margin:0; padding:0;
Reason: It resets the font for the cell so that the image in the cell and/or empty space( ) does not get the default font applied from web based email applications (e.g. Yahoo, Gmail,

Fix for images specifically in Yahoo
Tag: img
CSS: display:block

Email Marketing Guidelines (HTML)


  • Maximum 80 Characters
  • Most important words should appear in the first 5-7 words
  • HTML not allowed in the subject line


  • Format: HTML
  • Maximum file size: 150KB (html + images)
  • Recommended width: 500 – 700 pixels
  • Recommended height: 500 – 1000 pixels
  • Use inline-CSS only
  • All the content must reside BETWEEN <body> and </body>

o    Some email clients purge everything outside of <body> tag, including the attributes defined in <body> tag.

  • Image formats allowed: GIF or JPEG only
  • All the graphics used must be 72dpi
  • Text: Maximum 300 words


  • Background images
  • Nested background colors
  • Flash, or other plugins
  • Javascript
  • Animated GIF
  • BMP, TIFF, and any other formats besides PNG, GIF or JPEG
  • <object>, <embed>, <form>, <style>, <script> tags
  • CSS floats, CSS positioning
  • Web Fonts as HTML, use default System fonts


  • Instead of using cellpadding to create margins, use <div style=”margin:5px”>.
  • All the hex numbers for colors must start with #.
  • Defined alt attribute in all the main images.
  • Include the most important message at the top of the email.
  • Use text instead of graphic for your tagline or important message.
  • The email should make sense even without the graphics for those recipient who block images by default.
  • Avoid thick borders, spam-like words, and excessively large fonts

There really isn’t a standard for HTML email. What appears fine in one email client doesn’t look right in another. This makes it almost impossible to create a dynamic HTML email that will display well in every email client application.
The guideline provided above will help ensure your mailing will appear as intended ( or close to it ) on major email clients such as MS Outlook 2003, MS Outlook 2007, Hotmail, Live Mail, Yahoo! Mail, Gmail, and AOL.

Different email clients have different limitations and restrictions. To list a few –

  • Outlook 2007 does not support:

o    Animated GIF, background images, nested background colors

o    CSS floats, CSS positioning

  • Yahoo! Mail and Gmail:

o    Renders only the content between <body> tags