load->library('pagination'); include_once __DIR__ . '/../../view_models/Spreadsheet_admin_list_paginate_view_model.php'; $session = $this->get_session(); $format = $this->input->get('format', TRUE) ?? 'view'; $order_by = $this->input->get('order_by', TRUE) ?? ''; $direction = $this->input->get('direction', TRUE) ?? 'ASC'; $per_page_sort = $this->input->get('per_page_sort', TRUE) ?? 25; $this->_data['view_model'] = new Spreadsheet_admin_list_paginate_view_model( $this->spreadsheet_model, $this->pagination, '/admin/spreadsheet/0'); $this->_data['view_model']->set_heading('Spreadsheet'); $this->_data['view_model']->set_id(($this->input->get('id', TRUE) != NULL) ? $this->input->get('id', TRUE) : NULL); $this->_data['view_model']->set_name(($this->input->get('name', TRUE) != NULL) ? $this->input->get('name', TRUE) : NULL); $this->_data['view_model']->set_user_id(($this->input->get('user_id', TRUE) != NULL) ? $this->input->get('user_id', TRUE) : NULL); $this->_data['view_model']->set_status(($this->input->get('status', TRUE) != NULL) ? $this->input->get('status', TRUE) : NULL); $this->_data['view_model']->set_created_at(($this->input->get('created_at', TRUE) != NULL) ? $this->input->get('created_at', TRUE) : NULL); $where = [ 'id' => $this->_data['view_model']->get_id(), 'name' => $this->_data['view_model']->get_name(), 'user_id' => $this->_data['view_model']->get_user_id(), 'status' => $this->_data['view_model']->get_status(), 'created_at' => $this->_data['view_model']->get_created_at(), ]; $this->_data['view_model']->set_total_rows($this->spreadsheet_model->count($where)); $this->_data['view_model']->set_format_layout($this->_data['layout_clean_mode']); $this->_data['view_model']->set_per_page($per_page_sort); $this->_data['view_model']->set_order_by($order_by); $this->_data['view_model']->set_sort($direction); $this->_data['view_model']->set_sort_base_url('/admin/spreadsheet/0'); $this->_data['view_model']->set_page($page); $this->_data['view_model']->set_list($this->spreadsheet_model->get_paginated( $this->_data['view_model']->get_page(), $this->_data['view_model']->get_per_page(), $where, $order_by, $direction)); if ($format == 'csv') { header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="export.csv"'); echo $this->_data['view_model']->to_csv(); exit(); } if ($format != 'view') { return $this->output->set_content_type('application/json') ->set_status_header(200) ->set_output(json_encode($this->_data['view_model']->to_json())); } return $this->render('Admin/Spreadsheet', $this->_data); } public function add() { include_once __DIR__ . '/../../view_models/Spreadsheet_admin_add_view_model.php'; $session = $this->get_session(); $this->form_validation = $this->spreadsheet_model->set_form_validation( $this->form_validation, $this->spreadsheet_model->get_all_validation_rule()); $this->_data['view_model'] = new Spreadsheet_admin_add_view_model($this->spreadsheet_model); $this->_data['view_model']->set_heading('Spreadsheet'); if ($this->form_validation->run() === FALSE) { return $this->render('Admin/SpreadsheetAdd', $this->_data); } $name = $this->input->post('name', TRUE); $value = $this->input->post('value', TRUE); $status = $this->input->post('status', TRUE); $final_value = ""; $luckysheet_order = ""; $file_name = $_FILES['value']['name']; if($file_name != "") { $original_name = ""; $original_name = explode('.' , $file_name); if(is_array($original_name) && count($original_name) > 1) { $original_name = $original_name[0]; } $value_file = fopen($_FILES['value']['tmp_name'], "r"); if($_FILES['value']['type'] == 'text/csv') { $default_delimeter = ";"; $headers = fgetcsv($value_file, 10000, $default_delimeter); /** * Condition for checking and setting up the delimeter for the csv */ if(is_array($headers) && count($headers) <= 1) { $headers = fgetcsv($value_file, 10000, ','); if(is_array($headers) && count($headers)>1) { $default_delimeter = ","; } } if(!empty($headers) && is_array($headers)) { $temp_array[] = array(); for( $x = 0 ; $x < count($headers); $x++) { $header_array = array( 'r' => 0, 'c' => $x, 'v' => array( 'ct' => array( 'fa' => 'General', 't' => 'g' ), 'm' => $headers[$x], 'v' => $headers[$x] ) ); $temp_array[$x] = $header_array; } $ro = 1 ; //count of rows while (($data = fgetcsv($value_file, 1000,$default_delimeter)) !== FALSE) { if(!empty($data) && is_array($data)) { foreach($data as $data_key => $values) { $body_data = array( 'r' => $ro, 'c' => $data_key, 'v' => array( 'ct' => array( 'fa' => 'General', 't' => 'g' ), 'm' => $values, 'v' => $values ) ); $temp_array[] = $body_data; } } $ro++; } $luckysheet_format = array( array( 'name' => $original_name, //Worksheet name 'color' => '', //Worksheet color 'index' => '0', //Worksheet index 'status' => 1, //Worksheet active status 'order' => 0, //The order of the worksheet 'hide' => 0,//Whether worksheet hide 'row' => 100, //the number of rows in a sheet 'column' => 36, //the number of columns in a sheet 'defaultRowHeight' => 19, //Customized default row height 'defaultColWidth' => 73, //Customized default column width 'celldata' => $temp_array,//Initial the cell data 'config' => array( 'merge' => new ArrayObject(), //merged cells 'rowlen' => new ArrayObject(), //Table row height 'columnlen' => new ArrayObject(), //Table column width 'rowhidden' => new ArrayObject(), //hidden rows 'colhidden' => new ArrayObject(), //hidden columns 'borderInfo'=> new ArrayObject(), //borders 'authority' => new ArrayObject(), //Worksheet protection ), 'scrollLeft' => 0, //Left and right scroll bar position 'scrollTop' => 315, //Up and down scroll bar position 'luckysheet_select_save' => [], //selected area 'calcChain' => [],//Formula chain 'isPivotTable' => false,//Whether is pivot table 'pivotTable' => new ArrayObject(),//Pivot table settings 'filter_select' => new ArrayObject(),//Filter range 'filter' => null,//Filter configuration 'luckysheet_alternateformat_save' => array(), //Alternate colors 'luckysheet_alternateformat_save_modelCustom' => [], //Customize alternate colors 'luckysheet_conditionformat_save' => new ArrayObject(),//condition format 'frozen' => new ArrayObject(), //freeze row and column configuration 'chart' => [], //Chart configuration 'zoomRatio' => 1, // zoom ratio 'image' => [], //image 'showGridLines' => 1, //Whether to show grid lines ) ); $luckysheet_order = json_encode($luckysheet_format); } fclose($value_file); } } else { $luckysheet_format = array( array( 'name' => $name, //Worksheet name 'color' => '', //Worksheet color 'index' => '0', //Worksheet index 'status' => 1, //Worksheet active status 'order' => 0, //The order of the worksheet 'hide' => 0,//Whether worksheet hide 'row' => 100, //the number of rows in a sheet 'column' => 36, //the number of columns in a sheet 'defaultRowHeight' => 19, //Customized default row height 'defaultColWidth' => 73, //Customized default column width 'celldata' => [],//Initial the cell data 'config' => array( 'merge' => new ArrayObject(), //merged cells 'rowlen' => new ArrayObject(), //Table row height 'columnlen' => new ArrayObject(), //Table column width 'rowhidden' => new ArrayObject(), //hidden rows 'colhidden' => new ArrayObject(), //hidden columns 'borderInfo'=> new ArrayObject(), //borders 'authority' => new ArrayObject(), //Worksheet protection ), 'scrollLeft' => 0, //Left and right scroll bar position 'scrollTop' => 315, //Up and down scroll bar position 'luckysheet_select_save' => [], //selected area 'calcChain' => [],//Formula chain 'isPivotTable' => false,//Whether is pivot table 'pivotTable' => new ArrayObject(),//Pivot table settings 'filter_select' => new ArrayObject(),//Filter range 'filter' => null,//Filter configuration 'luckysheet_alternateformat_save' => array(), //Alternate colors 'luckysheet_alternateformat_save_modelCustom' => [], //Customize alternate colors 'luckysheet_conditionformat_save' => new ArrayObject(),//condition format 'frozen' => new ArrayObject(), //freeze row and column configuration 'chart' => [], //Chart configuration 'zoomRatio' => 1, // zoom ratio 'image' => [], //image 'showGridLines' => 1, //Whether to show grid lines ) ); $luckysheet_order = json_encode($luckysheet_format); } $result = $this->spreadsheet_model->create([ 'name' => $name, 'value' => $luckysheet_order, 'status' => $status, 'user_id' => $session['user_id'] ]); if ($result) { $this->success('Spreadsheet added.'); return $this->redirect('/admin/spreadsheet/0', 'refresh'); } $this->_data['error'] = 'Error'; return $this->render('Admin/SpreadsheetAdd', $this->_data); } public function edit($id) { $model = $this->spreadsheet_model->get($id); $session = $this->get_session(); if (!$model) { $this->error('Error'); return redirect('/admin/spreadsheet/0'); } include_once __DIR__ . '/../../view_models/Spreadsheet_admin_edit_view_model.php'; $this->form_validation = $this->spreadsheet_model->set_form_validation( $this->form_validation, $this->spreadsheet_model->get_all_edit_validation_rule()); $this->_data['view_model'] = new Spreadsheet_admin_edit_view_model($this->spreadsheet_model); $this->_data['view_model']->set_model($model); $this->_data['view_model']->set_heading('Spreadsheet'); if ($this->form_validation->run() === FALSE) { return $this->render('Admin/SpreadsheetEdit', $this->_data); } $name = $this->input->post('name', TRUE); $status = $this->input->post('status', TRUE); $result = $this->spreadsheet_model->edit([ 'name' => $name, 'status' => $status, ], $id); if ($result) { $this->success('Spreadsheet updated.'); return $this->redirect('/admin/spreadsheet/0', 'refresh'); } $this->_data['error'] = 'Error'; return $this->render('Admin/SpreadsheetEdit', $this->_data); } public function bulk_delete() { $bulk_items = $this->input->post('bulk_items'); foreach ($bulk_items as $key => $id) { $this->spreadsheet_model->real_delete($id); } echo 'success'; exit(); } /** * Function to return spreadsheet data only */ public function spreadsheet_data($id) { $model = $this->spreadsheet_model->get($id); $session = $this->get_session(); if (!$model) { $this->error('Error'); return redirect('/admin/spreadsheet/0'); } include_once __DIR__ . '/../../view_models/Spreadsheet_admin_edit_view_model.php'; $this->form_validation = $this->spreadsheet_model->set_form_validation( $this->form_validation, $this->spreadsheet_model->get_all_edit_validation_rule()); $this->_data['view_model'] = new Spreadsheet_admin_edit_view_model($this->spreadsheet_model); $this->_data['view_model']->set_model($model); $this->_data['view_model']->set_heading('Spreadsheet'); return $this->render('Admin/Spreadsheet_view_only', $this->_data); } /** * function to update the sheet */ public function update_sheet($id) { $model = $this->spreadsheet_model->get($id); $session = $this->get_session(); if (!$model) { $this->error('Error'); echo json_encode(['error'=> 'error']); exit(); } $data = file_get_contents("php://input",TRUE); if($data) { $result = $this->spreadsheet_model->edit([ 'value' => $data, ], $id); if ($result) { $this->success('Spreadsheet Updated Successfully.'); echo json_encode(['success'=> 'updated']); exit(); } } $this->error('Error'); echo json_encode(['error'=> 'error']); exit(); } }