From 071960d1963df3f218dd2a53bac25119b92ddd6d Mon Sep 17 00:00:00 2001
From: Sean Harvey
Date: Wed, 20 May 2009 06:33:26 +0000
Subject: [PATCH] API CHANGE Removed @deprecated 2.3 ReportField class and JS -
this is a relic of DataReport which is now gone
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@77382 467b73ca-7a2a-4603-9d3b-597d59a354a9
---
forms/ReportField.php | 396 --------------------------------------
javascript/ReportField.js | 13 --
2 files changed, 409 deletions(-)
delete mode 100755 forms/ReportField.php
delete mode 100755 javascript/ReportField.js
diff --git a/forms/ReportField.php b/forms/ReportField.php
deleted file mode 100755
index a36fec845..000000000
--- a/forms/ReportField.php
+++ /dev/null
@@ -1,396 +0,0 @@
- Primary Key Column", E_USER_ERROR );
- else {
- $this->tables = array_keys( $tables );
- $this->primaryKeys = $tables;
- $this->primaryClass = $this->tables[0];
- }
-
- if( !is_array( $fields ) )
- $this->fields = array( $fields );
- else
- $this->fields = $this->expandWildcards( $fields );
- }
-
-
- public function setExport($export){
- $this->export = $export;
- }
-
-
- protected function expandWildcards( $fields ) {
-
- $newFields = array();
-
- foreach( $fields as $field )
- if( preg_match( '/.*\.\*/', $field ) )
- $newFields = $newFields + $this->expandWildcard( $field );
- else
- $newFields[] = $field;
-
- return $newFields;
- }
-
-
- protected function expandWildcard( $field ) {
- list( $table, $column ) = $this->parseField( $field );
-
- foreach( $this->getColumnsInTable( $table ) as $newColumn )
- $columns[] = $table.'.'.$newColumn;
-
- return $columns;
- }
-
-
- function exportToCSV( $fileName ) {
-
- $fileData = $this->columnheaders( 'csvRow', 'csvCell' ) . $this->datacells( 'csvRow', 'csvCell' );
-
- header("Content-Type: text/csv; name=\"" . addslashes($fileName) . "\"");
- header("Content-Disposition: attachment; filename=\"" . addslashes($fileName) . "\"");
- header("Content-length: " . strlen($fileData));
-
- echo $fileData;
- exit();
- }
-
-
- function FieldHolder() {
- Requirements::javascript(SAPPHIRE_DIR . "/javascript/ReportField.js");
-
- $headerHTML = $this->columnheaders();
- $dataCellHTML = $this->datacells();
- $id = $this->id() . '_exportToCSV';
- if($this->export){
- $exportButton =<<
-HTML
-;
- }else{
- $exportButton = "";
- }
-
- // display the table of results
- $html = <<
- $exportButton
-
-
- $headerHTML
-
-
- $dataCellHTML
-
-
-
-HTML;
- return $html;
- }
-
-
- /**
- * Returns the HTML for the data cells for the current report.
- * This can be used externally via ajax as the report might be filtered per column.
- * It is also used internally to display the data cells.
- */
- public function datacells( $rowCallBack = 'htmlTableRow', $cellCallBack = 'htmlTableCell' ) {
-
- // get the primary records in the database, sorted according to the current sort
- // this will need to be corrected later on
- $primaryRecords = $this->getRecords();
-
- /*echo "ERROR:";
- Debug::show( $primaryRecords );
- die();*/
-
- $html = "";
-
- foreach( $primaryRecords as $record ) {
- $rowOutput = "";
-
- foreach( $this->fields as $field ) {
- if( $field{0} == '!' ) $field = substr( $field, 1 );
-
- list( $table, $column ) = $this->parseField( $field );
-
- if( $this->filter && !$this->filter->showColumn( $table, $column ) )
- continue;
-
-
- $rowOutput .= $this->$cellCallBack( $record[$field], $table, $column );
- }
-
- $html .= $this->$rowCallBack( $rowOutput, $table, null );
-
- }
-
- return $html;
- }
-
-
- /**
- * Returns the HTML for the headers of the columns.
- * Can also be called via ajax to reload the headers.
- */
- public function columnheaders( $rowCallBack = 'htmlTableRow', $cellCallBack = 'htmlHeaderCell' ) {
-
- foreach( $this->fields as $field ) {
- list( $table, $column ) = $this->parseField( $field );
-
- if( $this->filter && !$this->filter->showColumn( $table, $column ) )
- continue; // replace this with some code to show a 'hidden' column
-
- /*if( $column == '*' )
- foreach( $this->getColumnsInTable( $table ) as $extraColumn )
- $html .= $this->$cellCallBack( $extraColumn, $table, $extraColumn );
- else */
- $html .= $this->$cellCallBack( $column, $table, $column );
- }
-
- return $this->$rowCallBack( $html, null, null );
- }
-
-
- protected function getColumnsInTable( $table ) {
- $result = DB::query( "SELECT * FROM \"$table\" LIMIT 1" );
- return array_keys( $result->next() );
- }
-
-
- protected function parseField( $field ) {
- if( $field{0} == '!' )
- $field = substr( $field, 1 );
-
- if( strpos( $field, '.' ) !== FALSE )
- return explode( '.', $field );
- else
- return $field;
- }
-
-
- /**
- * Joins the given record together with the extra information in the other tables.
- * This is only used in a situation in which the database can't do the join and I'll
- * correct it when I figure out how to use buildSQL
- */
- protected function joinRecord( $object ) {
-
- return $object;
-
- // split the list of fields into table, column and group by table.
- /*$tableColumns = array();
-
- foreach( $this->fields as $field ) {
- list( $table, $column ) = $this->parseField( $field );
- $tableColumns[$table][] = $column;
- }
-
- $primaryKey = $this->primaryKeys[$object->class];
-
- if( !$primaryKey ) foreach( ClassInfo::ancestry( $object->class ) as $baseClass )
- $primaryKey = $this->primaryKeys[$baseClass];
-
- $primaryKeyValue = $object->$primaryKey;
-
- // get the fields from the object
- $completeRecord = $this->joinFields( $object, $tableColumn[$this->primaryClass] );
-
- foreach( $tableColumns as $className => $classFields ) {
- $joinKey = $this->primaryKeys[$className];
-
- // get the all the extra fields.
- $recordObj = DataObject::get_one( $className, "\"$className\".\"$joinKey\"='$primaryKeyValue'" );
-
- $completeRecord = $completeRecord + $this->joinFields( $recordObj, $fields );
- }
-
- return $completeRecord;*/
- }
-
-
- protected function joinFields( $object, $fields ) {
- $partialRecord = array();
- foreach( $fields as $field )
- $partialRecord[$object->class.'.'.$field] = $object->$field;
-
- return $partialRecord;
- }
-
-
- /**
- * Sort the data in the cells
- */
- public function sortdata() {
-
- }
-
-
- /**
- * Get the primary set of records for the cells. This returns a data object set.
- */
- protected function getRecords() {
-
- // $_REQUEST['showqueries'] = 1;
-
- $tableColumns = array();
- $selectFields = array();
- $joins = array( "\"{$this->primaryClass}\"" );
-
- foreach( $this->fields as $field ) {
- if( $field{0} == '!' )
- continue;
-
- list( $table, $column ) = $this->parseField( $field );
- $tableColumns[$table][] = $column;
-
- if( $column == '*' )
- $selectFields[] = "\"$table\".*";
- else
- $selectFields[] = "\"$table\".\"$column\" AS '$table.$column'";
- }
-
- foreach( array_keys( $tableColumns ) as $table ) {
- $tableKey = $this->primaryKeys[$table];
- $primaryKey = $this->primaryKeys[$this->primaryClass];
-
- if( $table != $this->primaryClass )
- $joins[] = "LEFT JOIN \"$table\" ON \"$table\".\"$tableKey\"=\"{$this->primaryClass}\".\"$primaryKey\"";
- }
-
- $query = new SQLQuery( $selectFields, $joins );
- return $query->execute();
- }
-
-
- function htmlHeaderCell( $value, $table, $column ) {
- return "" . htmlentities( $value ) . " | ";
- }
-
-
- function htmlTableCell( $value, $table, $column ) {
- return "" . htmlentities( $value ) . " | ";
- }
-
-
- function htmlTableRow( $value, $table, $column ) {
- return "" . $value . "
";
- }
-
-
- function csvCell( $value, $table, $column ) {
- return '"' . str_replace( '"', '""', $value ) . '",';
- }
-
-
- function csvRow( $value, $table, $column ) {
- return substr( $value, 0, strlen( $value ) - 1 )."\n";
- }
-}
-
-
-
-/**
- * Assisting class. Determines whether or not a column is hidden.
- * Not so helpful here, but we could overload it in other classes.
- * @deprecated 2.3 Use TableListField
- * @package forms
- * @subpackage fields-reports
- */
-class ReportField_SimpleFilter extends Object {
-
- protected $hiddenFields;
-
- function __construct( $hiddenColumns ) {
- $this->hiddenFields = $hiddenColumns;
- }
-
- function columnIsVisible( $table, $column ) {
- return !isset( $this->hiddenFields[$table.'.'.$column] );
- }
-
- function showColumn( $table, $column ) {
- unset( $this->hiddenFields[$table.'.'.$column] );
- }
-
- function hideColumn( $table, $column ) {
- $this->hiddenFields[$table.'.'.$column] = 1;
- }
-}
-
-
-
-/**
- * This class instantiates an instance of the report field and receives ajax requests
- * to the report field.
- * @deprecated 2.3 Use TableListField
- * @package forms
- * @subpackage fields-reports
- */
-class ReportField_Controller extends Controller {
-
- function exporttocsv() {
-
- if( $this->urlParams['Type'] != 'ReportField' && ClassInfo::exists( $this->urlParams['Type'].'_Controller' ) ) {
- $type = $this->urlParams['Type'].'_Controller';
- $controller = new $type();
- return $controller->exporttocsv( $this->urlParams['ID'] );
- }
-
- $pageID = $this->urlParams['ID'];
-
- if( !$pageID )
- return "ERROR:Page does not exist";
-
- $page = DataObject::get_by_id( 'SiteTree', $pageID );
-
- if( !$page )
- return "ERROR:Page does not exist";
-
- $formName = substr( $this->urlParams['OtherID'], 0, -4 );
-
- $reportField = $page->getReportField( $formName );
-
- // apply filters
-
- $fileName = $page->URLSegment . "-report.csv";
-
- $reportField->exportToCSV( $fileName );
- }
-
-
- function Link() {
- return "";
- }
-}
-
-?>
\ No newline at end of file
diff --git a/javascript/ReportField.js b/javascript/ReportField.js
deleted file mode 100755
index 76a652973..000000000
--- a/javascript/ReportField.js
+++ /dev/null
@@ -1,13 +0,0 @@
-Behaviour.register({
- 'input.ReportField_ExportToCSVButton' : {
- onclick: function() {
- var pageID = $('Form_EditForm_ID').value;
- var idParts = this.id.split('_');
- var formName = idParts[idParts.length-2];
- window.location.href = baseHref() + 'admin/ReportField/exporttocsv/' + pageID + '/ReportField/' + formName + '.csv';
- //var exportWindow = window.open( baseHref() + 'admin/ReportField/exporttocsv/' + pageID + '/ReportField/' + formName + '.csv', '_self' );
-
- return false;
- }
- }
-});
\ No newline at end of file