/**
  * return dashbord popup sorted table
  * @return json
  * @author Ruslan Ushakov
  **/
 public function get_popup_table_data()
 {
     $result = array();
     $this->load->model('alert_model');
     $this->load->model('ranking_model');
     $this->load->model('batches_model');
     $sort_by_prev = $this->input->post('sort_by');
     $sort_dir = $this->input->post('sort_dir');
     if ($sort_dir != 'desc') {
         $sort_dir = 'asc';
     }
     $allowed_sort_by = array('name', 'type', 'findable');
     if (!in_array($sort_by_prev, $allowed_sort_by)) {
         $sort_by = 'name';
     } else {
         $sort_by = $sort_by_prev;
     }
     $user_id = $this->ion_auth->get_user_id();
     if ($sort_by == 'findable') {
         if ($sort_dir == 'asc') {
             $sort_str = $sort_by . ',desc';
         } else {
             $sort_str = $sort_by . ',asc';
         }
         $findable_alerts = $this->alert_model->getAllUnserialized($user_id, $sort_str, array('type' => array('summary')));
         $other_alerts = $this->alert_model->getAllUnserialized($user_id, $sort_str, array('type' => array('out_of_stock', 'negative_review', 'pricing_report')));
         if ($sort_dir == 'asc') {
             $alerts = array_merge($findable_alerts, $other_alerts);
         } else {
             $alerts = array_merge($other_alerts, $findable_alerts);
         }
     } else {
         $alerts = $this->alert_model->getAllUnserialized($user_id, $sort_by . ',' . $sort_dir, array('type' => array('summary', 'out_of_stock', 'negative_review', 'pricing_report')));
     }
     // get keywords string
     foreach ($alerts as &$alert) {
         $options = Alert_model::extractSearchCriteria($alert->options);
         if (!empty($options['rank_term'])) {
             $terms = \MY_Model::getOptions($this->ranking_model->getKeywordsNamesByIds($options['rank_term']), 'id', 'title');
         } else {
             $terms = null;
         }
         $alert->keywords_string = empty($terms) ? '' : join(', ', $terms);
         $alert->type_option_title = array_search($alert->type, Alert_model::$types) ?: ucwords(str_replace("_", " ", $alert->type));
     }
     if ($sort_by_prev == 'brand' && $sort_dir == 'asc') {
         usort($alerts, array($this, 'sort_alerts_by_brands_asc'));
     } elseif ($sort_by_prev == 'brand' && $sort_dir == 'desc') {
         usort($alerts, array($this, 'sort_alerts_by_brands_desc'));
     } elseif ($sort_by_prev == 'keyword' && $sort_dir == 'asc') {
         usort($alerts, array($this, 'sort_alerts_by_keywords_asc'));
     } elseif ($sort_by_prev == 'keyword' && $sort_dir == 'desc') {
         usort($alerts, array($this, 'sort_alerts_by_keywords_desc'));
     }
     $result['alerts_table'] = $this->load->view('dashboard/elements/popup-alert-table', array('alerts' => $alerts), true);
     $this->output->set_content_type('application/json')->set_output(json_encode($result));
 }
Exemple #2
0
 protected function getKeywordsOptions()
 {
     if (count($this->options['rank_term'])) {
         return \MY_Model::getOptions($this->getRankingModel()->getKeywordsNamesByIds($this->options['rank_term']), 'id', 'title');
     }
     return array();
 }