Example #1
0
    </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">&nbsp;</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">&nbsp;</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>
Example #2
0
 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);
 }