/** * handle export */ private function handleExport() { $request = Request::getInstance(); $view = ViewManager::getInstance(); $cache = Cache::getInstance(); $filename = strtolower($this->getClassName()) . ".csv"; $csvContent = ''; if (!$cache->isCached($filename)) { require_once DIF_ROOT . "utils/CsvFile.php"; // handle searchcriteria $search = new SearchManager(); $search->setUrl($this->pagerUrl); $search->setExclude($this->pagerKey); $search->setParameter('search'); $search->saveList(); $searchcriteria = $search->getSearchParameterList(); $exportlist = array(); $list = $this->getList($searchcriteria); foreach ($list['data'] as $item) { $row = array_intersect_key($item, $this->exportColumns); $row['password'] = ''; $row['role'] = $this->getRoleDesc($row['role']); $exportlist[] = $row; } $csvFile = new CsvFile(); $csvContent = join("\n", $csvFile->array2csv($exportlist)); $cache->save($csvContent, $filename); } else { $csvContent = $cache->getCache($filename); } header("Content-type: text/csv"); header("Content-Disposition: attachment; filename=\"{$filename}\""); echo $csvContent; exit; }
/** * handle record export all */ private function handleRecordExport() { $request = Request::getInstance(); $view = ViewManager::getInstance(); if (!$request->exists('tree_id')) { throw new Exception('Node ontbreekt.'); } if (!$request->exists('tag')) { throw new Exception('Tag ontbreekt.'); } $tree_id = intval($request->getValue('tree_id')); $tag = $request->getValue('tag'); $key = array('tree_id' => $tree_id, 'tag' => $tag); $cache = Cache::getInstance(); $filename = $this->plugin->getObject(Form::TYPE_SETTINGS)->getName($key) . ".csv"; $csvContent = ''; if (!$cache->isCached($filename)) { require_once DIF_ROOT . "utils/CsvFile.php"; $record = $this->plugin->getObject(Form::TYPE_RECORD); $recordItem = $this->plugin->getObject(Form::TYPE_RECORD_ITEM); // get columns and create template column list because not every record may have all the columns. $recordTemplate = array(); $columns = $recordItem->getColumns($tree_id, $tag); foreach ($columns as $column) { $recordTemplate[$column] = ''; } // retrieve all records within this tree node $recsearch = $key; $recsearch['optin'] = ''; $recordlist = array(); $records = $record->getList($recsearch); foreach ($records['data'] as $item) { $recordlist[$item['id']] = $item['createdate']; } // search for all form elements within the specified records $exportList = array(); $elemsearch = array('rcd_id' => array_keys($recordlist)); // get all items sorted by record $recordItemList = $recordItem->getItems($elemsearch); foreach ($recordItemList as $rcd_id => $recordElement) { // set values to all the columns $element = $recordTemplate; foreach ($recordElement as $recordColumn) { // columnames are forced to lowercase, do the same for this result to merge case sensitive versions of columns $element[strtolower($recordColumn['name'])] = $recordColumn['value']; } // add timestamp $element['timestamp'] = strftime('%m/%d/%Y %R', $recordlist[$rcd_id]); $exportlist[] = $element; } $csvFile = new CsvFile(); $csvContent = join("\n", $csvFile->array2csv($exportlist)); $cache->save($csvContent, $filename); } else { $csvContent = $cache->getCache($filename); } header("Content-type: text/csv"); header("Content-Disposition: attachment; filename=\"{$filename}\""); echo $csvContent; exit; }