'', 'url' => '', 'filename' => $filename); } fwrite($h, "\xEF\xBB\xBF"); fputcsv($h, $headers); foreach ($rows as $row) { fputcsv($h, $row); } fclose($h); return array('path' => $path, 'url' => $url, 'filename' => $filename); } public static function write_csv_bom($handle) { if (is_resource($handle)) { fwrite($handle, "\xEF\xBB\xBF"); } } public static function create_xlsx($slug, array $headers, array $rows) { $dir = AIEO_DMM::get_upload_path('samples'); $filename = sanitize_file_name($slug . '-sample.xlsx'); $path = trailingslashit($dir['path']) . $filename; $url = trailingslashit($dir['url']) . $filename; if (!class_exists('\Rooster\Admin\Export') && function_exists('rooster_admin_builders')) { rooster_admin_builders(); } $out = class_exists('\Rooster\Admin\Export') ? fopen($path, 'wb') : false; if (!$out) { return array('path' => '', 'url' => '', 'filename' => $filename); } $columns = array(); foreach (array_values($headers) as $i => $header) { $columns['c' . $i] = array('label' => (string) $header, 'type' => 'text'); } $lines = array(); foreach ($rows as $row) { $lines[] = array_combine(array_slice(array_keys($columns), 0, count((array) $row)), array_map('strval', array_slice(array_values((array) $row), 0, count($columns)))); } \Rooster\Admin\Export::write_xlsx($out, array(array('name' => 'Sample', 'columns' => $columns, 'rows' => $lines))); fclose($out); return array('path' => $path, 'url' => $url, 'filename' => $filename); } }