</label> </div> <div class="btn-group col-xs-12" id="group-selector" data-toggle="buttons"> <?php foreach ($groups as $id => $name):?> <label class="btn btn-primary"> <input type="radio" class="export-group" name="group" autocomplete="off" value="<?=$id?>" /> <?=$name?> </label> <?php endforeach;?> <label class="btn btn-primary"> <input type="radio" class="export-group" name="group" autocomplete="off" value="0" /> Custom </label> </div> <div class="clearfix"> </div> <div class="col-xs-12"> <input type="hidden" name="group" id="group-input" value=""/> <input type="hidden" name="csv" id="csv-input" value="" /> <button class="btn btn-success disabled" id="export-button" type="submit">Export</button> </div> <div class="clearfix"> </div> <table class="table table-striped hidden" id="columns"> <?php foreach (Columns::get_all() as $key => $name):?> <tr><td> <label class="control-label"> <input type="checkbox" data-csv="<?=Columns::get_csv($key) ? 1 : 0?>" name="columns[<?=$key?>]" /> <?=$name?> </label> </td></tr> <?php endforeach;?> </table> </form>
public function action_index() { if (!Group::current('allow_reports')) { throw new HTTP_Exception_403('Forbidden'); } $regions = DB::select('id', 'name')->from('regions')->execute()->as_array('id', 'name'); $groups = DB::select('id', 'name')->from('groups')->execute()->as_array('id', 'name'); $form = new Form(); $form->add('region', 'Region', Form::SELECT, array('' => 'Please, select region') + $regions, array('not_empty')); if (isset($_POST['group']) && isset($_POST['csv'])) { if (isset($_POST['job'])) { $query = array('_id' => array('$in' => array_keys($_POST['job']))); $region = array('name' => 'PARTIAL'); } else { if (!Arr::get($_POST, 'region')) { throw new HTTP_Exception_404('Not found'); } $region = DB::select('id', 'name')->from('regions')->where('id', '=', $_POST['region'])->execute()->current(); $query = array('region' => $region['id']); } $jobs = Database_Mongo::collection('jobs')->find($query); $columns = array(); $csv = $_POST['csv']; if ($_POST['group']) { if (Group::get($_POST['group'], 'is_admin')) { $result = DB::select('id')->from('job_columns')->execute()->as_array(NULL, 'id'); } else { $result = DB::select('column_id')->from('group_columns')->where('group_id', '=', $_POST['group'])->and_where('permissions', '>', 0)->execute()->as_array(NULL, 'column_id'); } if ($csv != 'none') { foreach ($result as $column) { if ($csv == 'all' || !($csv == 'csv' xor Columns::get_csv($column))) { $columns[$column] = Columns::get_name($column); } } } } else { foreach (Arr::get($_POST, 'columns', array()) as $column => $value) { $columns[$column] = Columns::get_name($column); } } header("Content-type: text/csv"); header('Content-disposition: filename="' . date('Ymd') . '_EXEL_' . $region['name'] . '_EOD.csv"'); $file = tmpfile(); fputcsv($file, array(0 => 'Ticket Of Work') + $columns); while ($job = $jobs->next()) { $data[0] = $job['_id']; $i = 1; foreach ($columns as $key => $value) { $data[$i++] = iconv("CP1251", 'CP1251//ignore', Columns::output(Arr::get($job['data'], $key, ''), Columns::get_type($key), true)); } fputcsv($file, $data); } rewind($file); fpassthru($file); fclose($file); die; } $view = View::factory('Jobs/Export')->bind('regions', $regions)->bind('groups', $groups); $this->response->body($view); }