예제 #1
0
 public function GetSkusByFilter_get()
 {
     set_time_limit(0);
     if (ob_get_level()) {
         ob_end_clean();
     }
     $filename = 'Filter_SKUs_' . date('Y_m_d') . '.csv';
     header('Content-Type: text/csv; charset=utf-8');
     header('Content-Disposition: attachment; filename=' . $filename . '');
     header("Content-Transfer-Encoding: binary");
     header("Content-Type: application/force-download");
     header("Content-Type: application/octet-stream");
     header("Content-Type: application/download");
     flush();
     // Get the headers out immediately to show the download dialog
     $output_csv = fopen('php://output', 'w');
     $this->load->model('assess_results');
     $this->load->model('batches_model');
     $this->load->model('filters_values');
     $this->load->model('batches_combinations');
     $this->load->model('combo_chronicle_model');
     $this->load->model('imported_data_parsed_model');
     $this->load->model('products_filters');
     $this->load->model('product_category_model');
     $this->load->model('product_uploaded_images_model');
     $action = $this->input->get('action');
     $batch_id = $this->input->get('batch_id');
     $brand_id = (int) $this->input->get('brand_id');
     // optional
     $filter_id = (int) $this->input->get('filter_id');
     $super_filter = (int) $this->input->get('super_filter');
     $category_id = (int) $this->input->get('category_id');
     // optional
     $chronicles = (array) $this->input->get('chronicles');
     $chronicle_id = (int) $this->input->get('chronicle_id');
     $unique_id = $this->input->get('unique_id');
     $current_tab = $this->input->get('current_tab');
     if (!$chronicle_id && $chronicles) {
         $chronicle_id = (int) isset($chronicles[0]) ? $chronicles[0] : 0;
     }
     $combination = $this->batches_combinations->findByAttributes(array('batch_id' => $batch_id, 'category_id' => 0, 'brand_id' => 0, 'compare_batch_id' => 0, 'super_filter_id' => 0));
     if (!$chronicle_id && isset($combination->id)) {
         $lastCombo = $this->combo_chronicle_model->findByAttributes(array('combo_id' => $combination->id), array('select' => array('column' => 'id'), 'order_by' => array('column' => 'date desc')));
         if (isset($lastCombo->id)) {
             $chronicle_id = $lastCombo->id;
         }
     }
     if (!$brand_id) {
         $brand_id = '';
     }
     if (!$category_id) {
         $category_id = 0;
     } else {
         $category_id = $this->product_category_model->getChildCategories($category_id);
     }
     $chronicle = $this->combo_chronicle_model->getComboByChronicles($chronicle_id);
     $date = $chronicle[0]->date;
     $results = array();
     $sort_array = array(array('column' => 'imported_data_id', 'order' => 'asc'));
     $results['enabled_columns'] = $enabled_columns = (array) $this->resultTableColumns();
     $full_columns_headers = AssessHelper::getFullColumnNames(AssessHelper::columns());
     $customer = $this->batches_model->getCustomerById($batch_id);
     $column_names = array('product_name' => 'Product Name', 'upc' => 'UPC', 'retailer' => 'Retailer', 'url' => 'URL');
     if ($current_tab) {
         foreach ($full_columns_headers as $key => $value) {
             if (isset($enabled_columns[$key]) && $enabled_columns[$key] === 'true') {
                 $column_names[$key] = strip_tags($value);
             }
         }
     }
     fputcsv($output_csv, array_values($column_names));
     flush();
     if ($filter_id && $this->filters_values->isFilterExists($filter_id)) {
         $per_page = 2000;
         $offset = 0;
         do {
             $res = $this->assess_results->result($chronicle_id, $batch_id, $category_id, '', array($filter_id), $offset, $per_page, 0, true, $super_filter, $brand_id, $sort_array, 'product_name', '', '', false);
             $offset += $per_page;
             $skus = $res['rows'];
             foreach ($skus as $sku_row) {
                 $sku_row_data = json_decode($sku_row->row_data);
                 $sku_row_data = AssessHelper::fixRow($sku_row, false);
                 // $sku_row_data->img_count = count($sku_row_data->parsed_attributes['attr_data']['image_urls']);
                 // $sku_row_data->new_image_urls = $this->product_uploaded_images_model->getUploadedImgs($chronicle_id,$sku_row_data->imported_data_id);
                 // $sku_row_data->new_image_count = count($sku_row_data->new_image_urls);
                 $column_values = array();
                 foreach ($column_names as $key => $value) {
                     $column_values[$key] = isset($sku_row_data->{$key}) ? $sku_row_data->{$key} : '';
                 }
                 if (!$current_tab) {
                     $column_values['retailer'] = $customer->name;
                 }
                 fputcsv($output_csv, array_values($column_values));
                 flush();
             }
         } while ($skus);
     }
     exit;
 }
예제 #2
0
 public function getTableColumns()
 {
     $retData = array("columns" => AssessHelper::getSelectableColumns(AssessHelper::columns()), "col" => $this->resultTableColumns());
     $this->output->set_content_type('application/json')->set_output(json_encode($retData));
 }