<?php $debug = $paramsvalues->debug; // redirect user to home page if not Manager or higher $user = & JFactory::getUser(); if ( ! in_array($user->gid, array('23' , '24' , '25')) ) { $mainframe->redirect("index.php"); } // set database table name $table = "#__chronoforms_8"; $database = & JFactory::getDBO(); // Read records from database $sql = "SELECT cf_id, recordtime, team_array, team_size, team_cost FROM $table WHERE backup = 'false';"; $database->setQuery($sql); if ( ! $database->query() ) { $mainframe->enqueuemessage($database->getErrorMsg(), 'error'); } $rows = $database->loadObjectList(); $cf_id_array = array(); foreach ( $rows as $row ) { $team_name = substr($row->team_array, 0, strpos($row->team_array, ";")); echo $row->recordtime . " : " . $team_name . "<br />"; $cf_id_array[] = "'".$row->cf_id."'"; } ?> <input type="submit" name="submit" value="Backup" /> <!-- <input type="submit" name="submit" value="Delete" onclick="javascript:return confirm('Are you sure you want to delete these records ?')" /> --> <input type="hidden" name="user_id" value="<?php echo $user->id; ?>" /> <input type="hidden" name="cf_id_list" value="<?php echo implode(',',$cf_id_array); ?>" /> <input type="hidden" name="table" value="<?php echo $table; ?>" />This reads the new records from the table and shows a summary list with two buttons.
<?php $user = & JFactory::getUser(); // Check the user is authorised if ( ! in_array($user->gid, array('23' , '24' , '25')) ) { $mainframe->redirect("index.php"); } // Check the user is the same user as submitted the form if ( !$user->id == JRequest::getVar('user_id','', 'post', 'string', '' ) ) { $mainframe->redirect("index.php"); } // get data from the post array $table = JRequest::getVar('table','', 'post', 'string', '' ); $cf_id_list = JRequest::getVar('cf_id_list','', 'post', 'string', '' ); $submit = JRequest::getVar('submit','', 'post', 'string', '' ); // Check which submit button was used - Backup or Delete if ( $submit == 'Backup' ) { // backup the selected records to an Excel spreadsheet $table_fields = array('team_name', 'find_out', 'title', 'first_name', 'last_name', 'dob', 'address1', 'address2', 'city', 'postcode', 'phone', 'email', 'gender', 'data_prot', 'gift_aid', 'attracted', 'status'); $sql = " SELECT * FROM $table WHERE cf_id IN ($cf_id_list);"; $database->setQuery($sql); $datarows = $database->loadObjectList(); $data_array = array(); $i = 0; // this is some code to pack the data that can probably be ignored foreach ( $datarows as $row ) { $semi_1 = $semi_2 = $team_name = $find_out = ""; $semi_1 = strpos($row->team_array, ";"); $team_name = substr($row->team_array, 0, $semi_1); $semi_1++; $semi_2 = strpos($row->team_array, ";", $semi_1); $find_out = substr($row->team_array, $semi_1, $semi_2 - $semi_1); $team_array = explode( '|', $row->team_array ); foreach ( $team_array as $team_member ) { $member_array[$i] = array_combine($table_fields, explode('; ',$team_member)); $member_array[$i]['team_name'] = $team_name; $member_array[$i]['find_out'] = $find_out; $member_array[$i]['team_id'] = $row->cf_id; $member_array[$i]['recordtime'] = $row->recordtime; $member_array[$i]['team_size'] = $row->team_size; $i++; } } // write the data to the spreadsheet using the function below writeSpreadSheet($table_fields, $member_array); } elseif ( $submit == 'Delete' ){ // Delete the records from the database $sql = " DELETE FROM $table WHERE uidp IN ($uidp_list);"; $database->setQuery($sql); if (!$database->query()) { $mainframe->enqueuemessage($database->getErrorMsg(), 'error'); } else { $mainframe->enqueuemessage("Records were deleted"); } } else { // it wasn't backup or delete so redirect $mainframe->redirect("index.php"); } /** * Write the selected records to an Excel spreadsheet * This is an edited copy of the function from ChronoForms admin * * @param array $table_fields the table fields to write * @param object list $datarows the data to write */ function writeSpreadSheet($table_fields, $datarows) { include_once JPATH_BASE.DS.'administrator'.DS.'components' .DS.'com_chronocontact'.DS.'excelwriter'.DS.'Writer.php'; $xls = & new Spreadsheet_Excel_Writer(); $xls->send("Hearts+Heroes_" . date('j_n_Y') . ".xls"); $format = & $xls->addFormat(); $format->setBold(); $format->setColor("blue"); $sheet = & $xls->addWorksheet('Teams at '.date("m-d-Y")); $titcol = 0; foreach ( $table_fields as $table_field ) { $sheet->writeString(0, $titcol, $table_field, $format); $titcol ++; } $datacol = 0; $rowcount = 1; foreach ( $datarows as $datarow ) { foreach ( $table_fields as $table_field ) { $sheet->writeString($rowcount, $datacol, $datarow[$table_field], 0); $datacol ++; } $datacol = 0; $rowcount ++; } $xls->close(); exit(); } ?>This is beta code and may not work without debugging!
global $mainframe;
$database =& JFactory::getDBO();
include_once JPATH_BASE.DS.'/components/com_chronocontact/excelwriter/'."Writer.php";
//echo $_POST['formid'];
$formid = JRequest::getVar( 'formid', array(), 'post', 'array');
$database->setQuery( "SELECT name FROM #__your_table" );
$formname = $database->loadResult();
$tablename = "#__your_table";
$tables = array( $tablename );
$result = $database->getTableFields( $tables );
$table_fields = array_keys($result[$tablename]);
$database->setQuery( "SELECT * FROM ".$tablename."" );
$datarows = $database->loadObjectList();
$xls =& new Spreadsheet_Excel_Writer();
$xls->setVersion(8); // this fixes the 255 limit issue!🙂
$xls->send("ChronoForms - ".$formname." - ".date("j_n_Y").".xls");
$format =& $xls->addFormat();
$format->setBold();
$format->setColor("blue");
if (strlen($formname) > 10){$formname = substr($formname,0,10);};
$sheet =& $xls->addWorksheet($formname.' at '.date("m-d-Y"));
$sheet->setInputEncoding('utf-8');
$titcol = 0;
foreach($table_fields as $table_field){
$sheet->writeString(0, $titcol, $table_field, $format);
$titcol++;
}
$datacol = 0;
$rowcount = 1;
foreach($datarows as $datarow){
foreach($table_fields as $table_field){
$sheet->writeString($rowcount, $datacol, $datarow->$table_field, 0);
$datacol++;
}
$datacol = 0;
$rowcount++;
}
$xls->close();
exit;
<?php
global $mainframe;
$database =& JFactory::getDBO();
include_once JPATH_BASE.DS.'/components/com_chronocontact/excelwriter/'."Writer.php";
//echo $_POST['formid'];
$formid = JRequest::getVar( 'formid', array(), 'post', 'array');
$database->setQuery( "SELECT name FROM jos_chronoforms_Cadastro_Resultado" );
$formname = $database->loadResult();
$tablename = "jos_chronoforms_Cadastro_Resultado";
$tables = array( $tablename );
$result = $database->getTableFields( $tables );
$table_fields = array_keys($result[$tablename]);
$database->setQuery( "SELECT * FROM ".$tablename."" );
$datarows = $database->loadObjectList();
$xls =& new Spreadsheet_Excel_Writer();
$xls->setVersion(8); // this fixes the 255 limit issue!🙂
$xls->send("ChronoForms - ".$formname." - ".date("j_n_Y").".xls");
$format =& $xls->addFormat();
$format->setBold();
$format->setColor("blue");
if (strlen($formname) > 10){$formname = substr($formname,0,10);};
$sheet =& $xls->addWorksheet($formname.' at '.date("m-d-Y"));
$sheet->setInputEncoding('utf-8');
$titcol = 0;
foreach($table_fields as $table_field){
$sheet->writeString(0, $titcol, $table_field, $format);
$titcol++;
}
$datacol = 0;
$rowcount = 1;
foreach($datarows as $datarow){
foreach($table_fields as $table_field){
$sheet->writeString($rowcount, $datacol, $datarow->$table_field, 0);
$datacol++;
}
$datacol = 0;
$rowcount++;
}
$xls->close();
exit;
?>
enabled it <?php
global $mainframe;
$database =& JFactory::getDBO();
include_once JPATH_BASE.DS.'/components/com_chronocontact/excelwriter/'."Writer.php";
//echo $_POST['formid'];
//$formid = JRequest::getVar( 'formid', array(), 'post', 'array');
$database->setQuery( "SELECT name FROM jos_chronoforms_Cadastro_Resultado" );
$formname = "anyform";//$database->loadResult();
$tablename = "jos_chronoforms_Cadastro_Resultado";
$tables = array( $tablename );
$result = $database->getTableFields( $tables );
$table_fields = array_keys($result[$tablename]);
$database->setQuery( "SELECT * FROM ".$tablename."" );
$datarows = $database->loadObjectList();
$xls =& new Spreadsheet_Excel_Writer();
$xls->setVersion(8); // this fixes the 255 limit issue!🙂
$xls->send("ChronoForms - ".$formname." - ".date("j_n_Y").".xls");
$format =& $xls->addFormat();
$format->setBold();
$format->setColor("blue");
if (strlen($formname) > 10){$formname = substr($formname,0,10);};
$sheet =& $xls->addWorksheet($formname.' at '.date("m-d-Y"));
$sheet->setInputEncoding('utf-8');
$titcol = 0;
foreach($table_fields as $table_field){
$sheet->writeString(0, $titcol, $table_field, $format);
$titcol++;
}
$datacol = 0;
$rowcount = 1;
foreach($datarows as $datarow){
foreach($table_fields as $table_field){
$sheet->writeString($rowcount, $datacol, $datarow->$table_field, 0);
$datacol++;
}
$datacol = 0;
$rowcount++;
}
$xls->close();
exit;
?>
include_once JPATH_BASE.DS.'/components/com_chronocontact/excelwriter/'."Writer.php";to
include_once JPATH_BASE.DS.'/administrator/components/com_chronocontact/excelwriter/'."Writer.php";
2CheckOut.com Inc. (Ohio, USA) is an authorized retailer for
goods and services provided by ChronoEngine.com